bdd als ansatz zum automatisierten testen von...
TRANSCRIPT
![Page 1: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/1.jpg)
BDD als Ansatz zum Automatisierten Testenvon GUIs
Reginald Stadlbauerfroglogic GmbH
![Page 2: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/2.jpg)
About me
Name: Reginald Stadlbauer Company: froglogic GmbH Position: co-founder and CEO Worked as Software Engineer at Trolltech and the KDE project
![Page 3: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/3.jpg)
About froglogic
HQ: Hamburg Founded: 2003 US presence since 2008 Product focus on Squish- Squish GUI Tester (Cross-Platform/Cross-Technology GUI Test Automation)- Squish Coco (C, C++ and C# Code Coverage)
More than 3.000 customers world-wide
![Page 4: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/4.jpg)
Overview
What is BDD and TDD? Automating a Behavior-Driven Test Live Demos
![Page 5: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/5.jpg)
What is BDD / BDT?
“BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.” - Dan North
http://en.wikipedia.org/wiki/Behavior-driven_development
OR...
![Page 6: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/6.jpg)
What is BDD / BDT?
Test Driven Development (TDD)- Write (failing) test- Implement feature until test passes- Unit-Test level granularity (inside-out)
BDD:- Focus on application's behavior and specification- Description in a human-readable DSL (e.g. Gherkin)- Less focus on implementation details
Business goals Features
Executablespecifications
Low-levelspecifications
ExamplesExamples
![Page 7: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/7.jpg)
Feature Partitioning
Product
Feature A Feature B
Feature C
Feature D Feature E
![Page 8: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/8.jpg)
Components
Features ≠ Components
Feature A Feature B
Feature C
Feature D Feature E
Unit 1
Unit 2
Unit n
![Page 9: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/9.jpg)
Versatile usage of Feature Files
User story / feature specification Communicate with customer / users Documentation of acceptance test Sequence to walk through for manual tests Storyboard for automation of tests
Feature: Aaaaa bbb Scenario: Bbbb ccc Given foo bar zzz And zilch zorro When I do something Then something should
Feature: Aaaaa bbb Scenario: Bbbb ccc Given foo bar zzz And zilch zorro When I do something Then something should
Feature: Aaaaa bbb Scenario: Bbbb ccc Given foo bar zzz And zilch zorro When I do something Then something should
Developer
Tester
Documentation
Customer,Business Owner
Analyst Developer,Tester
![Page 10: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/10.jpg)
Scenarios
Feature A Feature B
Feature C
Feature D Feature E
Scenario D-1Scenario A-1 Scenario E-1
Scenario D-2
![Page 11: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/11.jpg)
Why BDD/BDT?
“Test first” development on a higher level Clearly separate test logic from implementation Allow non-programmers to define features & tests Have a common, single language two communicate
![Page 12: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/12.jpg)
Example: JavaFx Addressbook
![Page 13: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/13.jpg)
Example: Fill an empty addressbook
Feature: Filling Empty Addressbook
Scenario: Adding a single person Given the addressbook application is running When I create a new addressbook And I add a new person … to the address book Then 1 entries should be displayed in the address book
Feature File (Gherkin)
![Page 14: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/14.jpg)
Step Types
Scenario: Adding a single person Given the addressbook application is running When I create a new addressbook And I add a new person … to the address book Then 1 entries should be displayed in the address book
Precondition
Actions
Expectations
![Page 15: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/15.jpg)
What is BDD / BDT – The Process
Write a failingFeature Test
MakeFeature Test
pass
Implement/Refactor
Code
Test
Manually Automated
![Page 16: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/16.jpg)
Automating a Behavior-Driven Test
Requirements- BDT framework- Test Automation framework (unit/GUI/... testing tool)- Glue between both
![Page 17: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/17.jpg)
BDT Framework – Generate Skeletons
Parse feature files Generate step definition skeletons (functions and annotations) in preferred language
Test.feature
Feature: Fill Addressbook
Scenario: Add a person
Given the Addressbook is running
When I add a person
....
Test.py
@Step("Given the Addressbook is running")
def step(context):
test.warning("Implement me”)
@Step("When I add a person”)
def step(context):
test.warning("Implement me”)
![Page 18: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/18.jpg)
BDT Framework – Run Feature Files
Parse feature files Execute feature files by mapping to steps to step definitions (functions) Reporting
Test.feature
Feature: Fill Addressbook
Scenario: Add a person
Given the Addressbook is running
When I add a person
....
Test.py
@Step("Given the Addressbook is running")
def step(context):
[...]
@Step("When I add a person")
def step(context):
[...]
![Page 19: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/19.jpg)
Test Automation framework
Support the specific (UI) technology of Application Support the scripting/programming language of the BDT framework Tooling for convenient test creation, maintenance and debugging
Test.py
@Step("Given the Addressbook is running")
def step(context):
startApplication("Addressbook”)
@Step("When I add a person")
def step(context):
click("FirstName”)
typeText("Max”)
![Page 20: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/20.jpg)
Integrating BDT and Test Automation frameworks
Need to “talk the same language” Reporting Debugging
![Page 21: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/21.jpg)
BDT Frameworks
Behave
Cucumber
JBehave
Lettuce
radish
RSpec
SpecFlow
Squish GUI Tester
...
![Page 22: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/22.jpg)
Test Automation tools
CppUnit
GoogleTest
xUnit
NUnit
JUnit
Squish GUI Tester
HP QTP
Rational Functional Tester
Selenium
...
![Page 23: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/23.jpg)
Live Demos
BDD GUI test for cross-platform (JavaFx) Addressbook- Add a single person- Add several persons- Passing parameters
![Page 24: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/24.jpg)
Books
BDD in Action: Behavior-driven development for the whole software lifecycle (John Ferguson Smart)
The Cucumber Book: Behaviour-Driven Development for Testers and Developers (Matt Wynne)
![Page 25: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/25.jpg)
About Squish GUI Tester
Cross-Platform / Cross-GUI-Technology Test Automation- Windows, Linux, Mac OS X, Unix, QNX, VxWorks, iOS, Android, ...- Java (Swing/AWT, SWT/RCP, JavaFx), Qt/QML/QtQuick, Web, MFC, WinForms, WPF, iOS,
Cocoa, Carbon, Android, Tk, Flex, …
Object-based GUI object identification Record & replay Powerful scripting (JavaScript, Python, Ruby, Tcl, Perl) Eclipse-based IDE Built-in BDD framework and support
Batch-testing via command-line tools Remote/distributed testing architecture Integrations: Microsoft ALM, HP QC/ALM, Rational RQM, Seapine TCM, SpiraTest, MKS,
XStudio, Jenkins, Hudson, TeamCity, Bamboo, Robot Framework, JUnit, Maven, …
![Page 26: BDD als Ansatz zum Automatisierten Testen von GUIs2015.java-forum-stuttgart.de/_data/E2_Stadlbauer.pdf · Test Driven Development (TDD) - Write (failing) test - Implement feature](https://reader035.vdocuments.mx/reader035/viewer/2022062921/5f03a30c7e708231d40a07f6/html5/thumbnails/26.jpg)
Q & A
Questions? Visit our booth or email [email protected]
Free and supported trial of Squish at http://www.froglogic.com/evaluate