Software Testing Strategies and Canonical Names

Note: This is a continuation of a previous post here:

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