Acceptance Test Driven Development ● Common understanding ● Ubiquitous language ● Executable requirements/examples ● Living documentation ● Also known as story test driven development, behavior driven development, executable requirements, specification by example, ...
Discuss phase ● Whole team is involved in discussing the problem and the solution ● Team members gain shared understanding and common vocabulary ● Concrete examples clarify the solution ● The examples can later be automated
Development phase ● The specified examples guide the implementation work ● Automation of the examples can be done in parallel with feature implementation ● The whole team is responsible on automation ● In the end, all the automated examples pass when run against the implementation
Deliver phase ● Implemented features are demonstrated to all stakeholders ● Original examples are executed against the produced software ● Feedback serves as input to the next discussion phase
Robot Framework ● Generic test automation framework ● Utilizes the keyword-driven testing approach ● Suitable both for "normal" automation and ATDD ● Implemented with Python ● Runs also on Jython (JVM) and IronPython (.NET) ● Open source ● Apache 2.0 License ● Sponsored by Nokia Siemens Networks ● Active development and community
High level architecture
Simple tabular syntax
Data-driven test cases
Key features ● Creating higher level keywords in test data ● Easy to create domain specific languages ● No programming skills needed ● Variables ● Tagging test cases ● Selecting tests, statistics, ... ● Simple test library API ● Easy to create custom libraries
Separate test data editor (RIDE)
Rich ecosystem ● Generic test libraries ● Web testing, Swing, SWT, Windows GUIs, databases, SSH, Telnet, ... ● Build tool integration ● Outputs also in machine readable XML format ● Plugins for Jenkins/Hudson, Maven, Ant, ... ● Text editor support ● Emacs, Vim, TextMate, ...