What is Quality?
A product is a quality product if it is defect free.
For the producer of the product, that means that the product meets all the requirements.Meeting the requirements sounds more like a CYA approach than a Quality approach.The Quality approach will also look at the customer’s perspective.Is it exactly what I need?Now that you provided me with something that meets all the requirements I gave you, I can see that there is something missing, or something there that isn’t necessary.The Quality term for that is “fit for use”.
What is Testing?
Examination by manual or automated means of a program by executing the program to verify that it satisfies specified requirements or to verify differences between expected and actual results.
When you test you do not theorize or map a model of the behavior of the system, you must actually execute it.The result is information about the system’s behavior.If you tested a perfect system you would always get the expected results.After 10 successful tests you begin to think that the system works well.After 1000 successful tests you might believe that the system works very well.The system hasn’t changed at all.What has changed is your feeling or confidence that the system works as expected.
What is the value of Testing?
The value of Testing equals the sum of all of the changes in our confidence about valuable system behaviors.That can be quite valuable.
What is the result of Testing?
The output of Testing is information about the behavior of the system.The result is NOT a Quality product.You cannot “test” Quality into a product.
Then how do you achieve Quality?
If you want to produce a defect-free product you need to find and remove any defect you find at any point in the software development process.The search for defects should take place at each step, with each “sub-product” (deliverable) that is produced:
qFunctional Requirement Spec
qTechnical Design Spec
There are Quality Control tools and techniques that are used to ensure that defects are not being introduced into the software being constructed.Some organizations have dedicated Quality Assurance staff that use these tools, in other cases the analysts, designers and developers are responsible.