Skip to content

011: Testing Strategy

  • Type: Operational
  • Status: Planned
  • Date: YYYY-MM-DD
  • Author(s) / Deciders: Test engineers, software architects, and core contributors
  • Question: How are automated and manual tests organized across unit, integration, and end-to-end boundaries, and what coverage standards govern quality verification?

Context

Reliable software requires an explicit verification strategy that balances execution speed, implementation cost, and failure detection confidence. Ad-hoc testing leads to brittle integration suites, untested edge cases, and regressions. Defining testing tiers, white-box and black-box boundaries, and acceptance criteria early gives developers objective quality targets.

Test Pyramid and Tier Organization

Structure test suites across three primary tiers:

Tier Scope and Purpose Execution Target Typical Location
Unit Tests Fast, isolated verification of individual functions, modules, and classes. Sub-second per module. Co-located in source/ or tests/unit/.
Integration Tests Verification of inter-module boundaries, database queries, network protocols, or IPC interfaces. Seconds. tests/integration/.
End-to-End (E2E) / System Tests Full workflow verification from user input or CLI invocation through all runtime dependencies. Minutes. tests/e2e/.

White-Box and Black-Box Testing Boundaries

White-Box Testing

  • Scope: Internal logic, branch conditions, private methods, and error recovery paths with full visibility into the source code.
  • Application: Unit tests and algorithmic validation where exhaustive internal state exploration is necessary.

Black-Box Testing

  • Scope: External interfaces, public API endpoints, CLI argument parsing, and input/output contracts with zero reliance on internal implementation details.
  • Application: Integration, API contract, and acceptance testing ensuring stability across internal refactoring.

Requirements and Restrictions

Coverage and Verification Thresholds

  • Coverage Targets: Specify target branch and line coverage percentages (for example, 80% minimum on core business logic).
  • Flakiness Policy: Non-deterministic tests MUST NOT be merged into master or tolerated in continuous integration; flaky tests must be quarantined or rewritten immediately.
  • Regression Mandate: Every bug fix SHOULD be accompanied by an automated regression test reproducing the original defect.

Manual Exploratory Testing

  • Acceptance Criteria: Human verification protocols for user interface aesthetics, exploratory accessibility audits, and novel interaction paradigms that cannot be captured cleanly through automated asserts.
  • Traceability: Acceptance test scenarios MUST map directly to Feature Records and Requirements.

Alternatives

  • End-to-End Heavy Strategy (Ice Cream Cone): Relying primarily on top-level system tests catches high-level defects but results in slow, flaky, and expensive test runs.
  • Unit Tests Only: Fast and easy to write, but leaves inter-service communication and real-world configuration errors undetected.
  • Manual-Only Verification: Zero upfront automation cost, but creates massive regression bottlenecks and human error as the codebase expands.

Decision

Document the chosen test frameworks, directory layout under tests/, minimum coverage thresholds, and manual acceptance protocols.

Consequences

Positives

  • Clear division between fast local unit feedback and comprehensive integration validation.
  • Standardized testing conventions prevent regressions and simplify automated pull request reviews.

Negatives

  • Maintaining high test coverage requires continuous effort and disciplined mock management.