It is clear that software development cannot exist without testing. However not all those who need testing understand exactly what kind of testing will be appropriate. Let’s try to understand.
Below are some types of testing:
1) Let’s start with Goal-driven testing. In this type of testing all tests that should be done proceed from the goals. There are actually 4 goals:
- Requirements-driven testing. In this type of testing, all conducted tests are designed in such way to show that all of the requirements have been tested at least one time.
- Structure-driven testing. Conducted tests in frames of this type of testing are aimed to detect as much bugs of software’s logical structure as possible. Structure-driven testing should not replace requirements-driven one, it should supplement it.
- Statistics-driven testing. Here, tests are conducted in order to convince the user that sufficient testing was applied. After this kind of testing, customers should understand if the software is ready for use or not.
- Risk-driven testing. In this case, a sufficient number of tests is conducted to make sure that the software will be able to go through all failure scenarios.
2) There is also Phase-driven testing. There are three kinds of phase testing examined below:
- Unit testing is testing of the smallest components which form software together.
- Integration testing aimed to insure that the components play together as a whole.
- System testing deals with the integrated software working in the total system.
But who should perform all these kinds of testing?
The software developer is usually responsible for unit-level testing, developers and independent testers usually conduct integration testing together, in turn system testing is conducted sometimes by system engineers and by independent testers. It is worth noting that if the statistics-driven and requirements-driven testing do not require a deep knowledge of the software internal workings, then for conduction of risk-driven testing and structure-driven one involved specialists need to have such knowledge. Therefore, while such types of testing are conducted developers are often involved.