tdd at scale - mash badar (ubs)
DESCRIPTION
Presented at JAX London 2013 Test Driven Development is a practice generally endorsed by most people. However it is also one of the most difficult to get right. I am part of a very large project where we decided to use TDD from the very start. We encountered a number of challenges and learned a lot of lessons. We are still learning and evolving our approach to TDD. We discovered that doing TDD badly is actually worse than not doing TDD at all and that it is very important to get some basics rights otherwise you'll put yourself in a world of pain.TRANSCRIPT
TDD at Scale
Mashooq Badar@mashooq
TDD is Cool?
A Clean Slate
… it’ll be rude not to!
SYSTEM
INTEGRATION
COMPONENTUNIT
A Clean Slate: The Testing Triangle
A Clean Slate: BDD
plain text specs means we can’t get too technical!
And then we grew
… 6 teams of 7 each in two countries.
It was all going so well
… until the codebase grew.
But we were doing TDD?
Or did we?
Lets dig in …
Extremely complicated Component Tests
Aggregates that maintain their integrity
… possibly use a DDD approach
A complicated set of test of fixtures
… and the god of all tests
A DSL for your tests
Slow Builds
Little Overlap & Parallel Executions
http://www.datamation.com/news/tech-comics-dont-worry-its-just-a-geek-2.html
Anemic System Tests
Well defined level for system tests.
Inflexible code
Automated tests are Software
If you write shit software you’ll write shit tests.
Defects in production
http://lisacrispin.com/2011/11/08/using-the-agile-testing-quadrants/
Look at testing holistically
The right balance of checking and testing
Moral of the Story
TDD is difficult
… that doesn’t mean we can’t do TDD!
We write good Software:
Hence we do TDD.
Keep the objective in mind
TDD supports the team!
Holistic approach to testing
Thanks for listening.
Mashooq Badar@mashooq