We started a project with a new client this week, and we ‘re doing the integration tests in Cucumber. If you’re not familiar with Cucumber, it consists of many long and boring-looking scenarios that you can actually test your code via a story runner:
Scenario: Uploading an image smaller than 235 x 235 Given I am logged in as a vendor When I visit the vendor page And I provide a .jpg file smaller than 235 x 235 Then I should see an error message
Being good agilists and wanting to follow the “mutual benefit” principle (every activity benefits all concerned), we tried sharing this iteration’s stories with the customer as our acceptance criteria. We waited with bated breath to be told that our 500 lines of Cucumber were too wordy or too technical…
The result? Big win for both sides! Not only did they force us to flesh out the design more thoroughly, they had the same effect on the customer. Here’s some examples (some minor, some huge) of what we caught for this iteration alone:
- The client decided they want a GUI to crop uploaded images manually, rather than auto-crop. (This one resulted in a whole new story.)
- Setting up an account with the payment vendor should (ideally) be in an IFrame, not a redirect.
- Errors in account setup should result in a redirect to the setup page, not just an error message.
- “Admin” sidebar menu appears even for regular users, it just has different entries.
- The active page should be highlighted in the sidebar.
- “I accept the terms of service” checkbox on the account upgrade page.
- Upgraded accounts are called “Pro” in the interface, not “Premium”.
Some of those would have been a pain to go back and fix later. This is definite motivation to keep up with the time investment to write the stories. We still need to get faster, but it definitely keeps things from falling through the cracks.