Workshop: Tweet"Hands-On: TDD at the System Scale"
This is a hands-on session so PLEASE BRING YOUR LAPTOP.
A hands-on tutorial teaching techniques for test-driven development at large scales, starting development with end-to-end tests at the system or system-of-systems level.
If you address integration and system testing as early as possible in a project, the system you are building is always in a deployable state andthe project can be more "agile" because new features can be put in front of users as soon as is deemed necessary.
However, many teams applying TDD leave integration and system testing until late in the project because they find it too difficult to write tests that cope with the distributed architecture and concurrent behaviour of their system.
This tutorial demonstrates how to test-drive development starting with end-to-end system-tests and avoid common pitfalls, including unreliable tests, tests that give false positives, slow-running tests and test codethat becomes difficult to maintain as the system grows.
This tutorial will answer the questions:
• Where does system testing fits in to the TDD process?
• How can I start with integration, packaging, deployment and end-to-end testing before the code to be integrated is written?
• How do I cope with distribution and concurrency when testing from outside the system?
• How do tests drive architectural decisions?
• How do tests improve the system's large-scale internal quality -- manageability, supportability, etc.?
The exercise requires a laptop with a Java (JDK 1.6) development environment. However, the techniques taught are applicable to any language and environment.