Specification by Example and Acceptance Test-Driven Development
Specification by example is a powerful technique to help clarify detailed requirements. This workshop teaches you how to apply specification by example to bridge the communication gap between stakeholders and implementation teams, build quality into software from the start, design, develop and deliver systems fit for purpose.
Acceptance TDD involves writing one or more systems-level acceptance tests (or “customer tests”) for a customer-centric feature, before the solution. This brings together product management, developers, and testers at the start of each iteration to clarify and align on the iteration goals and requirements, by speaking a common, useful, and relative unambiguous language: requirements as executable tests. This is enabled with free open source technologies such as FIT and Robot, both which support creating keyword-driven table-based executable tests. Thus, acceptance TDD is primarily a method that brings together the stakeholders early on to clarify requirements through examples as executable tests. The traditional lines between requirements and tests become blurred – in a good way.
In this hands-on, skills-rich workshop, you will learn the method of specification by example and acceptance TDD, including how to approach requirements-as-tests and tests-as-requirements, the different kinds of FIT or Robot tests, how developers, product management and testers can work together from the start, and how to connect FIT or Robot tests to the underlying system.
If it is delivered as a short 1-day course, the emphasis will be on specification by example, and only discussion of mapping to executable ATDD technologies; in the 2-day version, it includes hands-on definition of executable acceptance tests.
You will leave with practical skill in doing acceptance TDD and example-driven development, and a new vision of how to do requirements, testing and development.
Methods of Education
Discussion, presentation, Q&A, workshop exercises
Anyone involved in learning, sharing or executing requirements or tests for systems development: product management, developers, testers, technical leaders.
Intermediate: This course introduces concepts and techniques that the attendee will apply during the workshop.
general involvement in systems development as a product manager, tester, or developer
Upon completion of this course, students should be able to:
- define specification by example, and acceptance TDD
- facilitate a workshop where customers, product management, testers, and developers learn to align around a common language of requirements as executable tests
- write requirements as executable tests using a keyword-based and table-based language
- apply the FIT or Robot frameworks
- explain the difference between declarative and imperative tests, and why use declarative tests
- Specification by example
- Acceptance TDD, example-driven development, and story/customer TDD
- Behavior-Driven Development
- Requirements and business rules as executable tests
- Customer tests versus programmer tests
- Table-based and keyword-based requirements/tests
- Avoiding script testing and moving to declarative tests that emphasize business rules
- Collaborative acceptance TDD development: test and requirement workshops
- Robot Framework
- Connecting Robot FW requirements/tests to the underlying system
- Table and example requirements/tests in relationship to other kinds of testing
- Variations of table-based requirements/tests
- User stories, conditions of satisfaction, and acceptance TDD
- Refactoring executable requirements
- Agile Software Development: Hands-on Practices, Principles, Agile Modeling, and TDD
- Agile TDD and Refactoring
- Agile Design and Modeling for Advanced Object Design with Patterns