InfoQ

News

Behavior-Driven Development for Everyone

Posted by Craig Wickesser on Sep 22, 2008 05:00 AM

Community
Java
Topics
Collaboration ,
Agile Techniques
Tags
Java SE ,
Groovy ,
BDD
Implementing "best practices" in software development can sometimes be a little daunting up front, and often times leads developers to cut corners and just "get it done". Behavior-Driven Development (BDD) is another technique that can greatly improve the collaboration between developers, testers, management, and business participants (such as clients). It is steadily becoming adopted and recognized as a worthwhile practice to implement on software development projects.

There are several frameworks in the BDD space that enable developers to work in such a mindset. Some of those frameworks include RSpec, JBehave, JSSpec, NSpec, and others. One framework however, was designed to make BDD as easy as possible. easyb is,
a behavior driven development framework for the Java platform. By using a specification based Domain Specific Language, easyb aims to enable executable, yet readable documentation.
Recently, Rod Coffin (site down as of 9/20/2008), wrote an article titled "Behavior-driven development with easyb". Rod does a nice job of introducing BDD and specifically the easyb framework. Rod summarizes what easyb provides and how it's done by stating,
With easyb, you can write user stories, develop specifications for system components, describe UI interactions, and much more...easyb specifications are represented as Groovy scripts. Because of the nature of the Groovy language, and the leniency afforded to Groovy scripts over classes, easyb specifications are relatively free of programmer-specific syntax, placing the focus instead on communicating behaviors.
Throughout the article Rod provides samples of behaviors defined with easyb and his article is worth checking out to learn more. Rather than repeat what has already been covered, InfoQ spoke with the easyb development team to find out what's coming down the pipeline and where the project is headed.

InfoQ: What's the roadmap look like for easyb?
easyb-dev: Easyb is looking forward to a 1.0 release in the near future. It will include a multitude of reporting enhancements, including an html version of all reports. The Intellij plugin has plenty of upgraded features and makes using easyb in our favorite IDE a pleasure. Integration with Junit is also on the horizon. Whether the goal is to use easyb in conjuction with existing library of tests or just to find a way to easily introduce easyb into environments that are often hostile to new concepts, we're hoping to lower those barriers.

A few new components will most likely make their debut in the 1.0 release. Easiness, a web application for building stories and then implementing them, will help bring testing with behaviors to even the non technical among us. Why not marry up the easiest web framework (Grails) with the easiest BDD tool (easyb). Thats exactly what the new Grails plugin will allow and its expected to make at least a beta appearance around the 1.0 timeframe. One big item that is on the (post 1.0) roadmap is an eclipse plugin. The Intellij plugin is so much fun we wouldn't want to leave the other half of the IDE users out in the cold.

InfoQ: Will there be more information the easyb website about integration with Maven and Spring (maybe other frameworks)?
easyb-dev: Keep an eye on the easyb.org page as cookbooks will begin to make appearances. These will cover, with examples, a wide range of common (and even not so common) uses of easyb. Definitely to be included will be hot topics such as Spring, JUnit, and mocking.

InfoQ: Any thoughts on a port of easyb to another language (i.e. ActionScript, Python, Ruby)?
easyb-dev The Ruby community already has a fantastic product quite similar to easyb named rspec. Many of the folks on the dev team all have special places in their hearts for some of the languages you mention but they are currently no plans to bring easyb to anything other than the jvm. It seems to be a consensus among the team members that we wouldn't be allocating enough time and attention to properly bring the same great product to those platforms. We do however encourage anyone who is interested in expanding easyb to other languages to come be a part of the easyb team.

In conclusion, behavior-driven development is a technique for improving collaboration on a software development project between the technical (developers, testers, etc) and typically non-technical (management, clients, etc) participants. easyb aims to deliver a framework to ease the process for all participants and is actively being developed.

Are you using BDD on your software projects? If so, what are your thoughts on how it may have improved the success of the project? If not, why haven't you tried? If you have tried it, why didn't it "stick" for your project?

No comments

Watch Thread Reply

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.