Welcome to the QA section of my website!
This area is for people who are interested in other software quality topics besides just testing. These topics include standards, measurements and metrics, processes, and other software quality-related activities.
What is Quality Assurance?
Quality Assurance (QA) is the management of quality. QA is not testing, although many people commonly call testing "QA".
According to IEEE Standard 12207 for Software Life Cycle Processes:
"The Quality Assurance Process is a process for providing adequate assurance that the software products and processes in the project life cycle conform to their specified requirements and adhere to their established plans. To be unbiased, quality assurance needs to have organizational freedom and authority from persons directly responsible for developing the software product or executing the process in the project. Quality assurance may be internal or external depending on whether evidence of product or process quality is demonstrated to the management of the supplier or the acquirer. Quality assurance may make use of the results of other supporting processes, such as Verification, Validation, Joint Reviews, Audits, and Problem Resolution."
Why is the distinction important?
Okay, so the terminology police are not going to arrest you if you use "QA" instead of "QC" to name your testing efforts. The problem is that the confusion in terms can cause people missing critical pieces of the quality process. Also, since QA is the management of quality, if true QA is not being performed, then little or no management of quality is happening. As I say in my classes, "The pilot of the airliner is in the coach passing out snacks. No one is flying the plane."
Just a few examples of what QA does are:
- Define standards
- Determine compliance to standards
- Design measurements and metrics
- Determine compliance in keeping measurements and metrics
- Design processes for all aspects of the software process, including development, testing, configuration management, etc.
- Facilitate testing
- Suggest ways to improve processes
- Facilitate and implement process improvement efforts
One of the major problems with the pure QA definition is that much of the results are hard to see in the short term. QC activities can catch problems that can be seen immediately. It's the problem of when everything is working well, nobody notices.
That's why many QA groups actually perform some level of testing. This becomes a problem when a QA group does a lot of testing (50% of their work or more). I often advise QA teams to make their work as visible and valuable as possible.
Related Articles
Here are several articles that should be on interest to QA professionals:
- How Are We Doing? - Part 1
- How Are We Doing? - Part 2
- Defects are Good
- Achieving Software Quality by Using Defect Filters
- How Much is Software Quality Worth?
Related Courses
On this site, you will find the following courses helpful in building your QA skills:
QA Processes
- Software Quality Assurance Foundations
- Software Quality Assurance - A Life Cycle Approach
- Adding Value to QA and Testing Processes
- Building an Effective QA and Testing Process for Ongoing Validation
- Introduction to QA and Testing
- Improving Processes Using Root Cause Analysis
- Gathering, Documenting and Testing User Requirements
IEEE Standards for Software Engineering
- IEEE/EIA 12207-1997 for Software Life Cycle Processes
- IEEE 1012-1998 for Software Verification and Validation
- IEEE 1058-1998 for Software Project Planning and IEEE 1540-2001 for Software Risk Management
- IEEE 830-1998 Guidelines for Software Requirements Specifications
- IEEE 829-1998 for Software Test Documentation