Our developers at The Smyth Group have found BDD to be revolutionary to our process as well. In fact, we’ve standardized on this development methodology for all of our clients, regardless of the tech stack involved.
Some of our clients initially were concerned that following BDD would put their timelines at risk. However, in practice we’ve been able to consistently deliver a higher quality of code without extending project timelines. How? By clearly communicating the requirements in Given / When / Then syntax we’ve been able to eliminate the need for requirements meetings, tons of e-mailed Q&A, and needless back and forth clarification between developers and stakeholders. And by joining automated acceptance tests directly to our Given / When / Then steps, we have significantly cut down on regression bugs and at the same time provided clear direction to our developers. In fact, the BDD steps and their associated tests become the specification for the actual implementation.
To put an analogy to it, we draw the target for the developers first with failing tests. During implementation, when the failing test begins to pass, they know they’ve hit that target and they can go to the next one. That way the code written is no more and no less than what is required, and it is protected from regression from the very start.
We also add automation to this entire process, making it transparent to everyone on the team. To do this, we put our entire build and automated test process into a continuous integration pipeline. Every commit of code kicks off a build which is visible to the team. When the build fails, the team gets an e-mail, an instant message, a low-voltage shock through their keyboard (well … they *could*, but we haven’t gone that far). The idea is that everyone on the project is responsible for keeping the build green. If the build fails, fixing it is the priority. The goal is that we can ship a high-quality, stable and tested product at any time. By integrating true BDD and automated tests into our process, that has become a reality for us.
We’d be more than happy to arrange for a GoToMeeting session with you to go into detail about our BDD process, show some concrete examples of joining steps to test code, and show how a continuous integration pipeline can be setup for a project. When can we chat?