Instructions: Work with your neighbors in groups.
This is a legacy TDD exercise. It considers the example
from in-class exercise #8 from the TDD legacy perspective.
Suppose we wanted to change the way iterators worked in
Java ArrayList
.
In particular, suppose we wanted to make the treatment
of ConcurrentModificationException
uniform
across the methods in all the iterators
ArrayList
.
Further suppose that we wanted to expand the treatment
to cover any modification to the ArrayList
made outside the iterator.
Let's assume (incorrectly, one hopes)
that there are no relevant test sets.
-
Koskela's first step is to identify change points.
What are change points in general, and where are they in this exercise?
-
Koskela's second step is to identify inflection points.
What are inflection points in general, and where are they in this exercise?
-
Koskela require a local test harness before
any code is changed.
Design appropriate tests for this exercise.
Should these tests pass or fail initially?
-
The next step is to test-drive the change.
What should change first: the tests, or the implementation?
How many changes should you make at once?
What's the sequence?