Acceptance Test-Driven Development
Summary
The major problem with requirements is misunderstanding. The people who define, implement, and test the product all have a different understanding of what needs to be done. This misunderstanding begets waste, slipped schedules, and mistrust within the organization. Moreover, big requirement stories are often decomposed into technical tasks that are not focused on the customer’s needs, leading to implementations that are unnecessarily complex to build and maintain.This course teaches the skills needed to transform uncertain requirements into small, clear and succinct stories that are focused on user needs. It also teaches how to create acceptance tests that verify their correct implementations.
Applying these skills will streamline the communication within the organization, hence decreasing rework, raising customer satisfaction, and promoting trust within the organization.
Course Objectives
This course teaches participants how to accurately transform customer requirements into product specifications. This is done in a collaborative, efficient manner that minimizes the waste associated with software development which encompasses requirements, specifications, implementation and testing. At the end of the course, the participants will:- understand the importance and characteristics of efficient team communication
- know how to take requirements and turn them into small stories
- know how to user these stories to drive development and testing
- be able to break down stories 5 different ways
- know how to evolve stories as new requirements come in
- know how these stories relate to test driven development and testing
Description
Communication is an essential skill for everyone involved in software development. Increasing communication skills in the team will have an immediate positive effect on:- the quality of the software being written
- the efficacy of the development process
- the satisfaction of the customers and the developers
In addition, iterative development processes rely on stories to define the work that needs to be done in the iteration. These stories are told from the perspective of the customer, and allow the team to focus on the customer’s needs as it implements the system. When these stories become too large it becomes much harder
- to estimate accurately
- to track the progress of the iteration accurately
- to keep the team focused on the customer needs rather than infrastructure required to implement the big story
The processes of unfolding requirements into stories is a process of discovery which allows those that engage in it to
- to understand the true nature of the requirement,
- to realistically estimate the effort needed to fulfill it
- to agree on the acceptance criteria that will determine that the effort was well spent
Existing requirement gathering practices are fraught with misunderstandings as to the true nature of the requirements. These are the result of missing or misinterpreted information. This acquisition and sharing this information may be the responsibility of the customer, or it may be that of the developer. Misunderstanding cause the development team to
- do the right thing with defects
- do the right thing the wrong way
- do the wrong thing
- miss important scenarios
- implement unneeded scenarios
All these cause considerable rework, dissatisfaction and poor return on development investment, and are usually exacerbated by long feedback cycles.
In this course we show both a process and practices to minimize these misunderstandings, enabling the team to do the right thing and to do it right.
A realistic estimate of the effort
The lack of real understanding of the requirements means that scenarios and technical considerations are overlooked. This results in bad estimates and an adverse impact on planning and organizational stress.
To be able to estimate accurately requires that all the information that is needed to make this estimate be made available. In the past that led to excruciatingly long analysis and design periods.
In this course we show how to analyze requirements correctly and just-in-time enabling accurate and quick estimates.
Agreed upon acceptance criteria
There are three classic roles in development –
- the customer – providing the requirements and domain knowledge
- the developer – fulfilling the requirements using their technical knowledge
- the tester – verifying that the system indeed does what the customer wants it to do
But what if the developer and the tester have a different understanding of what needs to be done. This will result in the system being rejected by the testers after it has been built which in turn results in rework on the developer’s end, the tester’s end, or both. The problem is that usually the acceptance criterion for the work done by the developer is not defined in advance, but concurrently or after the work is done.
In the course will show how to evolve the acceptance criteria as part of the story definition so that the chances of rework are minimized.
What does it cost?
Not much. We can achieve all of the above by simplifying the development process and without needing extra resources or expensive systems – it’s all about changing the thought process and the interactions within the team and its customers.
Course Level
IntroductoryCourse Outline
- Story overview
- How story unfolding fits into an agile process
- What is needed from the team to get it to work
- Criteria for evaluating stories
- Requirement analysis
- The different type of stories
- The purpose of examples
- The difference between stories and tests
- Story unfolding dimensions
- Scenario
- Detail
- Perspective
- Architecture
- What to do if the requirements change
- Dealing with data elements
- Deriving acceptance criteria from stories
- Stories and test driven development
Target Audience
Primary Audience: This course is for business analysts, testers, product managers, developers, and anyone else who is involved in the definition, development and quality assurance of software related products.Secondary Audience: Managers in charge of all or some aspects of the product development that would like to make their teams more effective.
Room Setup and Equipment Needed
Computers will be used to generate word documents. Classrooms require students with writing implements at tables (preferably round or square) as well as several white boards or flip-charts. A projector with screen is also needed.Prerequisites
This course is about analyzing requirements. Teaching a basic communication tool it has no requirements beside the ability to operate a word processor.