For most organizations quality assurance and testing are the same thing. Many of these organizations mistake quality assurance for quality control. I will be discussing the need for both and how they differ. I will discuss who is responsible for each and how they fit into agile development.
Quality assurance has often been mistaken as quality control (testing). Quality control or QC consists of making sure that a product works and meets requirements. Normal QC efforts may consist of manual testing, development testing, systems and integration testing, automation testing, regression testing and many more. This process is considered the best way to identify any issues in software prior to releasing a product for consumption. A common misconception is that the QC team will catch any and all issues that may exist in a product. This is simply not the case, it’s unreasonable to expected that a single person or team will be able to catch every issue within thousands of lines of code.
True quality assurance begins at the inception of a project when asking the big questions, Who, What, When, Where, and Why. These questions lay the foundation of the quality process and determine what kind of product will be delivered. When these questions are asked and quantified, they set the success criteria and provide the ability to track and ensure that the project is delivering against the client requests/objectives. The question then becomes who should be responsible for the quality of a product? This is a simple answer, the entire project team is responsible.
Projects need both quality assurance and quality control. Quality is regularly only addressed at the testing level after development has been completed. Projects rely on testing to act as a safety net. For true quality, this is not acceptable. If quality is addressed at the inception, or during the gathering process, then true quality can be achieved more effectively. Below are a few quality steps that would not involve a quality analyst or tester, but would allow for a quality product to be delivered.
Project Managers Test by asking questions such as:
- Do we have a clearly identified scope of work?
- Do we have the right players on the project?
- Is the time allotted for the project enough?
- Do we have the product owners and sponsors needed?
Business Analysts should be asking questions like:
- Do we have requirements covering all of the scope items?
- Are all of the requirements clear and testable?
- Are there any items that the customers insist on before they will accept the project?
Development Leads should ask questions like:
- Are all of the requirements clear and do they cover the scope that has been agreed to?
- Do we have enough detail to develop everything needed?
- Are all development standards identified for the project?
- Do we have adequate reviews in place?
- Has the proper infrastructure been put in place?
All of this should be asked or completed prior to QC or testers getting involved. Once QC is involved then they should be able to concentrate on testing the requirements and the use cases identified upfront to provide the best outcome for delivery.
I’ll finish this up with a single statement: quality control is not quality assurance, but it is a valuable part of quality assurance. Everyone is responsible for quality and everyone is a tester.