Overview of Test types & Test levels

It is possible to perform any test type at any test level. The examples provided for functional, non-functional, white-box, and change-related tests for a banking application illustrate how each type of test can be applied at different levels of testing.

Functional tests, for instance, can be performed at different test levels, such as component testing, component integration testing, system testing, system integration testing, and acceptance testing.

For example, tests can be designed to evaluate how a component should calculate compound interest at the component level, how account information captured at the user interface is passed to the business logic at the component integration level, or how account holders can apply for a line of credit on their checking accounts at the system testing level.

Similarly, non-functional tests can be applied at different test levels, such as component testing, component integration testing, system testing, system integration testing, and acceptance testing. For instance, performance tests can be designed to evaluate the number of CPU cycles required to perform a complex total interest calculation at the component testing level; portability tests can be designed to check whether the presentation layer works on all supported browsers and mobile devices at the system testing level, or usability tests can be designed to evaluate the accessibility of the banker's credit processing interface for people with disabilities at the acceptance testing level.

White-box tests, which focus on the internal structure of the software, can also be applied at different test levels. For instance, tests can be designed to achieve complete statement and decision coverage for all components that perform financial calculations at the component testing level, or tests can be designed to exercise how each screen in the browser interface passes data to the next screen and the business logic at the component integration testing level.

Finally, change-related tests can be applied at different test levels, such as component testing, component integration testing, system testing, system integration testing, and acceptance testing. For instance, automated regression tests can be built for each component and included within the continuous integration framework at the component testing level. All tests for a given workflow can be re-executed if any screen on that workflow changes at the system testing level.

Overall, it is important to run suitable test types at each level, especially the earliest level where the test type occurs, to ensure that the software meets the specified requirements and is free of defects.