SlideShare a Scribd company logo
1
BDD Frameworks Overview
Shapin Anton
August 19, 2016
2
• Lead Software Test Automation Engineer
• 9+ years in IT
• Areas of my competency: manual,
automation, performance and etc.
• Successfully completed more than 9 BDD
projects.
Email: anton_shapin@epam.com
Skype: anton_shapin
Shapin Anton
3
Agenda
BDD approach1
Pros, cons, restrictions of BDD2
Coding tricks in Cucumber-
JVM
3
4
LET`S START !
5
Main questions:
What is BDD ?1
Why do we need BDD ?2
What are the “bonuses” and
minuses of BDD approach?
3
Where to begin?4
6
What customers see in BDD:
We can understand what our
automated tests are doing.
1
Executable specification.2
Reducing cost of test
automation.
3
A better product.4
We can write clear tests in their
native language.
5
7
What qa engineers see in BDD:
Automated tests in native language.
What is it?
1
Should we rewrite all of our tests?2
How we will maintain tests?3
Our tests will be unstable!4
It will be additional work (test-cases should
be migrated to language of scenarios).
5
8
BDD approach
BDD(behavior-driven development) - is a set of software engineering practices
designed to help teams build and deliver more valuable, higher quality software faster. It
draws on Agile and lean practices including, in particular, Test-Driven Development (TDD) and
Domain-Driven Design (DDD).
BDD isn’t a software development methodology in its own right. It’s not a replacement
for Scrum, XP, Kanban, RUP, or whatever methodology you’re currently using.
MAIN GOAL: EXECUTABLE SPECIFICATION
9
BDD process
10
BDD
Given describes the preconditions for
the scenario and prepares the test
environment.
When describes the action under
test.
2
Then describes the expected
outcomes.
3
The And and But keywords can be used
to join several Given, When, or Then
steps together in a more readable way.
4
1
Example of GUI Scenario
Scenario: Running a Full Text Quick Search.
Given I perform Quick Search by "IPhone 4S"
When I click on link 'Search History' on panel 'Quick Search'
Then the term query "IPhone 4S" should be the first in the Search
History grid
12
BDD vs “Classical” style of test
AUTOMATED TEST IN GERKHIN FORMAT(TEST IN BDD STYLE) AUTOMATED TEST IN “CLASSICAL” STYLE
Scenario: Running a Full Text Quick Search.
Given I perform Quick Search by "IPhone 4S"
When I click on link 'Search History' on panel 'Quick Search'
Then the term query "IPhone 4S" should be the first in the Search History
grid
@Test
public void checkFullTextSearch() {
homepage.open();
quickSearchForm.setSearchQuery(“IPhone 4S”);
quickSearchForm.perform();
quickSearchForm.openSearchHistory();
searchHistory.isQueryTheFirst(“IPhone 4S”);
}
13
How it works
@Given("^I perform Quick Search by "([^"]*)" $")
public void i_perform_quick_search_by(String query) {
driver.findElement(By.id(“searchQuery”)).sendKeys(query);
driver.findElement(By.id(“submit”)).click();
}
Scenario: Running a Full Text Quick Search.
Given I perform Quick Search by "IPhone 4S"
...
Each step maps to Java Method
14
The main layers of a Cucumber test suite
15
BDD restrictions :
BDD works very well only if the team of
analysts, developers, testers are near, but not
in different locations.
1
Work is performed on an isolated part of
the product by a small team.
2
The system does not have tests with a
complex structure of the test data.
3
16
Pros:
The acceptance criteria are nice thought.1
We get executable specification.2
All test cases and automated tests are up to date.3
Application development time reduced.4
Test logic is in total independent layer of
implementation.
5
Manual qa engineer can use automated test scenarios
for manual testing.
6
17
Cons:
It is not possible to do testing in the middle of the
test. Checks are made only in the THEN section.
1
It's hard to maintain reusable steps in the
scenarios. Very often it leads to duplication of
code in the test system.
2
It is difficult to refactor tests.3
It is necessary to create and maintain the
Domain Dictionary for writing tests.
4
The complexity of writing test scenarios without
Helper-s (typos, say the phrase can be
different).
5
18
Where to begin
1. Think, whether you need to BDD and formulate specific
goals you want to achieve.
2. Read the book "BDD in Actions".
5. Very carefully think through the architecture of your test
system (What? Where? Why? How?).
4. Create the initial version of the Domain vocabulary and
rules for test scenarios writing.
3. Select the BDD framework. Examine the documentation
carefully.
!!! FORWARD !!!
19
Languages, Frameworks
FRAMEWORKSLANGUAGES
RSpec
JDaveCola
20
Functional tests
BACK-END TESTS
(SERVICES, API and etc)
UI TESTS
(WEB APPLICATION)
TYPES OF TESTS
The scenarios should
express what a user
should be able to do, and
NOT HOW.
Very important is what a
user should be able to
do, and HOW
21
Step structure
WHEN The user clicks the button “SAVE" in the Report Navigation Column on the Search Results page
WHEN
WHO
NAME OF
ACTION
OBJECT OF
ACTION
AREA OF
ACTION
PAGE NAME
LINK+<TITLE>
BUTTON+<TITLE>
TEXTBOX+<TITLE>
…
TABLE
PANEL
POP-UP
MODAL FORM
TAB
…
PAGE NAME
CLICK
SELECT
…
I
THE USER
22
Step structure
THEN the term "<query>" should be the first in the Search History grid on the My History page
THEN
WHAT
SHOULD
[NOT] BE
AREA OF
ACTION
PAGE NAME
TABLE
PANEL
POP-UP
MODAL FORM
TAB
…
PAGE NAME
SHOULD BE
SHOULD NOT BE
The term
…
23
Step structure
WHEN The user performs the Full Search with parameters: query: “fish"; city: “Murmansk"; on the Home page
COMPLEX
WHO
NAME OF
ACTION
OBJECT OF
ACTION
WITH
PARAMETERS:
PAGE NAME
LINK+<TITLE>
BUTTON+<TITLE>
TEXTBOX+<TITLE>
…
PARAM:VALUE PAGE NAME
PERFORM
FILL
…
I
THE USER
Small tricks when working with Cucumber-JVM
Scenario Outline: Running a Full Text Quick Search.
Given I perform Quick Search by “<query>"
When I click on link 'Search History' on panel 'Quick Search'
Then the term query “<query>" should be the first in the Search History grid
Examples:
|query |
| IPhone 4S |
| BMW X5 |
25
Small tricks when working with Cucumber-JVM
Given the user navigate to the Home page
=
Given the user open the Home page
(?: navigate to|open) не равно (:? navigate to|open)
/**
* Open "Home page"
*/
@Given("^the user (?:navigate to|open) the Home page$")
public void the_user_open_the_Home_page() {
homePage.open();
}
26
Small tricks when working with Cucumber-JVM
When the user navigates to “Simple” report type on the page ‘Results’
=
When the user navigates to report type “Simple” on the page ‘Results’
@When("^I navigate to (?:"([^"]*)" report type|report type "([^"]*)" ) on page 'Results'$")
public void I_navigate_to_report (String dataset, String dataset2){
if(dataset!=null) {
// TODO: code goes here
}else{
// TODO: code goes here
}
}
27
Small tricks when working with Cucumber-JVM
Given I have 5 cucumbers in my basket
=
Given I have 1 cucumber in my basket
@Given("^I have (d+) cucumbers? in my basket$")
public void i_have_cucumber(int number) {
// TODO: code goes here
}
28
Small tricks when working with Cucumber-JVM
Then the response should be JSON:
"""
[{"name":"BMW X5", "color": "Blue"},
{"name":"UAZ Patriot", "color": "Blue"}]
"""
@Then("^the response should be JSON:$")
public void theResponseShouldBeJSON(String expectedJson){
// TODO: code goes here
}
IDE Helper (plugin for IDEA) to write steps of
scenario
• We can see all implemented
steps when printing text of
step
• We can see full description
of steps
• Helper reduces time of step
creation
KEY POINTS
Best Practices. Test Step Creation.
User Helpers. For example IntelliJ IDEA plugin «Cucumber for Java»
31
Conclusion
1. BDD is a very good approach. But this is not a magic bullet.
2. Improper using will bring more problems than benefits.
5. Tests Stability and BDD usability depends on you.
4. Do not confuse the BDD and tests written in
Gherkin.
3. To use or not to use BDD depends on situation and project.
32
Useful materials
1. Video: Useful practices of creation automatic tests by using Cucumber-JVM:
https://goo.gl/ZftM9h
2. Video: From Manual to Automated Testing:
https://videoportal.epam.com/video/noPgmXaX
5. Book: “Specification by Example”
4. Book: “Cucumber Recipes”
3. Book: “BDD in Actions”
6. Allure-cucumber-plugin: https://github.com/kirlionik/allure-
cucumber-plugin
33
Thank you for attention!
Email: anton_shapin@epam.com
Skype: anton_shapin

More Related Content

What's hot (20)

ODP
Java compilation
Mike Kucera
 
PPTX
Be a Hero on Day 1 with ASP.Net Boilerplate
Lee Richardson
 
PDF
Spring Boot
HongSeong Jeon
 
PDF
Lets make a better react form
Yao Nien Chung
 
PPTX
Access modifiers in java
Madishetty Prathibha
 
PDF
Java introdução ao java
Armando Daniel
 
PPTX
Java Generics
Zülfikar Karakaya
 
PDF
Curso Java Basico] Aula 19: Vetores (Arrays)
Loiane Groner
 
PDF
Introduction to flutter
Wan Muzaffar Wan Hashim
 
PPTX
JavaFX Presentation
Mochamad Taufik Mulyadi
 
PDF
Redux toolkit
ofoefiergbor1
 
PPTX
Java performance tuning
Mohammed Fazuluddin
 
PPTX
Features of java
WILLFREDJOSE W
 
PDF
Hibernate I
People Strategists
 
PPT
Swing and AWT in java
Adil Mehmoood
 
PDF
Performance optimization for Android
Arslan Anwar
 
PDF
Java Notes .pdf
gokulprasanna4
 
PDF
Apostila sistemas operacionais
fernandao777
 
DOCX
Visual basic
Dharmik
 
PDF
Drupal arabic
Ahmed Jadalla
 
Java compilation
Mike Kucera
 
Be a Hero on Day 1 with ASP.Net Boilerplate
Lee Richardson
 
Spring Boot
HongSeong Jeon
 
Lets make a better react form
Yao Nien Chung
 
Access modifiers in java
Madishetty Prathibha
 
Java introdução ao java
Armando Daniel
 
Java Generics
Zülfikar Karakaya
 
Curso Java Basico] Aula 19: Vetores (Arrays)
Loiane Groner
 
Introduction to flutter
Wan Muzaffar Wan Hashim
 
JavaFX Presentation
Mochamad Taufik Mulyadi
 
Redux toolkit
ofoefiergbor1
 
Java performance tuning
Mohammed Fazuluddin
 
Features of java
WILLFREDJOSE W
 
Hibernate I
People Strategists
 
Swing and AWT in java
Adil Mehmoood
 
Performance optimization for Android
Arslan Anwar
 
Java Notes .pdf
gokulprasanna4
 
Apostila sistemas operacionais
fernandao777
 
Visual basic
Dharmik
 
Drupal arabic
Ahmed Jadalla
 

Similar to BDD from QA side (20)

PDF
resolvendo problemas de comunicação em equipes distribuídas com bdd
Rodrigo Urubatan
 
PPTX
Useful practices of creation automatic tests by using cucumber jvm
Anton Shapin
 
PPTX
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
QAFest
 
PPTX
...and thus your forms automagically disappeared
Luc Bors
 
PPTX
Behavior Driven Development
Dhawal Joshi
 
PDF
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
Future Processing
 
PPTX
End-to-end testing with geb
Jesús L. Domínguez Muriel
 
PDF
Moving away from legacy code with BDD
Konstantin Kudryashov
 
ODP
New Ideas for Old Code - Greach
HamletDRC
 
PPTX
Taming the Legacy Beast: Turning wild old code into a sleak new thoroughbread.
Chris Laning
 
PDF
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
Ortus Solutions, Corp
 
DOCX
Gui application for e mail application
Umesh Mk
 
PPTX
3 Ways to test your ColdFusion API - 2017 Adobe CF Summit
Ortus Solutions, Corp
 
PDF
BDD in iOS with Cedar
Jason McCreary
 
PPTX
Rubyconf2016 - Solving communication problems in distributed teams with BDD
Rodrigo Urubatan
 
PDF
3 WAYS TO TEST YOUR COLDFUSION API
Gavin Pickin
 
PDF
3 WAYS TO TEST YOUR COLDFUSION API -
Ortus Solutions, Corp
 
PPTX
Code Refactoring
Milan Vukoje
 
PDF
Cross mobile testautomation mit Xamarin & SpecFlow
Christian Hassa
 
PDF
Getting your mobile test automation process in place - using Cucumber and Cal...
Niels Frydenholm
 
resolvendo problemas de comunicação em equipes distribuídas com bdd
Rodrigo Urubatan
 
Useful practices of creation automatic tests by using cucumber jvm
Anton Shapin
 
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
QAFest
 
...and thus your forms automagically disappeared
Luc Bors
 
Behavior Driven Development
Dhawal Joshi
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
Future Processing
 
End-to-end testing with geb
Jesús L. Domínguez Muriel
 
Moving away from legacy code with BDD
Konstantin Kudryashov
 
New Ideas for Old Code - Greach
HamletDRC
 
Taming the Legacy Beast: Turning wild old code into a sleak new thoroughbread.
Chris Laning
 
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
Ortus Solutions, Corp
 
Gui application for e mail application
Umesh Mk
 
3 Ways to test your ColdFusion API - 2017 Adobe CF Summit
Ortus Solutions, Corp
 
BDD in iOS with Cedar
Jason McCreary
 
Rubyconf2016 - Solving communication problems in distributed teams with BDD
Rodrigo Urubatan
 
3 WAYS TO TEST YOUR COLDFUSION API
Gavin Pickin
 
3 WAYS TO TEST YOUR COLDFUSION API -
Ortus Solutions, Corp
 
Code Refactoring
Milan Vukoje
 
Cross mobile testautomation mit Xamarin & SpecFlow
Christian Hassa
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Niels Frydenholm
 
Ad

Recently uploaded (20)

PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
Advancing WebDriver BiDi support in WebKit
Igalia
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
Biography of Daniel Podor.pdf
Daniel Podor
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
Advancing WebDriver BiDi support in WebKit
Igalia
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Ad

BDD from QA side

  • 1. 1 BDD Frameworks Overview Shapin Anton August 19, 2016
  • 2. 2 • Lead Software Test Automation Engineer • 9+ years in IT • Areas of my competency: manual, automation, performance and etc. • Successfully completed more than 9 BDD projects. Email: [email protected] Skype: anton_shapin Shapin Anton
  • 3. 3 Agenda BDD approach1 Pros, cons, restrictions of BDD2 Coding tricks in Cucumber- JVM 3
  • 5. 5 Main questions: What is BDD ?1 Why do we need BDD ?2 What are the “bonuses” and minuses of BDD approach? 3 Where to begin?4
  • 6. 6 What customers see in BDD: We can understand what our automated tests are doing. 1 Executable specification.2 Reducing cost of test automation. 3 A better product.4 We can write clear tests in their native language. 5
  • 7. 7 What qa engineers see in BDD: Automated tests in native language. What is it? 1 Should we rewrite all of our tests?2 How we will maintain tests?3 Our tests will be unstable!4 It will be additional work (test-cases should be migrated to language of scenarios). 5
  • 8. 8 BDD approach BDD(behavior-driven development) - is a set of software engineering practices designed to help teams build and deliver more valuable, higher quality software faster. It draws on Agile and lean practices including, in particular, Test-Driven Development (TDD) and Domain-Driven Design (DDD). BDD isn’t a software development methodology in its own right. It’s not a replacement for Scrum, XP, Kanban, RUP, or whatever methodology you’re currently using. MAIN GOAL: EXECUTABLE SPECIFICATION
  • 10. 10 BDD Given describes the preconditions for the scenario and prepares the test environment. When describes the action under test. 2 Then describes the expected outcomes. 3 The And and But keywords can be used to join several Given, When, or Then steps together in a more readable way. 4 1
  • 11. Example of GUI Scenario Scenario: Running a Full Text Quick Search. Given I perform Quick Search by "IPhone 4S" When I click on link 'Search History' on panel 'Quick Search' Then the term query "IPhone 4S" should be the first in the Search History grid
  • 12. 12 BDD vs “Classical” style of test AUTOMATED TEST IN GERKHIN FORMAT(TEST IN BDD STYLE) AUTOMATED TEST IN “CLASSICAL” STYLE Scenario: Running a Full Text Quick Search. Given I perform Quick Search by "IPhone 4S" When I click on link 'Search History' on panel 'Quick Search' Then the term query "IPhone 4S" should be the first in the Search History grid @Test public void checkFullTextSearch() { homepage.open(); quickSearchForm.setSearchQuery(“IPhone 4S”); quickSearchForm.perform(); quickSearchForm.openSearchHistory(); searchHistory.isQueryTheFirst(“IPhone 4S”); }
  • 13. 13 How it works @Given("^I perform Quick Search by "([^"]*)" $") public void i_perform_quick_search_by(String query) { driver.findElement(By.id(“searchQuery”)).sendKeys(query); driver.findElement(By.id(“submit”)).click(); } Scenario: Running a Full Text Quick Search. Given I perform Quick Search by "IPhone 4S" ... Each step maps to Java Method
  • 14. 14 The main layers of a Cucumber test suite
  • 15. 15 BDD restrictions : BDD works very well only if the team of analysts, developers, testers are near, but not in different locations. 1 Work is performed on an isolated part of the product by a small team. 2 The system does not have tests with a complex structure of the test data. 3
  • 16. 16 Pros: The acceptance criteria are nice thought.1 We get executable specification.2 All test cases and automated tests are up to date.3 Application development time reduced.4 Test logic is in total independent layer of implementation. 5 Manual qa engineer can use automated test scenarios for manual testing. 6
  • 17. 17 Cons: It is not possible to do testing in the middle of the test. Checks are made only in the THEN section. 1 It's hard to maintain reusable steps in the scenarios. Very often it leads to duplication of code in the test system. 2 It is difficult to refactor tests.3 It is necessary to create and maintain the Domain Dictionary for writing tests. 4 The complexity of writing test scenarios without Helper-s (typos, say the phrase can be different). 5
  • 18. 18 Where to begin 1. Think, whether you need to BDD and formulate specific goals you want to achieve. 2. Read the book "BDD in Actions". 5. Very carefully think through the architecture of your test system (What? Where? Why? How?). 4. Create the initial version of the Domain vocabulary and rules for test scenarios writing. 3. Select the BDD framework. Examine the documentation carefully. !!! FORWARD !!!
  • 20. 20 Functional tests BACK-END TESTS (SERVICES, API and etc) UI TESTS (WEB APPLICATION) TYPES OF TESTS The scenarios should express what a user should be able to do, and NOT HOW. Very important is what a user should be able to do, and HOW
  • 21. 21 Step structure WHEN The user clicks the button “SAVE" in the Report Navigation Column on the Search Results page WHEN WHO NAME OF ACTION OBJECT OF ACTION AREA OF ACTION PAGE NAME LINK+<TITLE> BUTTON+<TITLE> TEXTBOX+<TITLE> … TABLE PANEL POP-UP MODAL FORM TAB … PAGE NAME CLICK SELECT … I THE USER
  • 22. 22 Step structure THEN the term "<query>" should be the first in the Search History grid on the My History page THEN WHAT SHOULD [NOT] BE AREA OF ACTION PAGE NAME TABLE PANEL POP-UP MODAL FORM TAB … PAGE NAME SHOULD BE SHOULD NOT BE The term …
  • 23. 23 Step structure WHEN The user performs the Full Search with parameters: query: “fish"; city: “Murmansk"; on the Home page COMPLEX WHO NAME OF ACTION OBJECT OF ACTION WITH PARAMETERS: PAGE NAME LINK+<TITLE> BUTTON+<TITLE> TEXTBOX+<TITLE> … PARAM:VALUE PAGE NAME PERFORM FILL … I THE USER
  • 24. Small tricks when working with Cucumber-JVM Scenario Outline: Running a Full Text Quick Search. Given I perform Quick Search by “<query>" When I click on link 'Search History' on panel 'Quick Search' Then the term query “<query>" should be the first in the Search History grid Examples: |query | | IPhone 4S | | BMW X5 |
  • 25. 25 Small tricks when working with Cucumber-JVM Given the user navigate to the Home page = Given the user open the Home page (?: navigate to|open) не равно (:? navigate to|open) /** * Open "Home page" */ @Given("^the user (?:navigate to|open) the Home page$") public void the_user_open_the_Home_page() { homePage.open(); }
  • 26. 26 Small tricks when working with Cucumber-JVM When the user navigates to “Simple” report type on the page ‘Results’ = When the user navigates to report type “Simple” on the page ‘Results’ @When("^I navigate to (?:"([^"]*)" report type|report type "([^"]*)" ) on page 'Results'$") public void I_navigate_to_report (String dataset, String dataset2){ if(dataset!=null) { // TODO: code goes here }else{ // TODO: code goes here } }
  • 27. 27 Small tricks when working with Cucumber-JVM Given I have 5 cucumbers in my basket = Given I have 1 cucumber in my basket @Given("^I have (d+) cucumbers? in my basket$") public void i_have_cucumber(int number) { // TODO: code goes here }
  • 28. 28 Small tricks when working with Cucumber-JVM Then the response should be JSON: """ [{"name":"BMW X5", "color": "Blue"}, {"name":"UAZ Patriot", "color": "Blue"}] """ @Then("^the response should be JSON:$") public void theResponseShouldBeJSON(String expectedJson){ // TODO: code goes here }
  • 29. IDE Helper (plugin for IDEA) to write steps of scenario • We can see all implemented steps when printing text of step • We can see full description of steps • Helper reduces time of step creation KEY POINTS
  • 30. Best Practices. Test Step Creation. User Helpers. For example IntelliJ IDEA plugin «Cucumber for Java»
  • 31. 31 Conclusion 1. BDD is a very good approach. But this is not a magic bullet. 2. Improper using will bring more problems than benefits. 5. Tests Stability and BDD usability depends on you. 4. Do not confuse the BDD and tests written in Gherkin. 3. To use or not to use BDD depends on situation and project.
  • 32. 32 Useful materials 1. Video: Useful practices of creation automatic tests by using Cucumber-JVM: https://goo.gl/ZftM9h 2. Video: From Manual to Automated Testing: https://videoportal.epam.com/video/noPgmXaX 5. Book: “Specification by Example” 4. Book: “Cucumber Recipes” 3. Book: “BDD in Actions” 6. Allure-cucumber-plugin: https://github.com/kirlionik/allure- cucumber-plugin
  • 33. 33 Thank you for attention! Email: [email protected] Skype: anton_shapin