Software testing is an analysis that gives us data to estimate the quality of a system. Testing a system lets us know if the system meets each of its specified requirements or not. It gives us data about the working features of the system. It also provides data about the other relevant system properties like performance, security and usability. Testing provides this data when the system is actually used, not just viewed. This why testing is so important. Especially software testing to estimate software quality. In order to learn more about quality, read my article, What is quality. View my video, Software Testing Introduction to understand what is testing and why is testing needed. Or read on
Software TestingTesting requires operation of the system on behalf of the users. The basic aim of testing is to find out if the software works or not. If the software does work, find out if each of its expected features exist in the software or not. If each feature does exist, find out if each feature works or not.
An important aim of testing is to find out if the software meets each of the stated requirements or not. It is common to have the requirements specified in detail. Testing finds if each detail of each requirement is satisfied or not. Each requirement must be correctly implemented in the software. Meaning, there should be no problems observed with respect to any requirement.
Testing commonly generates defects, which are problems for the users with any aspect of the software. These defects are reported to the software developers. The developers fix the defects and the test is repeated to confirm that the defects have gone.
Testing gives us data about the system on the relevant system quality parameters. Like completeness, correct operation, working features, performance, reliability and so on. This helps us in forming our judgment about the system quality. This is an objective judgment because the data to support it is provided by testing. The data provided by testing helps to estimate the risk if the software is provided as is to the end users. Based on this risk estimate, it can be decided whether to ship the software as is OR develop further/ fix defects before shipping the software.
In summary, testing let us know if the system and its features work, if each requirement is met fully and correctly and any defects in the system. Based on this data, the team can form a judgment about system quality and the risk in shipping the software to end users. Then, based on the risk estimate, the team can decide either to ship the software or improve it before shipping.