What is Software Testing?
Introduction to Software Testing
Software Testing is an activity in software development. It is an investigation performed against a software to provide information about the quality of the software to stakeholders.
Different people have come up with various definitions for Software Testing, but generally, the aim is:
- To ensure that the software meets the agreed requirements and design
- The application works as expected
- The application doesn’t contain serious bugs
- Meets its intended use as per user expectations
Software testing is often used in association with the terms verification and validation.
- Validation: Are we doing the right job?
- Verification: Are we doing the job right?
Verification is the checking or testing of items, including software, for conformance and consistency with an associated specification.
Validation is the process of checking that what has been specified is what the user actually wanted.
Software testing is just one kind of verification, which also uses techniques such as reviews, analysis, inspections and walk-through.
Software testing should not be confused with debugging. Debugging is the process of analyzing and locating bugs when software does not behave as expected.
Although the identification of some bugs will be obvious from playing with the software, a methodical approach to software testing is a much more thorough means of identifying bugs.
Debugging is therefore an activity which supports testing, but cannot replace testing. However, no amount of testing can be guaranteed to discover all bugs.
Types of Software Testing
Broadly speaking, Software Testing can be divided into two parts:
- Black box testing which is high level and does not take into account the internal workings of the software, i.e. the tester doesn’t need to know how each individual components interact with each other.
- White box testing which tests at very low levels, e.g. functions within a class or component integration. System Testing is an example of a Black Box Testing, and Unit Testing is an example of white box testing.
Software Testing Techniques
The main purpose of a Test Technique is to help identify defects and reduce large number of combinations. Testing everything is not possible, because there are large number of test cases that can be executed against a given application.
Software Testing and Risk
Due to limited time and resource to test a software, we have to take a Risk Based Approach to Software Testing. This means we have to see what is the likelihood of something failing and what is the impact of that failure. Once we have gathered all the information, we can prioritize which test cases to execute first.
The high priority test cases are executed first because we have to ensure that in the limited time that we have, we can get confident that the major functionalities are working before sign off and release to production.