A fundamental axiom of the Agile Manifesto is that “business people and developers must work together daily throughout the project.” The framers of the Agile Manifesto were all seasoned developers who understood how to structure these regular interactions with the client to produce software that met the clients’ requirements in the most efficient way possible, but these patterns of interaction – the descriptions of what happens in these daily collaborations – was left up to the various flavors of Agile to manage in their own unique ways. Over the years various Agile gurus tried to tried to document and describe the best practices used by the experts to manage these business and developer interactions in the most productive, efficient and productive ways possible. A variety of approaches have been developed in the Agile community including Dan North’s Behavior Driven Design (BDD), Gojko Adzic’s Specification to try and capture these best practices. ATDD synthesizes this work with the automation concepts from Ken beck’s Test Driven Development which are supported with open source tools like Gherkin and Cucumber. The course starts with a critical analysis the Agile processes with a focus on identifying the root causes of inefficiencies and the various types of problems that occur during an Agile development project. This is followed by an overview of the ATDD process and how it specifically targets the root causes of these problems. Students are then led on a detailed walkthrough of the ATDD process emphasizing its iterative nature, the development of high quality acceptance tests as a driver of collaborative work and how the four phases of the ATDD cycle – Discuss, Distill, Develop and Demo – integrate with the other practices and disciplines common to Agile development, such as TDD, model based design, and iterative development. Using a worked example and corresponding lab exercises, students work through the details of each of the phases, exploring the techniques and developing the artifacts appropriate at that point such examples with acceptance criteria and a domain specific language in the Discuss phase, executable acceptance tests in the Distill phase and derived component unit tests in the development phase. During the examples and the hands on lab exercises, the Gherkin specification language is used to create acceptance tests for automated execution. Students are taught how to use all of the language constructs and how to follow the best practices involved in writing Gherkin tests such as when and how to use scenario outlines, data tables, tags and other features. The course concludes with an examination of how the ATDD process integrates with various standard Agile process models and other current trends like microservices and devops. There is also a discussion of metrics that can be used to evaluate and improve an Agile team’s implementation of ATDD. All of the theory presented is reinforced with examples, real world case studies, hands-on exercises, and projects.
The course has no prerequisites other than a familiarity with Agile processes.
2 Days/Lecture & Lab
The course is appropriate anyone who is involved in or responsible for an Agile development project or process.