Using Behavior-Driven Development (BDD) to improve software development

Categories: Automation Testing | Behavior-driven development (BDD) | software development | Software Testing | User Stories |

Business knowledge sharing is a key aspect for every project to succeed. For teams with both QA and developer roles, there can be different areas of focus.  If communication regarding business rules isn’t handled properly, the project risks having several undesirable results such as:

  • Poor specifications, usually expressed in non-technical language.
  • Having the wrong thing implemented, if developers misunderstand requirements.
  • Having the wrong thing tested.  For example, testers could verify a software which doesn’t fit the client needs.
  • Users frustration
  • Wasted time and resources, as testers have to wait for developers to deliver.

Avoiding project risk

Behavior-driven Development (BDD), seeks to guide the software development process by minimizing the risks mentioned above in an automated way.

The development team – developers and testers – works closer to the product owner,  from planning stages, defining requirements as user stories, to creation of acceptance criteria. To write these specifications, they use an ubiquitous language, which is the source to infer automated tests.  The term “Ubiquitous Language,” refers to the practice of building a common rigorous language shared between all project participants.
 Automated tests are written as a separate project using the most preferred unit test framework. Later automated unit tests can be executed by a Continuous Integration Server on every build.  The main goal of automated unit tests is to guarantee the underlying software complies with user specifications by 100%.

 

Advantages

Using BDD as software development process brings several benefits to both the software’s stakeholders and development team.  These include:

  • Requirements and expectations are clearly defined
  • Changes in requirements are easier to trace
  • Business Knowledge is easier to share
  • Minimize costs associated with staff turnover
  • Test what users care about
  • Give your team training
  • Better changes tracking and impact analysis
  • Higher quality software
  • Effort distribution
  • Optimized time

References:

 

Leave a comment