Differences between revisions 13 and 14
Deletions are marked like this. Additions are marked like this.
Line 18: Line 18:
    Potential code bases
   * [http://columba.sourceforge.net/ Columba] email client, has some unit tests but doesn't look like complete coverage, a little big and complex for an example (broken into multiple projects built with Maven).
   * [http://sourceforge.net/projects/jabref/ JabRef] bibliographic database, has some unit tests, needs some refactoring for clarity, in any event.
   * [http://xplanner.org XPlanner] might be a possibility.
   * [http://jgnash.sourceforge.net/ JGnash] is a java personal finance program, has some unit tests (JUnit 4, Java 5)
   * [http://sourceforge.net/projects/jmoney/ JMoney] is a java/Eclipse RCP personal finance program
   * [http://sourceforge.net/projects/nomadpim/ Nomad PIM], Java 5, has test suite
  * Dependencies on other systems
   * Database
   * Real-time
   * Libraries with deep dependencies
   * SMTP (outgoing mail)
   * EJBs

There's lots and lots of information on Test Driven Development (TDD) on the web. Much of it is very useful, but many people still don't get the primary point.

  • Test Driven Development is a design technique, not a testing technique.

Sure, you end up with a UnitTest suite that can be very useful for testing and provide a framework for adding tests. This is a wonderful benefit of TDD, but it's not what TTD is.

  • "That's what a ship is, you know. It's not just a keel and hull and a deck and sails. That's what a ship needs. But what a ship is... is freedom." (Captain Jack Sparrow, from Walt Disney's Pirates of the Caribbean: The Curse of the Black Pearl)

Test Driven Development is also freedom. It's the freedom to change your mind. It's the freedom to move forward without worrying that you're making a mistake. It's the freedom to concentrate on what you want rather than how to build it.

ToBeWritten:

  • The change of viewpoint required to do TDD.
  • How the tests generated by TDD are "free," coming out of design time that is necessary in any case.
  • Why I don't want to write software without TDD, ever again.
  • How to get started with TDD.
    • Greenfield development
    • Legacy development
    • Dependencies on other systems
      • Database
      • Real-time
      • Libraries with deep dependencies
      • SMTP (outgoing mail)
      • EJBs

Elsewhere:

iDIAcomputing: TestDrivenDevelopment (last edited 2014-04-25 01:38:28 by GeorgeDinwiddie)