Reduce Cost and Improve Quality with Defect Prevention

What do clients expect from a Quality Assurance Engineer? A lengthy list of the defects you have found or a high-quality software product within a low production cost and time?

Defects do not add significant value to the software development process since the occurrence of the defects has become the main reason behind increases in cost and time. Therefore, the ultimate goal of a Quality Assurance Engineer is to deliver a product of the best possible quality ensuring minimized production cost and time. So what are the strategies we can introduce to our process to achieve this goal? Defect prevention is one such activity that is important but often neglected in the software delivery process as most of the QA teams focus on defect detection.

What is Defect Prevention?

Defect Prevention is a strategy that applies in the early stages of the Software Development Life Cycle to identify and remove the defects before actual testing gets started. Down the line, it helps to identify the root causes of the defects to prevent them from reoccurring.

Different organizations adhere to different Defect Prevention strategies. What makes a strategy differs from another is the set of activities take place during the process. There is a responsible party for each activity. The important fact is, not only QA Engineers are responsible for Defect Prevention, but also all the members who are involved in the development process have to take part in it.

Figure 1: Defect Prevention Stage

Why Defect Prevention is important?

  • Once QA engineers invested time on Defect Prevention in the early stages of the development process, they do not have to put more time and effort into detecting defects and tracking them in the testing stage. This directly saves time and leads to an on-time delivery of the product.
  • It is very cost effective and time saving to identify the defects and fix them in the early stages of the development process. As the code base grows, it is more difficult to fix a defect without having a negative impact that leads to rework.


“The Systems Sciences Institute at IBM has reported that the cost to fix an error found after product release was four to five times as much as one uncovered during design, and up to 100 times more than one identified in the maintenance phase”

Figure 2: Relative Costs to Fix Software Defects (Source: IBM Systems Sciences Institute)
  • Rework has a considerable impact on production cost and it has been the main reason for delays in the development process. Defect Prevention reduces the amount of rework and ensures low production cost and faster delivery.
  • Defect Prevention activities such as ‘Design Reviews’ leads to a better design by identifying bottlenecks, roadblocks, and possible performance and security failures early in the development process.
  • Introducing a Defect Prevention strategy into a development process will improve it to be more reliable and manageable. Apart from that, it leads to a cultural change that focuses on the quality rather than the quantity.

As conclusion, Defect Prevention has a direct impact on controlling the cost of the project and the quality of deliverables. Therefore introducing a Defect Prevention Strategy into your process will be a good investment as it directs to a ‘Satisfied Client’. In my next article, I will talk about the actions that QA Engineers can take to prevent defects, which are more effective and easy to implement in your software development process.

References

https://www.isixsigma.com/tools-templates/software/defect-prevention-reducing-costs-and-enhancing-quality/

Pavithra Dissanayake

Pavithra Dissanayake is an Associate Lead QA Engineer at Zone24x7

Collaborating for Quality – Pair Testing

Software Quality Assurance is evolving day by day in terms of the tools and processes. QA Engineers often adopt new processes in to the Software Development Lifecycle to improve the quality. When we think of software testing, we probably imagine a single person sitting at his/her computer executing tests. Pair Testing changes the traditional way of testing, following up with multiple advantages including Defects Prevention.

What is Pair Testing?

It is a testing approach, which involves two individuals, usually a QA Engineer and a Developer. Apart from this combination, a QA Engineer can work with another QA Engineer, Business Analyst, Product Owner, Client or with a Marketing Person. The two individuals will work at the same computer executing a list of selected test scenarios to cover a feature or an enhancement. During the Pair Testing session, both can point out the defects, raise their concerns and give their feedback on the feature or enhancement.

How to do Pair Testing?

  • Select a feature and determine the test scenarios 
    QA Engineer should select a feature that needs pair testing and should determine the important test scenarios to test it. These scenarios should consist of basic flows of the feature.
  • Decide a time frame
    Determine a time for Pair Testing that gives yourself enough room to explore the selected feature.
  • Pair with the relevant person
    Usually the person controlling the Pair Testing will be a QA Engineer and the other individual will be the developer who developed the respective feature. Apart from this combination, two QA engineers can pair to look at the feature in a different perspective.
  • Prepare the environment
    Pair Testing environment will be the development environment or a specific server set up to do Pair Testing.
  • Take notes
    Both parties should note down the defects found during Pair Testing as well as the concerns and feedback given by each other.
  • Share the status
    Share the status of your Pair Testing session with the stakeholders. This status should include the defects you have found during the testing, incomplete paths you have found and the enhancements that should be done.

Advantages of Pair Testing

  • Defects prevention
    The most important benefit of Pair Testing is defect prevention. If Pair Testing session is done in development environment or in a specific environment set up for Pair Testing, developer can fix the defects before the feature gets released to the testing environment.
  • Saves time
    Pair Testing session with a developer helps to identify the cause of defects quickly since they are familiar with the code. Re work effort and the defects tracking time will be saved as they are identified earlier.
  • Two Perspectives
    Pair testing provides the chance to look at the feature in two different perspectives. When a QA engineer combines with a Business Analyst, Product Owner, or a Client, it will generate valuable feedback on usability of the feature.
  • Build up team collaboration
    Pair testing helps to reduce the communication gaps between the team members and build up the collaboration as everyone of the team work for a common goal of producing quality software.
  • Knowledge sharing
    Pair Testing is a good way for each participant to learn from each other while providing quality output. When a new person joins the team, conducting Pair Testing will help them to get a good understanding on the product and its features.
  • Efficient exploratory testing
    While executing selected test scenarios, Pair Testing participants can spend some time on exploratory testing on the feature since working with someone from a different functional area improves the chances of discovering more defects.

As a conclusion, It’s very beneficial to implement Pair Testing within the Software Development Lifecycle as it builds quality based culture and ultimately it leads to client satisfaction.

References:

The Who, What, When, and How of Pair Testing :
https://www.stickyminds.com/article/who-what-when-and-how-pair-testing
The Many Advantages of Pair Testing :
https://www.stickyminds.com/article/many-advantages-pair-testing

Pavithra Dissanayake

Pavithra Dissanayake is an Associate Lead QA Engineer at Zone24x7