The OpenSource robotframework, Google Code "robotframework. A generic test automation framework", GitHub "robotframework" in Python - “A generic test automation framework for acceptance testing and acceptance test-driven development (ATDD). It has easy-to-use tabular test data syntax and utilizes the keyword-driven testing approach. Its testing capabilities can be extended by test libraries implemented either with Python or Java, and users can create new keywords from existing ones using the same syntax that is used for creating test cases”.

GitHub "Thucydides BDD Reporting Library" - “Thucydides is a tool that lets you use WebDriver-based unit or BDD tests to write more flexible and more reusable WebDriver-based tests, and also to generate documentation about your acceptance tests, including a narrative description of test, along with the corresponding screen shots, and also high-level summaries and aggregations of the test r… ”.

“PyHamcrest” can´t be updated by well-known automatic installation processes, on Python 2.7 even after a proper installation of the Python package “behave”. An installation attempt by “easy_install pyhamcrest” is aborted due to syntax errors in downloaded Python files and other faults . Is “PyHamcrest” just for Python 3.x or also still for Python 2.x ?!

The OpenSource Github "heynemann / pyccuracy" - “A Behaviour-Driven-Development-style tool written in Python that aims to make it easier to write automated acceptance tests. It improves the readability of those tests by using a structured natural language – and a simple mechanism to extend this language – so that both developers and customers can collaborate and understand what the tests do”.

Python Package Index "pytest-bdd" - “BDD library for the py.test runner”, “ytest-bdd implements a subset of Gherkin language for the automation of the project requirements testing and easier behavioral driven development. Unlike many other BDD tools it doesn't require a separate runner and benefits from the power and flexibility of the pytest. It allows to unify your unit and functional tests, easier continuous integration server configuration and maximal reuse of the tests setup”.

Serverspec - RSpec tests for your servers configured by Puppet, Chef or anything else - “With Serverspec, you can write RSpec tests for checking your servers are configured correctly. Serverspec tests your servers' actual state by executing command locally, via SSH, via WinRM, via Docker API and so on. So you don't need to install any agent softwares on your servers and can use any configuration management tools, Puppet, Chef, CFEngine and so on. But the true aim of Serverspec is to help refactoring infrastructure code”.

Opinion by Gojko Adzic: “Many people I met at conferences misunderstand and think that incrementally building up a documentation system means oging back to the Waterfall ideas of big up-front analysis. During the presentation 'How to Sell BDD to the business' in November 2009, Dan North said that BDD is effectively V-Model compressedinto two weeks” .

“A script explains how something can be tested. It describes business functionality through lower-level interactions with the system. A script requires the reader to work back from the actions and understand what's really important. Scripts also bake the test into workflow and session constrains, which migh changein the future even when the underlaying”. business rules don´t change.

“A specification explains what the system does. It focusses on the business functionality in the most direct way possible. Specifications are shorter because because they describe buiness concepts directly. That makes them easier to read and understand than scripts”.

Suggestion by Gojko Adzic: “Automate below the skin of the application. Workflow and session rules can often be checked only against the user interface layer. But that doesn´t mean that the only option to automate those checks is to launch a browser. Instead of automating the specifications through a browser, several teams developing web applications saved a lot of time and effort going right below the skin of the application - to the HTTP layer”.

Gojko Adzic discovered: “Automating user interfaces. Almost all the teams I interviewed made the same mistake early on. They specified tests intended to be automated though user interface as series of technical tips, often directly writing user interface automation commands in their specification” .

Pierre Veragen realized “User interface tests were task oriented ( click, point ) and therefore rightly coupled to the implementation of the GUI, rather thant activity oriented.... FitNesse tests wre organized according to the way UI was set up”.

“When the UI was updated, all these tests had to be updated...”.

“A small change to the GUI, adding a ribbon control, broke everything. There was no way we could update the tests”.

Lance Walton explains:

“The next stage was to understand that the workflow still had to do with the solution we designed, so actully let's forget about workflow and focus on what the user is trying to achieve”.

“So we had pages that contained the details, then we had the task level above that, and then we finally had the goal that the user is trying to achieve”.

For example: Open the shop home page, log in with “test user” and “testpassword”, got to the ”/book” page, click the first image with the “book” CSS-class, wait for the page to load, click the Buy Now link, and so on.

User workflow level - How can a user exercise the functionality through the UI, on a higher activity level ?

For example: Put two books in a shoppoing cart, enter address details and verify that delivery options include free delivery.

The automation layer should handle the workflow level by combining blocks composed at the technicial activity level.

Business rule level - What is the test demonstrating or exercising ?

For example: Free delivery is offered to customers who order two or more books”. Specifications should be described at the business rule level.