<<< Previous speaker next speaker >>>

Nat Pryce, Author of "Growing Object-Oriented Software, Guided by Tests" and developer of the jMock mock-object library.

 Nat  Pryce
After completing his PhD at Imperial College, Nat Pryce joined a dot-com just in time to ride the bust. Since then he has worked as a programmer, architect, trainer, and consultant in a variety of industries, including sports reportage, marketing communications, retail, telecoms, and finance. He has also worked on academic research projects and does occasional university teaching. An early adopter of XP, he has written or contributed to several open source libraries and tools that support TDD and was one of the founding organizers of the London XP Day conference. He also regularly presents at international conferences. Nat is based in London, UK.

Training: "Hands-On : TDD at the System Scale"

Time: Monday 09:00 - 16:00

Location: Henry Moore Room, Fourth Floor

Abstract:

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 and the 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 code that 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.