Communicating Through Tests
Exploring Agile Testing as a Conversational Medium
Ward Cunningham
Charlie Poole

Summary

This workshop explores the use of tests in agile development, emphasizing the role of tests in facilitating feedback through communication: communication about requirements, communication about project design, communication about project status.

The workshop will begin with an introductory talk and a thirty minute pair presentation by the leaders followed by four " iterations." Each iteration will consist of approximately 5 minutes of planning, 30 minutes of work and 15 minutes of retrospective and 10 minutes of break.

Each iteration will introduce a new focus. Several options are available and we will poll the group beforehand to determine the contents of each iterationl. We imagine that the focus will proceed as follows but reserve the option of making changes focus should it become clear that the workshop will be so improved.

  • installing and configuring software
  • reading and learning from existing tests and code
  • constructing tests to guide development
  • organizing tests for long term value
  • exploring roles in planning, development and test

Attention will be on both unit testing and customer testing in both C# and Java. For a small homogenous small group, we can concentrate on one of these rather than doing both. However, seeing similar things done in several environments seems to be useful to many people. For both types of test, we follow the general sequence above either sequentially or in parallel. Software will be available at the workshop and we will conduct an iteration of installation if there is sufficient need and interest. For those wanting to install software in advance, a list of the software used and a set of download links will be provided.

Depending on the availability of laptops and software within the group, students may work in pairs or larger groups on tasks consistent with the focus or they may participate with a workshop leader who will attempt the same tasks in a small group using a projector. If two projectors and screens are available, we will each work with a group. Students are asked to change pairs for each iteration and are encouraged to seek out those with different skill sets from their own. As in any software project, our success depends on the level of task completion by all participants. For that reason, we will judge the success of the workshop by the number of tasks completed by the least successful students.

Scheduling - Full Day

Morning:
30 minutes Registration. Introduction of all participants if group is small. Introductions around each table for larger groups.
30 minutes Presentation on agile testing and explanation of what we hope to achieve in this workshop. (Both Ward and Charlie)
30 minutes Communicating with Tests: a pair-presentation by Ward and Charlie explaining and then demonstrating the value of tests in software development. We will use either Java or C# - or maybe both - and show two different styles of testing: unit testing with jUnit or nUnit and testing using FIT.
30 minutes Group discussion of what has been learned so far. Selection of tasks to be performed during the rest of the day.
1 hour First Iteration: Students will be given minimal instructions and asked to set up software for both styles of testing and then demonstrate that it works by running simple tests. Software will be available on cdrom as well as several USB-connected devices. If a network is available, we will use that for distribution.

Afternoon:
1 hour Second Iteration: Students will be given a programming task and asked to create the software using Test Driven Development. Students will work in pairs or larger groups using their language of choice and writing tests in one of the xUnit frameworks.
1 hour Third Iteration: Students will be given a programming task and asked to write tests using one of the versions of fit.
1 hour Fourth Iteration: Students will work on a combined programming and testing task requiring some groups to write the target software, others to create acceptance tests and still others to define the necessary fixtures to implement the acceptance tests in fit.
1 hour Summary discussion and questions.

Scheduling - Half Day

30 minutes Introduction. Presentation on agile testing and explanation of what we hope to achieve in this workshop. (Both Ward and Charlie)
30 minutes Communicating with Tests: a pair-presentation by Ward and Charlie explaining and then demonstrating the value of tests in software development. We will use either Java or C# - or maybe both - and show two different styles of testing: unit testing with jUnit or nUnit and testing using FIT.
1 hour First Iteration: Students will be given a programming task and asked to create the software using Test Driven Development. Students will work in pairs or larger groups using their language of choice and writing tests in one of the xUnit frameworks.
1 hour Second Iteration: Students will be given a programming task and asked to write tests using one of the versions of fit.
30 minutes Summary discussion and questions.

Note:

The half-day schedule assumes all software is installed in advance. We can accommodate doing the installation during the workshop if necessary by shortening the individual iterations. Half-day workshops will probably work better if a single platform and language are used.