Testing Terms Glossary
Standardized definitions for testing terms to establish ubiquitous language and reduce ambiguity in testing discussions
2 minute read
There are common patterns to show how much of each kind of test is generally recommended. The most used are the Test Pyramid and the Test Trophy. Both are trying to communicate the same thing: design a test suite that is fast, gives you confidence, and is not more expensive to maintain than the value it brings.
Most of the tests are integration tests and emphasize maximizing deterministic test coverage in process with the development cycle, so developers can find errors sooner. E2E & functional tests should primarily focus on happy/critical path and tests that absolutely require a browser/app.
When executing continuous delivery, test code is a first class citizen that requires as much design and maintenance as production code. Flakey tests undermine confidence and should be terminated with extreme prejudice.
| Feature | Static | Unit | Integration | Functional | Visual Regression | Contract | E2E |
|---|---|---|---|---|---|---|---|
| Deterministic | Yes | Yes | Yes | Yes | Yes | No | No |
| PR Verify, Trunk Verify | Yes | Yes | Yes | Yes | Yes | No | No |
| Break Build | Yes | Yes | Yes | Yes | Yes | No | No |
| Test Doubles | Yes | Yes | Yes | Yes | Yes | See Definition | No |
| Network Access | No | No | localhost only | localhost only | No | Yes | Yes |
| File System Access | No | No | No | No | No | No | Yes |
| Database | No | No | localhost only | localhost only | No | Yes | Yes |
“Ice cream cone testing” is the anti-pattern where the most expensive, fragile, non-deterministic tests are prioritized over faster and less expensive deterministic tests because it “feels” right.
Google Test Blog: Just Say No to More End-to-End Tests
General testing best practices are documented here. Best practices specific to test types are documented within each test type page.
Standardized definitions for testing terms to establish ubiquitous language and reduce ambiguity in testing discussions
Code analysis tools that evaluate non-running code for security vulnerabilities, complexity, and best practice violations
Get your test suite to production-ready in one week
Fast, deterministic tests that verify individual functions, methods, or components in isolation with test doubles for dependencies
Deterministic tests that verify how units interact together or with external systems using test doubles for non-deterministic dependencies
Non-deterministic tests that validate test doubles by verifying contract format against live external systems
Understanding and implementing End-to-End (E2E) testing in software development
Understanding and implementing Functional Testing in software development
Understanding and implementing Test Doubles in software testing
Active monitoring that sends requests to test critical customer workflows every minute to ensure system health and catch errors early
Comprehensive guide to test-first approaches, naming conventions, test effectiveness, and practices for building maintainable test suites