Dimensions of Test Categorization
System testing in general, and software testing in particular, is often grouped into categories such as "unit test", "smoke test", and "regression test". How do these categories relate to one another? Some, such as "unit test" and "e2e test", are mutually exclusive, while others, like "e2e test" and "regression test" can overlap -- a test can belong to both. This distinction comes from the dimension in which the categories are defined, a concept that is rarely discussed or clarified. Below is a list of these dimensions and their respective categories. Each dimension is independent of the others.
Categorization by the granularity of the system component being tested
- Unit test: Testing small pieces of code in isolation, without dependencies
- Integration test: Testing how components work together
- E2E test: Testing the system as a whole, from the user's perspective
Categorization by "existing feature" vs "new or modified feature"
- Regression testing: Testing of existing features to ensure they still work after making any code change
- New or modified (including fixed) feature testing
Categorization by the breadth of the application features being tested
- Smoke / sanity testing: Quick test of only the most important features
- Feature / partial testing: Testing of selected features
- Comprehensive / thorough / exhaustive / full testing: Testing all features
Categorization by "how" the test is conducted
- Manual testing
- Automated testing
Categorization by the quality aspect
- Functional testing
- Performance testing
- Security testing
- Usability testing
- etc.
An example:
An e2e test may also be either a regression or a new feature test, and may also be a functional or a performance test, and may also be either manually executed or automated.
Copyright © 2016 - 2025 Lessizmo LLC