Scalable TDD

One of the problems that we come across as our projects mature is that the number of tests increase and so do test suite times. It seems inevitable … something like the sun setting in the west and the CPU speed doubling every few years. The obvious problem with this inevitability is that it takes LONGER to test the entire application. Sweeping changes therefore take longer as the feedback loop increases andpairs have to begin context switching during the day … “Didit get to green yet? No …where were we?”

This introduces many other problems:

Enough with the problems … how about some solutions? We have brainstormed on lots of different possibilities and have come up with a range of fixes:

Look for more solutions and discussion on this topic in the upcoming months.

How do you solve scalability issues on your TDD projects as they evolve beyond 6 or even 12 months of development?

Jonathan Cogley isthe CEO and founder of thycotic, a .NET consulting company and ISV in Washington DC. thycotic has just released Thycotic Secret Server which is a secure web-based solution to both “Where is my Hotmail password?” and “Who has the password for our domain name?”. Secret Server isthe leader in secret management and sharing within companies and teams.

Comments

2 Responses to “Scalable TDD”

  1. Bryant Likes on November 23rd, 2005 3:27 am

    We use CCNet and have multiple build servers that execute tests for different parts of our project. There is some duplication between the them, but it does reduce the build times.

    Other than that we look for long running tests in the build report and try to optimize tests when possible, but I agree that this is a real issue that doesn’t go away.

  2. Adam Messinger on November 30th, 2005 7:51 pm

    We’ve been building some infrastructure which intends to address many of these failings. In particular we’ve built a server-side framework which integrates testing with the SCM. Developers check-in as usual, but the change is tested on a build/test farm before it is made visible to others on the team. Changes which do not meet the check-in requirements sit in a developer specific sand-box and don’t break others.

    Using this approach we find we can check in quite frequently. Most changes pass the build/test gate and are quickly promoted. Others do not and we can go back and fix them. Either way, we can continue to get new work done because we aren’t waiting for unit tests on our desktop boxes.

Leave a Reply