See you in October: Sincere thanks to everyone who made JAX DevOps and JAX Finance such a success! More photos and quotes to come.
Cucumber Reaches 1.0.0

Cucumber: Enhancing Team Communication and Collaboration

Jessica Thornsby

Bringing plain text to automated tests.

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 projects over there.

comments powered by Disqus