Why do we test ? What is the purpose of software testing ?

To answer the above question(s), let us look at the nature of software testing. The software testing group is a service provider. Software testers provide valuable information and insights into the state of the system. This information contributes towards reducing the ambiguity about the system. For example, when deciding whether to release a product, the decision makers would need to know the state of the product including aspects such as the conformance of the product to requirements, the usability of the product, any known risks, the product's compliance to any applicable regulations, etc. Software testing enables making objective assessments regarding the degree of conformance of the system to stated requirements and specifications. 

Testing verifies that the system meets the different requirements including, functional, performance, reliability, security, usability and so on. This verification is done to ensure that we are building the system right. In addition, testing validates that the system being developed is what the user needs. In essence, validation is performed to ensure that we are building the right system. Apart from helping make decisions, the information from software testing helps with risk management.

Software testing contributes to improving the quality of the product. You would notice that we have not mentioned anything about defects/bugs up until now. While finding defects / bugs is one of the purposes of software testing, it is not the sole purpose. It is important for software testing to verify and validate that the product meets the stated requirements / specifications. Quality improvements help the organization to reduce post release costs of support and service, while generating customer good will that could translate into greater revenue opportunities. Also, in situations where products need to ensure compliance with regulatory requirements, software testing can safeguard the organization from legal liabilities by verifying compliance.

This is the second part of the series on Software Testing, from the ground up. The previous post looked at the question -  What is Software Testing ?