Emphasizing defect prevention does not eliminate the need for a QA organization. Rather, the role of Quality Assurance is completely different than it is in a predominantly defect detection oriented culture. Good QA people are paranoid about ensuring the quality of the product before it reaches customers and are conscientious about their job. The role of QA should be to ensure that new features work in ways that customers expect them to and that the product as a whole is capable of meeting customer's needs.
In a culture that emphasizes defect detection, QA's actual ability to fulfill its role is significantly impacted by technical debt in the product. As technical debt accumulates, QA will spend an ever-increasing amount of time regression testing, because as new features are added, previously present features will break, and the product overall will begin to behave in unpredictable ways. Regression testing often consists of mindless sweeps through the product where each feature, button, or menu item is tested. Regression testing is not realistic because it does not represent how customers use the product; it is too low-level. Hence, real customer problems are rarely found through mindless regression testing. In addition, because the QA team is tasked with managing large numbers of defects, team members will spend an increasing amount of their time prioritizing and sorting defects, and this will detract from the time they have available for testing.
The end result of QA's spending too much time on low-level testing and being relied upon too much for defect detection is that defects in new features and serious workflow problems are going to be shipped to and found by customers. As shown in Figure 5-2, this is the most expensive scenario for fixing these problems because of the time delay between when the defect is introduced and fixed. Unfortunately, the cost of defects is a hidden cost in software organizations because defects are accepted as part of the process, so it is virtually impossible to calculate the true cost of defects, though some have tried [Rothman 2000]. However, it should be easy to agree that:
Figure 5-2. The relative cost of fixing a defect increases the greater the time between when the defect was first introduced and when it is fixed. The most expensive scenario is when a defect is found at a customer site and then requires fixing [Pressman 1992].
Because of the demands placed on the QA team in a defect detection culture, there is either a constant inability to proactively test new features and workflows, or there is a constant demand to increase the size of the QA team to deal with the load. Unfortunately, neither solution is sustainable.
In a culture that emphasizes defection prevention, QA is able to concentrate on what is important: the fitness of new features and the overall product. In this case, far fewer defects are shipped in the product to customers. The only way to enable a QA organization to focus on what is important is for developers to proactively embrace defect prevention practices.