Note: This is a continuation of a previous post here: http://www.muddlingthru.ca/types-of-software-testing
Using canonical test strategies and industry standard names helps because it:
- facilitates team communication,
- eases developer on-boarding, and
- encourages discovery and use of best practices.
Here are some canonical test names. We've drawn quotes from trusted industry sources to emphasize that these strategies and names are in wide use.
Unit Test
"... exercises the smallest piece of testable software in the application to determine whether it behaves as expected." Fowler_01
Integration Test
"... verifies the communication paths and interactions between components to detect interface defects." Fowler_02
Component Test
"... limits the scope of the exercised software to a portion of the system under test, manipulating the system through internal code interfaces and using test doubles to isolate the code under test from other components." Fowler_03
Contract Test
"... an integration contract test is a test at the boundary of an external service verifying that it meets the contract expected by a consuming service." Fowler_04
End-to-end Test
"... verifies that a system meets external requirements and achieves its goals, testing the entire system, from end to end." Fowler_05
Smoke Test
"A subset of all defined/planned test cases that cover the main functionality of a component or system, to ascertaining that the most crucial functions of a program work, but not bothering with finer details." ISTQB
Functional Test
"Testing conducted to evaluate the compliance of a component or system with functional requirements." ISTQB
Regression Test
"Testing of a previously tested component or system following modification to ensure that defects have not been introduced or have been uncovered in unchanged areas of the software, as a result of the changes made." ISTQB