Quality Assurance and Testing

1,715,430,778,504 USD — According to a report by Tricentis, this was The Total Amount of Losses incurred in the year 2017 due to Failures/Defects in the software industry.

When these failures/defects happen in the production scenario, fixing them becomes costlier and loss of reputation is inevitable. We are in a connected world and word spreads quickly nowadays. One Bad Feedback and loss of several customers is on the cards.

Bottomline, these bugs in the production environment can be the difference between life and death for a start-up. All the effort, money and time can go wasted resulting in accusations and recriminations for failures and worse, lawsuits.

So, the idea is to do it right the first time, every time and most importantly on time.

Any startup initiates business with a unique product or service in focus. This is usually accompanied by a tight budget and stringent timelines. In consequence, most start-ups focus primarily on achieving the target rather than achieving it with quality.

Time to market and getting consumed are pivotal. However, sacrificing quality in lieu of this has resulted in massive losses and death of great ideas in the recent history of humankind.

To create a good enough product or offer a unique service, a lot of hard work and quality consciousness is required, and funds often go dry quickly.

Often it is seen, deploying a software engineer is considered enough to get the product developed. Employing a quality engineer is considered a matter of choice. A common school of thought has been if you can build then you may very well test as well, probably better than anybody else.

But, with this idea, how often do we really succeed?

How about a solution to this problem? Have you wondered what would it be if you can achieve success quickly within budget? Is it possible, leave alone probable?

To understand these questions well and answer them right, it is essential to look at quality from an open mind.

Quality, like beauty, lies in the eyes of the beholder. A user experience often defines the quality of a product or service.

It is a key success factor that a user experiences a product or service with a similar satisfaction as the creator perceived it to be.

A totally different perspective is needed to develop something as compared to consuming something. Right from the inception, it is pivotal to understand the value a product or service will bring to the consumer. This is where a “Quality Person” comes into the picture. Envisioning what features are needed and what are the possible scenarios a consumer would be into while consuming the product or service is essential.

Now that we have established a need for a quality focus, to achieve the right balance between development and QA, the right QA processes are required. Those QA processes should not only enable building the product or service line quickly but should also lead to repeatable success.

A QA process maturity model needs to be developed. It’s a stepwise process that often encompasses the following steps:

  • Develop a Quality consciousness
  • Conduct a process gap analysis
  • Build the desired QA processes
  • Use the QA processes
  • Employ right testing practices
  • Test right
  • Measure results
  • Develop an organization-wide QA culture
  • Continuous improvement

The Process is pre-defined but demands high expertise and deep experience to get executed properly. Comprehensive reporting and analytics solutions if executed properly can even help start-ups attain 10x results. Multiple methodologies, numerous testing modules and inestimable benefits arise the need for a seasoned Quality engineer.

Developing a quality consciousness and a Quality goal early in the journey often results in early and repeatable success.

Process Design for quality

Results do not matter, we are following a process. Results will take care of themselves.

We hear these words, everywhere, all the time, irrespective of the geographies and domains So, what does this mean?

There are a few important aspects that stand out:

· There is a process and it is being followed.

· People believe in that process, irrespective of initial failures or instant success.

· There is a belief, that success will be achieved eventually.

Let us take a detailed look into this:

What is a process?

A series of steps and decisions to achieve a desired outcome, a result, or completion of a task. These steps and decision may be interdependent or independent, but always lead to a common goal.

Once an outcome or result has been envisaged, a series of best practices along with decision cycle is established that would enable an entity to achieve it, not once but every time.

Process is always independent of procedures.

It is important to note that processes should be independent of procedures.

Consider an example of software testing, a process might stress on doing structural analysis first, followed by functional testing. However, it does not define the tools to be used and procedures of using those tools.

Likewise, a process may stress upon closure of a defect or non-conformance but is independent of coding language used or defect management tool employed.

Care needs to be taken that Processes are aligned with organizational vision, mission, and goals.

Process should be followed uniformly at holistic level.

Once primary stakeholders (senior management) approves a set of processes to be followed, it should be adopted throughout the organization as a culture. There is no point in having a very solid process that nobody follows.

Care also needs to be taken that the processes chosen are not complex enough that they cannot be followed. Also, the decision and approval processes should be carefully implemented so that they do not become a bottleneck.

Initial setbacks should not become process deterrent

Once people adopt a process, they should be totally believing in it and be prepared to be patient with the results.

It is always difficult to change habits and work styles. First, one need NOT do what has been done for a long time; Second, a new way of working needs to be adopted. It is not always easy. A lot of alignment needs to be done and efficiency is usually quite low in the initial stages. However, doing same things over and over again increases the efficiency and thus improves the results.

Belief in result

No matter what challenges the journey throws at us, destination will be reached if we keep moving in the right direction.

Failures test the belief system and increase noise along the way. However, it has often been observed that eventually results are achieved with much greater efficiency. This is evident from adoption of various standards, such as CMMI, Sigma, ISO etc.

The above principals are applied to Software industry as well.

Once Quality Vision, Mission, and Goals are defined, a Quality Management System (QMS) needs to be established and followed for achieving them with great efficiencies. A QMS is a set of formalized processes, guidelines, templates, and checklists along with defined responsibilities to achieve a desired outcome.

Following the guidelines advocated by established Quality standards, such as Six Sigma, CMMI dev, ISO/IEC 12207 etc ensure a continuous repeatable success. Processes designed based on Quality standards will ensure that there are no surprises in the End to End software development.