posted by: Joe Osburn - 06.30.2010
Behavior driven development requires a team in constant and consistent communication, precise in purpose and goal.
Here at Internet Exposure, we've started using the agile development technique known as Behavior Driven Development (BDD). BDD is a form of Test Driven Development (TDD). BDD differs from traditional TDD in a number of ways. Primarily, it uses high-level, behavior-focused tests written in natural language (i.e. English). This allows non-programmers to participate in the development of the test cases and behavior definitions.
The oft-mentioned goal of BDD is to "Write Software That Matters."
The primary force behind this is the involvement of all project stakeholders
in deciding behavior.
Previously, for non-programmers (project managers, interactive producers, html-only designers) to participate in the development of a project, the most they could do was create a project specification document. While project specification documents are effective, they are not truly standards documents but suggestion documents. It's entirely up to the programmer to implement the project to the specifications. Sure, this can be done, but inevitably some holes are left and the programmer must translate the project specifications into the tests. (Assuming they are writing tests to begin with.) This leaves a layer of unnecessary abstraction, creates redundancy, and ultimately leaves more room for error and disconnect between the programmer and the rest of the team.
In the past, little could be done about this problem, as there was no expectation or realistic method for a non-programmer to actually be involved to avoid these types of issues.This is what BDD solves. In writing BDD behaviors, the stakeholders are accomplishing two primary objectives:
a) project specifications/documentation
b) tests for code
There is no longer a separate list of project specifications and tests to validate the behavior of the program. The project specifications are the tests: the standard can be validated against. It's the difference between saying a website should have a login and saying a website does have a login. It's proven via a pass-fail test. Additionally, the project specifications can be understood and developed by all the stakeholders in a project.
Like all agile methodologies, BDD requires a certain amount of discipline and team focus to pull off correctly. It requires a team in constant and consistent communication, precise in purpose and goal. BDD does more than require these things, it also pushes projects towards these goals. The bar is set high, but it provides handrails to help you reach the next level.
Additional Behavior Driven Development Resources: