Treating tests as code.
WHAT TO KEEP IN VERSION CONTROL
Test code Configuration Test data definitions Framework and utilities Documentation
WHERE TO KEEP TESTS
Alongside the code they test, where possible.
WHY
They then change together, and cannot be forgotten.
WHAT SEPARATING THEM CAUSES
Tests lagging behind the application.
WHAT TO REVIEW IN TEST CODE
Whether the test verifies the stated behaviour Whether it would fail if the behaviour broke Whether it is readable Whether it duplicates existing tests Whether it will be stable
WHY READABILITY MATTERS ESPECIALLY
A failing test must be understood quickly by someone who did not write it.
WHAT TO REQUIRE WITH A CHANGE
Tests covering the change.
WHAT TO ACCEPT WITHOUT THEM
Very little.
WHAT TO CHECK IN REVIEW OF THE APPLICATION
Whether existing tests were modified, and why.
WHY
Weakening a test to make a change pass is a common and quiet failure.
WHAT TO FLAG
Assertions removed or relaxed.
WHAT TO RUN BEFORE MERGING
The relevant tests, automatically.
WHAT TO BLOCK ON
Failures.