TDD at scale - Mash Badar (UBS)

Preview:

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.

Citation preview

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