Cucumber: Enhancing Team Communication and Collaboration

The Cucumber testing tool has just reached its 1.0.0
release. JAXenter caught up with Cucumber creator Aslak
Hellesoy to find out more about the project, the forthcoming pure
Java implementation, and the next steps for the Cucumber
project.

JAXenter: Cucumber recently reached its 1.0.0
release. Can you give us an introduction to the Cucumber tool?

Aslak Hellesoy: The main goal of Cucumber is to
enhance communication and collaboration across roles in a software
team – typically stakeholders, business analysts, developers and
testers. Cucumber achieves this by allowing people to specify how
the software should work in plain English (or 40 other supported
languages).

These specifications are called “features” and Cucumber knows
how to execute them against your software system. Teams typically
do this continuously – as they are building the software.

Technically speaking, Cucumber is just a tool for running
automated tests. What makes it unique from other automated testing
tools is the plain text format, which tends to improve how a team
expresses and shares information about how the software is supposed
to work.

Cucumber can be used to specify/test/document web applications
(using additional tools like Selenium or Capybara), but there is
nothing web-centric about Cucumber itself. It can be used to test
any kind of software.

JAXenter: At the 1.0.0 announcement, you refer
to a pure Java implementation that will supersede the Cuke4Duke
project. Can you tell us anything about this project?

Aslak: I’m very excited about it! In my day job
at DRW Trading we don’t use Ruby, but we do use Java a lot. The new
Cucumber JVM project will not require JRuby or the Ruby
implementation of Cucumber at all. This will make execution a lot
faster and the installation a lot easier. Cucumber JVM will
integrate seamlessly with JUnit so that developers can run Cucumber
features from within their favourite IDE or build tool without any
special configuration.

Cucumber JVM will not only support Java, but also Clojure,
Scala, Groovy and Rhino Javascript. I’ll leave Jython support as a
nugget for someone else to implement. I’m currently writing a book
about Cucumber with Matt Wynne, so this work won’t pick up until
after we’re done with that.

JAXenter: What are the next steps for
Cucumber?

Aslak: Functionality-wise I consider Cucumber
“done”. I think it strikes a good balance between simplicity and
versatility. Adding more functionality to it would lead to its
demise.

After we’ve done with the book I’d like to improve the on-line
documentation, which is a little messy at the moment. Another
interesting ongoing activity is implementation-agnostic Cucumber
features for Cucumber itself. As Cucumber is multiplying into other
platforms than Ruby (the original implementation) this helps us
make sure implementations in various programming languages behave
the same. We’ll be using it for Cucumber JVM, and also for Cucumber
Javascript – a pure Javascript implementation that targets Node.js
and browsers.

The Cucumber ecosystem recently moved to the cucumber
organisation on Github. You can check out all of the sub projectsover
there.

Aslak Hellesøy is a senior Software Engineer at DRW Trading in London where he writes Trading software. Prior to that he was Chief Scientist in BEKK Consulting in Oslo. Aslak has contributed to several dozen open source projects in Java and Ruby and is the creator of Cucumber. He blogs at http://aslakhellesoy.com and tweets as @aslak_hellesoy.