Build tests in such a way that the number of tests impacted by any change is small.
This is achieved by minimizing overlap and dependencies between tests and ensuring changes to the test environment have no affect on our tests.
Isolate the System Under Test (SUT) and verify just one condition for each test.
Changes that affect test fixtures should be encapsulated behind test utility methods.