In this series, we will provide a how-to-guide on applying the Cucumber Framework to lead your agile testing team down the path of automation.

Blog one of a series.

Imagine this scenario: Your agile testing team is starting to adopt Behavior-Driven Development (BDD) principles by writing Acceptance Criteria and test scripts in the Gherkin (Given-When-Then) format.

So far, there have been some successes: defect counts have gone down, developers are delivering code faster, and product owners seem to be happier as they get more of what they want.

But your agile testing team is struggling to get all functional testing done in one sprint. And, regression testing is only being used as needed, which isn’t too often.

So for this next sprint, your team is going to try using a well-known BDD, Acceptance Test Driven Development, and Agile Testing trick: create and execute your scripts in the Cucumber automation framework.

Cucumber

Getting Started With Cucumber

After attending a BDD/ATDD/Cucumber/WebDriver training course and receiving clearance from corporate security to install the needed software, your agile testing team is ready.

Your team starts by downloading and running Rails Installer, which installs Ruby and some key gems on your laptop, as well as JetBrain’s RubyMine IDE. The final two gems your team will need: Cucumber and TestGen. To install them, they type the following in Command Prompt:

gem Install cucumber

gem install testgen

Cucumber

Then, to create a project in Command Prompt, go to the RubyMineProjects directory, type the following, and let testgen create the project for you:

testgen project <project name> –pageobject-driver=watir

Cucumber

Open the Cucumber project in RubyMine and you are ready to go.

Understanding the Cucumber Structure

Here is what you will see:

  • Gemfile – The file that contains a list of all the gems (and version numbers) used in this project. Once executed, it creates a Gemfile.lock file that details each gem used and their dependencies.
  • Rakefile – Used when running the Cucumber framework. If a Cucumber Task is created in Rakefile, it will call a specific line in the cucumber.yml file. Otherwise, is will use the default entry.
  • cucumber.yml file – A list of specific commands you wish to append to the execution command. Called from Cucumber Tasks in the Rakefile.
  • features directory – Most of the code and files for your BDD project will be located here.
  • step_definitions directory – This will contain all of your step definition files.
  • env.rb – The first file cucumber executes. This makes it an ideal place to load gems and files.
  • hooks.rb – Contains the Before and After hooks. The Before hook is executed BEFORE each Scenario; the After hook is executed AFTER each Scenario. This makes them ideal locations to open and close browsers, generate error messages, and load WebDrivers.
  • pages directory – This is where all of your PageObjects are located.

Cucumber

Most Cucumber projects, regardless of the programming language, follow this structure. Understanding this structure and what each file and directory is used for is a big first step in leading your BDD and Agile Testing transformation on a path to automation.

Next: Explore Features, where most of the code and files for your BDD project will be located.

Go Further

About the Author

Matthew Eakin is the National Manual Testing Architect with Centric’s  Software Quality Assurance & Testing Practice. With over 20 years of technical, leadership and planning experience, his experience in all aspects of the SDLC, combined with development skills, has helped Matthew to be an effective Agile testing practitioner and coach. He talks extensively on Gherkin Scripting and is in high-demand as a BDD (Behavior Driven Development) and ATDD (Acceptance Test Driven Development) coach, and his workshops (Agile Testing, Gherkin Scripting, and A Manual Testers Guide to the Ruby/Cucumber Framework) have been so successful that Matthew has led the series nationally and teaches customized variations of the program at client sites. Follow Matt on Twitter.