In "test driven" approaches to development, unit testing often gets most of the attention. However, unit testing is generally most useful in discovering "errors of Commission" (more poetically, "whoops, I coded that wrong"). Unit testing is of much less help in discovering "errors of Omission" (more poetically, "whoops, I didn't think of that"). In general errors of Omission are much trickier to detect, and there is very little automated support for detecting them. We worked very closely with the development team at Sparx as they developed the "use case thread expander", and it brings a very unique and useful capability to the industry.
As you read this chapter, make sure you don't miss the discussion at the end of the chapter called "And the moral of the story is..." where we describe some actual "errors of Omission" that were caught and fixed before the release of our mapping software using these acceptance testing techniques, and how fixing these errors improved the user experience.