Steve Freeman, TweetPioneer of Agile, Chair the first London XpDay
Biography: Steve Freeman
Steve Freeman, author of Growing Object Oriented Software, Guided by Tests (Addison-Wesley), was a pioneer of Agile software development in the UK. He has developed software for a range of institutions, from small vendors to multinational investment banks. Steve trains and consults for software teams around the world. Previously, he has worked in research labs and software houses, earned a PhD (Cambridge), written shrink-wrap applications for IBM, and taught at University College London. Steve is a presenter and organiser at international industry conferences, and was chair of the first London XpDay.
Presentation: TweetFractal TDD. Using tests to drive system design
We present our experience applying Test-Driven Development (TDD) at all levels of the development process. TDD at the class level is now well understood (if not always well practiced). We find that the benefits we get from writing tests first and using them to drive design apply at the system level too. That's why we try to address integration and system testing as early as possible. The sooner the system is in a deployable state, the better equipped we are to react to changing business needs by delivering new features.
Our experience is that putting testing at the front of our development process, and paying attention to what we learn from them, flushes out architectural issues such as concurrency and distribution. The result is systems that are easier both to maintain and to support. We can also avoid some of common testing pitfalls, such as unreliability, slow execution, and brittleness.
Workshop: Hands-On: TDD at the System Scale Tweet
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.