Driving Development with Tests: ATDD and TDD
A perennial wish of testers is to participate early in the projects we test-as early as when the requirements are being developed. We also often wish for developers to do a better job unit testing their programs. Now with agile development practices, both of these wishes can come true. Development teams practicing acceptance test-driven development (ATDD) define system-level tests during requirements elicitation. These tests clarify requirements, uncover hidden assumptions, and confirm that everyone has the same understanding of what "done" means. ATDD tests become executable requirements that provide ongoing feedback about how well the emerging system meets expectations. Agile developers who also are practicing test-driven development (TDD) design methods create automated unit tests before writing component code. The result of ATDD + TDD is an automated set of system- and unit-level regression tests that execute every time the software changes. In this session, Elisabeth explains how ATDD and TDD work and demonstrates them by completely implementing a new feature in a sample application.