1. Bad Design Symptoms
    1. Rigidity
    2. Fragiliy
    3. No Reusability
  2. Safety Net is a side-effect
  3. Enabling effect
    1. Merciless Refactoring
    2. Evolutionary incremental design
  4. Mechanics
    1. Red-Green-Refactor
    2. Uncle Bob's 3 Laws
    3. NIY Test
    4. Start with the NULL/Naive test
    5. Fake it
    6. Triangulate
    7. Arrange, Act, Assert
    8. No Refactoring while RED
    9. Run ALL the tests ALL the time
    10. Test Behaviour, not Methods
    11. Prefer to use a "Fresh Fixture"
    12. Aggressive Refactoring while GREEN
  5. Good Tests
    1. Independent
    2. Isolated
    3. Fast
    4. Atomic
    5. Intention Revealing
    6. Easy to Run