This is one of our 3-course Collection on Acceptance Testing.

For business entrepreneurs and leaders, domain experts and specialists, who have an important role to play in software development, but not in the technical detail of writing code and tests. Dave Farley sharing proven approaches from real world examples of the practices, and teaches a teamwork approach which overcomes the usual communication gap between 'the business' and 'the dev team'. Learn to create better requirements that communicate business goals and ideas for new features, with your technical colleagues, leading to resilient better-designed software.

What is Acceptance Testing?

Acceptance Test Driven Development is an approach to software development that focuses on the outcome/purpose of the software, and not the technologies or implementation details. This 'outside-in' approach results in better designed software, and replaces expensive manual testing with automated tests that are resilient to changes in requirements, allowing the software to be developed faster and with fewer defects.

What's in this Course

The course starts with the question - "Why Acceptance Test?" and proceeds to explain:

  • The team roles and responsibilities of Acceptance Testing
  • Defining the Behaviour of the System
  • Event Storming - Understanding Your Problem
  • Capturing & Translating Requirements
  • Specification by Example
  • How Test First Improves Design, 
  • Properties of Good Acceptance Tests
  • What to Test, and
  • Techniques to write requirements, or "specifications" that describe WHAT we want the system to do, and not HOW it will do it.

In addition to video lessons, there is an exercise where you can put what you have learned into practice - creating specifications without technical implementation detail, and suggestions for further reading and exploration.

The course concludes by looking at the Scope of Acceptance Testing and Test Strategy.

Course Objectives

  • To understand the principles and processes of an Acceptance Test driven approach to software development
  • To learn tools and techniques to analyse problems in a way that helps to determine which product features to develop.
  • To learn team-work techniques that overcome the communications gap between 'the business' and 'the dev team'
  • To learn how to create better, more outcome-focussed requirements
  • To support the creation and maintenance of “Executable Specifications” that are not compromised by changes in the system under test.


These courses are not a progression from 'basic' to 'advanced'. They are tailored to suit the different roles involved in software development. You only need the one course that's the best fit for you.

If you want to learn more about writing Stories, Examples and Executable Specifications, then the next course in the collection - "Acceptance Testing with BDD" may be a better course for you.