There are multiple disciplines in testing, which are addressed through different test types:
Functional Tests
Verifies the deliverable of a software system. It aims for the software quality metric for functionality. The deliverable is measured as part of Blackbox testing. The testable functionality is defined within the requirement specification, use cases or functional specifications. This kind of testing is done in all test stages, while post-conditions and test-cases are defined within functional requirement specifications.
This kind of tests includes the following tests:
- Functionality Test
- Security Test
Non-Functional Tests
Verifies how software systems work. It aims for the software quality metrics efficiency, useability, reliability, portability and maintainability. This kind of testing can be done in all test stages (but is not required).
Non-Functional tests consist of:
- Performance Tests
- Load Tests
- Stress Tests
- Useability Tests
- Maintainability Tests
- Reliability Tests
- Portability Tests
Regression Tests
Regression Tests are utilized for retesting of new versions or builds of a given software or due to changes in the required infrastructure. They aim to redue side-effects through builds and identify masked failures. Regression Tests can be executed and are recommended for all test stages and are therefore recommended for automatization. The required test scope must be evaluated by the active risks of an software product. Based on the scope, the costs in time and budget can be very high, therefore a cost reduction can be achieved by:
- Prioritization of important tests (e.g. ones which are highly utilized by users)
- Abandon of certain variants in functional tests
- Limitation of certain configurations (e.g. only one language)
- Limitation of certain sub-systems of a sofware
- Limitation of certain test stages.
Re-Tests
- Re-Tests
Re-Tests are expected after resolution of each error condition. - Maintenance Tests
Maintenance Tests are recommended in the following cases:- Product modifications or enhancements (perfective maintenance)
- Environmental change (adaptive maintenance)
- Migration of data from legacy systems into new systems (conversation tests)
- Merge of systems