Excerpt taken from the Software Testing Body of Knowledge for CSTE
The “basics” of software testing are represented by the vocabulary of testing, testing approaches, methods and techniques, as well as the materials used by testers in performing their test activities.
Quality Assurance versus Quality Control
There is often confusion regarding the difference between quality control and quality assurance. Many “quality assurance” groups, in fact, practice quality control. Quality methods can be segmented into two categories: preventive methods and detective methods. This distinction serves as the mechanism to distinguish quality assurance activities from quality control activities. This discussion explains the critical difference between control and assurance, and how to recognize a Quality Control practice from a Quality Assurance practice.
Quality has two working definitions:
- Producer’s Viewpoint – The product meets the requirements.
- Customer’s Viewpoint – The product is “fit for use” or meets the customer’s needs.
There are many “products” produced from the software development process in addition to the software itself, including requirements, design documents, data models, GUI screens, and programs. To ensure that these products meet both requirements and user needs, quality assurance and quality control are both necessary.
What is QA?
Quality assurance is an activity that establishes and evaluates the processes that produce products. If there is no need for process, there is no role for quality assurance. Quality assurance is a staff function, responsible for implementing the quality plan defined through the development and continuous improvement of software development processes. Quality assurance activities in an IT environment would determine the need for, acquire, or help install:
- System development methodologies
- Estimation processes
- System maintenance processes
- Requirements definition processes
- Testing processes and standards
Once installed, quality assurance would measure these processes to identify weaknesses, and then correct those weaknesses to continually improve the process.
Quality control is the process by which product quality is compared with applicable standards and actions are taken when nonconformance is detected. Quality control is a line function, and the work is done within a process to ensure that the work product conforms to standards and requirements.
Testing is a Quality Control Activity
Quality control activities focus on identifying defects in the actual products produced. These activities begin at the start of the software development process with reviews of requirements and continue until all testing is complete.
It is possible to have quality control without quality assurance. For example, a test team may be in place to conduct system testing at the end of development, regardless of whether the organization has a quality assurance function in place.
Quality, a Closer Look
The definition of “quality” is a factor in determining the scope of software testing. Although there are multiple quality definitions in existence, it is important to note that most contain the same core components:
- Quality is based upon customer satisfaction.
- Your organization must define quality before it can be achieved.
- Management must lead the organization through any quality improvement efforts.
There are five perspectives of quality – each of which should be considered as important to the customer:
- Transcendent – I know it when I see it
- Product Based – Possesses desired features
- User Based – Fitness for use
- Development and Manufacturing Based – Conforms to requirements
- Value Based – At an acceptable cost
Peter R. Scholtes introduces the contrast between effectiveness and efficiency. Quality organizations must be both effective and efficient.
Patrick Townsend examines quality in fact and quality in perception as shown in the table below. Quality in fact is usually the supplier’s point of view, while quality in perception is the customer’s. Any difference between the former and the latter can cause problems between the two.
Quality in Fact | Quality in Perception |
Doing the right thing. | Delivering the right product. |
Doing it the right way. | Satisfying our customer’s needs. |
Doing it right the first time. | Meeting the customer’s expectations. |
Doing it on time. | Treating every customer with integrity, courtesy, and respect. |
An organization’s quality policy must define and view quality from their customer’s perspectives. If there are conflicts, they must be resolved.
What is Quality Software?
As discussed earlier, there are two important definitions of quality software:
- The producer’s view of quality software means meeting requirements.
- Customer’s/User’s view of quality software means fit for use.
These two definitions are not inconsistent. Meeting requirements is the producer’s definition of quality; it means that the producer develops software in accordance with requirements. The fit for use definition is a user’s definition of software quality; it means that the software developed by the producer meets the user’s need regardless of the software requirements.
The Two Software Quality Gaps
In most IT groups, there are two gaps as illustrated below. These gaps represent the different perspectives of software quality as seen by the producer and the customer.
The first gap is the producer gap. It is the gap between what was specified to be delivered, meaning the documented requirements and internal IT standards, and what was actually delivered. The second gap is between what the producer actually delivered compared to what the customer expected.
A significant role of software testing is helping to close the two gaps. The IT quality function must first improve the processes to the point where IT can produce the software according to requirements received and its own internal standards. The objective of the quality function closing the producer’s gap is to enable an IT function to provide consistency in what it can produce. This is referred to as the “McDonald’s effect.” This means that when you go into any McDonald’s in the world, a Big Mac should taste the same. It doesn’t mean that you as a customer like the Big Mac or that it meets your needs but rather that McDonald’s has now produced consistency in its delivered product.
To close the customer’s gap, the IT quality function must understand the true needs of the user. This can be done by the following:
- Customer surveys
- JAD (joint application development) sessions – the producer and user come together and negotiate and agree upon requirements
- More user involvement while building information products
- Implementing Agile development strategies
Continuous process improvement is necessary to close the user gap so that there is consistency in producing software and services that the user needs. Software testing professionals can participate in closing these “quality” gaps.
What is the Quality Message?
The Random House College Dictionary defines excellence as “superiority; eminence.” Excellence, then, is a measure or degree of quality. These definitions of quality and excellence are important because it is a starting point for any management team contemplating the implementation of a quality policy. They must agree on a definition of quality and the degree of excellence they want to achieve.
The common thread that runs through today’s quality improvement efforts is the focus on the customer and, more importantly, customer satisfaction. The customer is the most important person in any process. Customers may be either internal or external. The question of customer satisfaction (whether that customer is located in the next workstation, building, or country) is the essence of a quality product. Identifying customers’ needs in the areas of what, when, why, and how are an essential part of process evaluation and may be accomplished only through communication.
The internal customer is the person or group that receives the results (outputs) of any individual’s work. The outputs may include a product, a report, a directive, a communication, or a service. Customers include peers, subordinates, supervisors, and other units within the organization. To achieve quality the expectations of the customer must be known.
External customers are those using the products or services provided by the organization. Organizations need to identify and understand their customers. The challenge is to understand and exceed their expectations.
An organization must focus on both internal and external customers and be dedicated to exceeding customer expectations.