At Groupon we utilize a ‘Pluggable Test Infrastructure’, where we express tests using high-level behaviors, and avoid precise web actions like “click”. We build tests around behaviors and outcomes. The infrastructure “plugs in” multiple test implementations at runtime for multiple uses of the product, like web, mobile, API, and International.
Given a logged in Groupon user When I choose to buy a deal Then I should be informed that my purchase was successful. That test can be exercised on the website, an iPhone, and via the Groupon API. Instead of having three separate tests, we have one that describes our behavior, and three automated flows to drive it. For web, mobile, and international web, we utilize Selenium/Web-driver. For the API, we exercise the same behaviors on the back-end via curl. All of these are driven by the same high-level, natural language specifications. One test, multiple implementations. Our presentation will detail this strategy, the benefits (product quality + developer feedback), and the occasions to use it (and not use it).