Table of contents | page # |
---|---|
Introduction | 28 |
GENERATING TESTING IDEAS | |
Define a shared big-picture view of quality | 10 |
Explore capabilities, not features | 12 |
Start with always/never | 14 |
Tap into your emotions | 16 |
Test benefit as well as implementation | 18 |
Quantify even if you cannot measure | 20 |
Map global risks using an ACC matrix | 22 |
Use risk checklists for cross-cutting concerns | 24 |
Document trust boundaries | 26 |
Monitor trends in logs and consoles | 28 |
Mob your test sessions | 30 |
Don't let the pen be the bottleneck | 32 |
Snoop on the competition | 34 |
DESIGNING GOOD CHECKS | |
Focus on key examples | 38 |
Contrast examples with counter-examples | 42 |
Describe what, not how | 44 |
Avoid mathematical formulas | 46 |
Flip equivalence classes between inputs and outputs | 48 |
Clearly separate inputs and outputs | 50 |
Ask 'what happens instead?' | 52 |
Use Given-When-Then in a strict sequence | 54 |
One test, one topic | 56 |
Treat too many boundaries as a modelling problem | 58 |
Prefer smaller tables | 60 |
Balance three competing forces | 62 |
Write assertions first | 64 |
Split technical and business checks | 66 |
Don't automate manual tests | 68 |
IMPROVING TESTABILITY | |
Wrap synchronous database tests in transactions | 72 |
Set up before asynchronous data tests, don't clean up after | 74 |
Introduce business time | 76 |
Provide atomic external resources | 78 |
Wait for events, not time | 80 |
Split data generators from tests | 82 |
Minimise UI interactions | 84 |
Separate decisions, workflows and technical interactions | 86 |
Use production metrics for expensive tests | 88 |
MANAGING LARGE TEST SUITES | |
Make developers responsible for checking | 92 |
Design tests together with other teams | 94 |
Avoid organising tests by work items | 96 |
Version control tests along with software | 98 |
Create a gallery of examples for automation patterns | 100 |
Decouple coverage from purpose | 102 |
Avoid having strict coverage targets | 104 |
Measure your tests' half-life | 106 |
Optimise for reading, not writing | 108 |
Name tests for search engine optimisation | 110 |
Explain the purpose of a test in the introduction | 112 |
Split just-in-case tests from key examples | 114 |
Let the chaos monkey out periodically | 116 |
Bibliography | 118 |
© 2014-2015 Neuri Consulting LLP