Putting the tee BACK in tee dee dee


Christian posts about the word “tests” in test driven development.  He’s absolutely right: we get hung up on the word all the time.


Around here, every time we start talking about TDD, the testers get all nervous.  “Does that mean you don’t need QA anymore? What’s my role?”


I tell them to take it easy.  They have an important role to play in a team using TDD to write code, and it’s a much more interesting role than in the non-TDD team


Without TDD, the job of testers is to find bugs.  Find every way in which the product crashes, the screen gets all messed up, the results don’t work, whatever.  Find every way to break the software.  We do this because our users tell us that they hate it when software breaks.


But our users also tell us that often the software doesn’t quite fit their needs.  That is, we’ve designed the wrong thing, even if we implemented it correctly. 


With TDD, the devs can know that the answer to “Did I write what I intended to write” is “yes”.  QA is freed from the tedious & unimaginative role of trying to break the software, and can now step up to the role of Customer Advocate.  QA can now say “the winforms designer needs to be better at roundtripping the Initialize Component code, because Elvis wants to refactor it.” or “the Dynamic Help window is useless; we should cut/enhance it before we ship,” etc.


The name TDD is pretty ingrained in our literature and language.  If we’re going to replace it, we need a good name.  Any suggestions?

Comments (6)

  1. My thoughts on TDD, especially the misuse of T:

    XP Covers TDD’s ass –http://udidahan.weblogs.us/archives/017367.html

    IMO, QA will not be freed from trying to break the software.

  2. Udi: to support some of what you wrote in your blog, it’s known that TDD is not suitable for concurrency or security concerns. I would add that it doesn’t help with "stress", which I mean to include out of memory testing.

  3. Sean Malloy says:

    Self Validated Code?

    There is no mention of Testing… Merely that the code has been validated by the code itself.

    The QAZ/Testing team can then go on and test the application to their hearts content.

  4. Sean: Best suggestion I’ve heard so far.

    Maybe I’d say "Self-Validating Code".

  5. Sean malloy says:

    Jay,

    heh, I had ‘Self Validating Code’ originally 🙂 … I thought ‘Self Validated Code’ sounded better.

    Perhaps Self Verifying Code..

    "Here is the code, run the code validations to assert everything is in order"

    "Here is the code, run the code verifications to assert everything is in order"

    and so on and so forth.

    Whatever the name, it should suggest Testing/Tested, without using those words for fear of scaring people?

    "My self Validating Code runs exactly as it should. Just look at the Validation Outputs"

    blah blah blah. Now I’m really crapping on! 😉

  6. Sean Malloy says:

    Martin Fowler made a post on his blog suggesting "Specification By Example"