When our test vocabulary is limited, then the types of tests we can rationalise about, plan and implement are similarly limited. This can be quite restrictive as it stops us from considering types of tests that might be more appropriate for a particular situation.

Martin Fowler has written a lot about testing and recently added a number of useful definitions, which I’ve summarised below.

Name Description
Component Test A test that limits the scope of the exercised software to a portion of the system under test
Broad Stack Test A test that exercises most of the parts of a large application
Subcutaneous Test A test that operates just under the user interface (UI) of an application
Integration Contract Test A test that checks that a call against your test doubles returns the same results as a call to the external service would
Business-Facing Test A test intended to be used as an aid to communicating with the non-programming members of a development team, such as customers, users and business analysts
Story Test A business-facing test used to describe and verify the software delivered as part of a user story
User Journey Test A business-facing test designed to simulate a typical user’s ‘journey’ through the system
Test Double A generic term for any case where you replace a production object for testing purposes. e.g., Stub, Mock, Fake, Dummy and Spy
Testing Term Map

Relationships between Testing Terms