Cucumber

Cucumber is an open-source ruby-based testing tool that can execute plain-text documents as automated functional tests. I've been in IT for 23-years, and this is the most exciting and encouraging testing tool I've ever seen.

In the past, I've seen companies create reams of verbose and ultimately worthless requirements documents which never quite match the delivered software. Furthermore, these verbose requirements documents, typically a clone of a poorly designed Microsoft Word template file, quickly become obsolete as the software evolves over time.

Cucumber offers a simple and elegant solution to the problem of software, and its tests, not matching the requirements. With Cucumber, you define your requirements in simple text files called features... and the feature text files are actually executed vs your software! Because they are succinct text files, reside within the source code repository of the application itself, and are executed frequently, they therefore evolve with your application and do not become obsolete. The magic is in the ruby steps files you implement, which translates your English-like phrases, called matchers, into executable ruby code that invokes your application code.

It's worth noting that Cucumber may also be used to test applications written in other languages and frameworks; not just Ruby and RoR. One I find particularly interesting is FunFX, for testing Flex RIA applications.

An irony I often see in IT is that software developers are in the business of bringing automated solutions to our business clients, yet we often fail to bring this automation to our own work. In the Gooby project, I've implemented automated cucumber-based testing of core Gooby user functionality, as well as its gem-building and installation processes. Links to the various Gooby cucumber files are shown below: