TDD Debate

I have just saw the great hangout " Is TDD dead? ". The debate was inspired by blog post.

All participants in the hangout  agreed that testing is a critical practice in software development.

The disagreement were on whether TDD is useful.

1. Why should developers start their work in a state where test fails?

2. TDD require Isolation between software modules. This might cause:

  • Bad design decisions (developers might design a system which is easy to test,  but not wrong to use)

  • Extensive mocking - complex mocking is a huge effort to develop and maintain.

3. Test must be executed in reasonable time, in order to be useful. It does not matter what is the isolation and boundaries of the test as long as it is executed in reasonable time.  Test can include file system, database of services with high latency

My favorite part of the discussion was that Kent Back mentioned in the beginning of the conversation is that every software should have input and output. TDD make sure that you give focus to this basic requirement.

To sum up, my conculsion from the discussion is that TDD is here to stay. It may not be suitable for every project, but once it is - it will give great value.

Share this article: