- Tdd Not About Testing
- Design vs. Tests
- Double Entry Bookkeeping
- Myth of 100% coverage
- Learning Form / Martial Arts
- Three Rules of TDD
- Rule 1
- Rule 2
- Rule 3
- Why these rules?
- Why you can't break these rules
- Red, Green, Refactor Cycle
- Diagram Flow (recycling-like diagram)
- Refactor code AND tests
- "What's the next most important thing..."
- Live TDD Kata
- Bowling or FizzBuzz or ???
- TDD Ping/Pong pairing demo
- What to test?
- What not to test (framework, 3rd party libs)
- Being pragmatic
- implicit vs. explicit
- deleting tests
- writing already passing tests
- TDD and Legacy Code
- Adding a test harness
- Isolating units
- Refactoring vs. Moving Shit Around
- Example from working with legacy code book (pinning? / known output? / approval tests?)
- Stubbing and Mocking
- "test double" vs. "mock"
- faking vs. stubbing vs. spying vs. mocking
- external services
- isolating the system under test
- don't mock
- goos/outside in
- example: testing network service (PyAuth)
- example: legacy (Some java crap)
- Where do I start?
- easiest: writing new code
- harder: changing existing code
- hardest: 100% coverage
- Issues with TDD in brownfield vs. greenfield
- Transformation Priority Premise
- what is TPP?
- example: slides with tpp flow
- Feels hard to test means something is wrong