Business value flows from the decision to implement a feature to the execution of that feature in a production environment. Many problems can impede that delivery. I’ll cover a few of them here and show how Behavior Driven Development (BDD) can help.
For more detail also take a look at my recent video.
A common flow of business value without BDD is shown in the diagram. The items going through this flow may be features or stories. The steps may be more inter-twined than shown in the diagram, as it represents a simplified view of the development process.
The flow of value starts with the decision to create a feature. The feature and stories are analyzed to understand the requirements. A design may be produced prior or concurrent with the coding. The executable is then passed to testers. There is a loopback caused by defects discovered during testing. The defects have to be described, discussed, prioritized, and remedied. Some defects are caused by a misunderstanding of the requirements, so there is a loopback to the analyze phase. Some production issues may be due to a misunderstanding of the requirements which causes another loopback.
Each of these loopbacks interrupts the flow. They also become increasingly costly the later the loopback is initiated. Some estimates go to 100-fold for a mismatch between a requirement and actual behavior when executing in production. To minimize the loopbacks, the triad (customer, developer, tester) use BDD in the analyze phase to create a shared understanding of the requirements. That understanding can form the basis for tests that represent the details of the requirements. The design takes into account the need to easily execute the tests. The tests are run during coding to check that the implementation passes those tests. Using BDD, the test phase is greatly reduced and typically involves tests that cannot run on the developers’ machines and exploratory testing. Deployment can use some of the tests to check that the application works before releasing for execution in the production environment. The diagram of the flow with BDD shows how the loopbacks can decrease or disappear because the process gives shared understanding through clearly defined behaviors which become the tests.
In summary BDD increases your throughput and decreases your cycle times in delivering business value.
Hear some stories I gathered from customers which describe the value gained from applying BDD in my video.