SlideShare a Scribd company logo
© 2014 Leanpitch | CONFIDENTIAL
Behavior Driven Development
Naveen Kumar Singh CSP, PMI-ACP, CSM, PMP
© 2014 Leanpitch | CONFIDENTIAL
Agenda
User Story
TDD, ATDD, and BDD
BDD in Details
BDD in Action
Why Cucumber?
© 2014 Leanpitch | CONFIDENTIAL
User Story
© 2014 Leanpitch | CONFIDENTIAL
User Story
• Product: Groceries Billing System
• Stories
• As an account I want to calculate bills of groceries purchased by customer so that I
can generate invoice.
• As an account I want to update groceries rates so that bills reflect correct rate
• As an account I want to issue discount coupon so I can give to customer to redeem
next time.
© 2014 Leanpitch | CONFIDENTIAL
Acceptance Criteria
What to check at the end of development?
Ordered Pizza online, then Pizza get delivered at home or confirmation mail
in your inbox
© 2014 Leanpitch | CONFIDENTIAL
Acceptance Testing
Making sure the software works correctly for the intended user in his or
her normal work environment.
• Alpha test
• Version of the complete software is tested by the customer under
the supervision of the developer at the developer’s site
• Beta test
• Version of the complete software is tested by the customer at his or
her own site without the developer being present
© 2014 Leanpitch | CONFIDENTIAL
TDD, ATDD, and BDD
© 2014 Leanpitch | CONFIDENTIAL
ATDD BDD TDD
© 2014 Leanpitch | CONFIDENTIAL
Acceptance/Customer Test Driven Development
Acceptance Test-Driven Development (ATDD) is a development
methodology based on communication between the business customers,
the developers, and the testers. ATDD encompasses many of the same
practices as Specification by Example, Behavior Driven Development
(BDD), Example-Driven Development (EDD), and Story Test-Driven
Development (SDD). All these process aid developers and testers in
understanding the customer’s needs prior to implementation and allow
customers to be able to converse in their own domain language.
© 2014 Leanpitch | CONFIDENTIAL
ATDD Advantage
Close collaboration
Seeing concrete, working software
Building trust and confidence
Customer in control
Evolving a shared language
Tests as a shared language
Tests as specification
Specification by example
© 2014 Leanpitch | CONFIDENTIAL
ATDD Test Format
Scenario: Send email
Given that a web based email module has been developed
And I am accessing it with proper authentication
When I shall write the sender email address in To field
And keeping the subject field non empty
And write something in the body text area which accepts rich text
And press or click send button
Then my email will be sent
And the event will be logged in the log file.
© 2014 Leanpitch | CONFIDENTIAL
BDD in Details
© 2014 Leanpitch | CONFIDENTIAL
Behaviour Driven Development (BDD)
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
© 2014 Leanpitch | CONFIDENTIAL
BDD
Given- Set of
preconditions
Then-Some
testable outcome
When-When a
event occurs
© 2014 Leanpitch | CONFIDENTIAL
BDD Features
• A testable story (it should be the smallest unit that fits in an iteration)
• The title should describe an activity
• The narrative should include a role, a feature, and a benefit
• The scenario title should say what's different
• The scenario should be described in terms of Givens, Events, and
Outcomes
• The givens should define all of, and no more than, the required context
• The event should describe the feature
© 2014 Leanpitch | CONFIDENTIAL
BDD Cycle
Add
Test
Test Fail
Code
Rerun
Test
Refactor
© 2014 Leanpitch | CONFIDENTIAL
BDD Example
Story: Returns go to stock
In order to keep track of stock
As a store owner
I want to add items back to stock when they're returned
© 2014 Leanpitch | CONFIDENTIAL
BDD Example
Scenario 1: Refunded items should be returned to stock
Given a customer previously bought a black sweater from me
And I currently have three black sweaters left in stock
When he returns the sweater for a refund
Then I should have four black sweaters in stock
© 2014 Leanpitch | CONFIDENTIAL
BDD Example
Scenario 2: Replaced items should be returned to stock
Given that a customer buys a blue garment
And I have two blue garments in stock
And three black garments in stock.
When he returns the garment for a replacement in black,
Then I should have three blue garments in stock
And two black garments in stock
© 2014 Leanpitch | CONFIDENTIAL
Tools
ATDD
FitNesse
Spectacular
Concordian
Thucydides
BDD
SpecFlow
Cucumber
JBehave
NBehave
Behat
TDD
JUnit
NUnit
TestNG
MSTest
© 2014 Leanpitch | CONFIDENTIAL
BDD is an Agile Process
BDD encourages collaboration between developers, QA and non-technical
or business participants in a software project.
© 2014 Leanpitch | CONFIDENTIAL
BDD in Action
© 2014 Leanpitch | CONFIDENTIAL
BDD Classroom Exercise-GOAL
Write BDD code to calculate Groceries Bills
© 2014 Leanpitch | CONFIDENTIAL
BDD Classroom Exercise-Feature File
#encoding: utf-8
Feature: Checkout
In order to calculate price of groceries
As a Store Staff
I should be able to calculate price for groceries during checkout
Scenario: Checkout a banana
Given The price of a “Banana” is $5
When I checkout 1 “Banana”
Then the total price should be $5
© 2014 Leanpitch | CONFIDENTIAL
BDD Classroom Exercise-Add Test Runner Class
package test.java;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources")
public class testrunner
{
}
© 2014 Leanpitch | CONFIDENTIAL
BDD Classroom Exercise-Run BDD Scenarios
1 Scenarios ([33m1 undefined[0m)
3 Steps ([33m3 undefined[0m)
0m0.000s
You can implement missing steps with the snippets below:
@Given("^The price of a "([^"]*)" is $(d+)$")
public void The_price_of_a_is_$(String arg1, int arg2) throws Throwable {
// Express the Regexp above with the code you wish you had
throw new PendingException();
}
@When("^I checkout (d+) "([^"]*)"$")
public void I_checkout(int arg1, String arg2) throws Throwable {
// Express the Regexp above with the code you wish you had
throw new PendingException();
}
@Then("^the total price should be $(d+)$")
public void the_total_price_should_be_$(int arg1) throws Throwable {
// Express the Regexp above with the code you wish you had
throw new PendingException();
}
© 2014 Leanpitch | CONFIDENTIAL
BDD Classroom Exercise-Add Test Step
public class teststeps {
@Given("^The price of a "([^"]*)" is $(d+)$")
public void The_price_of_a_is_$(String arg1, int arg2) throws Throwable {
// Express the Regexp above with the code you wish you had
throw new PendingException();
}
@When("^I checkout (d+) "([^"]*)"$")
public void I_checkout(int arg1, String arg2) throws Throwable {
// Express the Regexp above with the code you wish you had
throw new PendingException();
}
@Then("^the total price should be $(d+)$")
public void the_total_price_should_be_$(int arg1) throws Throwable {
// Express the Regexp above with the code you wish you had
throw new PendingException();
}
}
© 2014 Leanpitch | CONFIDENTIAL
BDD Classroom Exercise-Add Required Functionality and Test Scenarios
public class teststeps extends TestCase {
String product;
int rate, qty;
@Given("^The price of a "([^"]*)" is $(d+)$")
public void The_price_of_a_is_$(String arg1, int arg2) throws Throwable {
product = arg1;
rate = arg2;
}
@When("^I checkout (d+) "([^"]*)"$")
public void I_checkout(int arg1, String arg2) throws Throwable {
qty=arg1;
}
@Then("^the total price should be $(d+)$")
public void the_total_price_should_be_$(int arg1) throws Throwable {
if(product.equals("Banana"))
assertEquals(arg1, rate*qty);
}
}
© 2014 Leanpitch | CONFIDENTIAL
BDD Classroom Exercise-Run Scenarios Again
© 2014 Leanpitch | CONFIDENTIAL
Why Cucumber?
© 2014 Leanpitch | CONFIDENTIAL
Cucumber
Cucumber was originally created as a command-line tool by members of
the Ruby community. It has since been translated into several different
development environments, including Java, to allow more of us to enjoy its
benefits.
When you run Cucumber, it reads in your specifications from plain-
language text files called features, examines them for scenarios to test, and
runs the scenarios against your system.
Each scenario is a list of steps for Cucumber to work through. So that
Cucumber can understand these feature files, they must follow some basic
syntax rules. The name for this set of rules is Gherkin.
© 2014 Leanpitch | CONFIDENTIAL
Cucumber
Along with the features, you give Cucumber a set of step definitions, which
map the business-readable language of each step into code to carry out
whatever action is being described by the step. In a mature test suite, the
step definition itself will probably just be one or two lines of code that
delegate to a library of support code, specific to the domain of your
application, that knows how to carry out common tasks on the system.
Sometimes that may involve using an automation library, like the browser
automation library Selenium, to interact with the system itself.
© 2014 Leanpitch | CONFIDENTIAL
Cucumber
Your Project Features Scenarios Steps
Your System
Automation
Library
Support
Code
Step
Definitions
Technology
Facing
Business
Facing
© 2014 Leanpitch | CONFIDENTIAL
Cucumber
© 2014 Leanpitch | CONFIDENTIAL
Gherkin-Keywords
A Gherkin file is given its structure and meaning using a set of special keywords.
There’s an equivalent set of these keywords in each of the supported spoken
languages, but for now let’s take a look at the English ones:
• Feature
• Background
• Scenario
• Given
• When
• Then
• And
• But
• *
• Scenario Outline
• Examples
© 2014 Leanpitch | CONFIDENTIAL
Gherkin- Background
Feature: Feedback when entering invalid credit card details
In user testing we've seen a lot of people who made mistakes entering their credit card. We
need to be as helpful as possible here to avoid losing users at this crucial stage of the
transaction.
Background:
Given I have chosen some items to buy
And I am about to enter my credit card details
Scenario: Credit card number too short
When I enter a card number that's only 15 digits long
And all the other details are correct
And I submit the form
Then the form should be redisplayed
And I should see a message advising me of the correct number of digits
© 2014 Leanpitch | CONFIDENTIAL
Gherkin- Multiple AND
Scenario: Expiry date invalid
When I enter a card expiry date that's in the past
And all the other details are correct
And I submit the form
Then the form should be redisplayed
And I should see a message telling me the expiry date must be wrong
© 2014 Leanpitch | CONFIDENTIAL
Gherkin- Replacing Given/When/Then with Bullets
Some people find Given, When, Then, And, and But a little verbose. There is an
additional keyword you can use to start a step: * (an asterisk). We could have
written the previous scenario like this:
Scenario: Attempt withdrawal using stolen card
* I have $100 in my account
* my card is invalid
* I request $50
* my card should not be returned
* I should be told to contact the bank
To Cucumber, this is exactly the same scenario. Do you find this version easier to
read? Maybe. Did some of the meaning get lost? Maybe. It’s up to you and your
team how you want to word things. The only thing that matters is that everybody
understands what’s communicated.
© 2014 Leanpitch | CONFIDENTIAL
Gherkin- Comments
# This feature covers the account transaction and hardware-driver modules
Feature: Withdraw Cash
In order to buy beer
As an account holder
I want to withdraw cash from the ATM
# Can't figure out how to integrate with magic wand interface
Scenario: Withdraw too much from an account in credit
Given I have $50 in my account
# When I wave my magic wand
And I withdraw $100
Then I should receive $100
© 2014 Leanpitch | CONFIDENTIAL
Gherkin- Doc Strings
Doc strings just allow you to specify a larger piece of text than you could fit on a
single line. For example, if you need to describe the precise content of an email
message, you could do it like this:
Scenario: Ban Unscrupulous Users
When I behave unscrupulously
Then I should receive an email containing:
"""
Dear Sir,
Your account privileges have been revoked due to your unscrupulous behavior.
Sincerely,
The Management
"""
And my account should be locked
© 2014 Leanpitch | CONFIDENTIAL
Cucumber- Step Definitions
In Cucumber, results are a little more sophisticated than a simple pass or fail. A
scenario that’s been executed can end up in any of the following states:
• Failed
• Pending
• Undefined
• Skipped
• Passed
These states are designed to help indicate the progress that you make as you
develop your tests.
© 2014 Leanpitch | CONFIDENTIAL
Cucumber- Step Definitions
Failed – During execution based on Assert
Passed – During execution based on Assert
Pending – Pending exception
Undefined – Steps are missing in step file
Skipped – All pending and undefined
© 2014 Leanpitch | CONFIDENTIAL
Cucumber- Step Definitions
Element Purpose Default
dryRun true (Skip execution of glue code) False
strict true (will fail execution if there are undefined or
pending steps)
False
glue where to look for glue code (stepdefs and hooks) {}
features the paths to the feature(s) False
monochrome whether or not to use monochrome output False
format what formatter(s) to use {}
tags hat tags in the features should be executed {}
© 2014 Leanpitch | CONFIDENTIAL
Cucumber- Step Definitions
@CucumberOptions(
dryRun = false,
strict = true,
features = "src/test/features/com/sample",
glue = "com.sample",
tags = { "~@wip", "@executeThis" },
monochrome = true,
format = {"pretty", "html:target/cucumber",
"json:target_json/cucumber.json",
"junit:taget_junit/cucumber.xml“ }
)
© 2014 Leanpitch | CONFIDENTIAL
Cucumber- Step Definitions
dryRun: if dryRun option is set to true then cucumber only checks if all the steps
have their corresponding step definitions defined or not. The code mentioned in
the Step definitions is not executed. This is used just to validate if we have defined
a step definition for each step or not.
Strict: if strict option is set to false then at execution time if cucumber encounters
any undefined/pending steps then cucumber does not fail the execution and
undefined steps are skipped and BUILD is SUCCESSFUL.
Monochrome: if monochrome option is set to False, then the console output is
not as readable as it should be. may be the output images will make this more
clear.
© 2014 Leanpitch | CONFIDENTIAL
Cucumber- Regular Expression
Step definitions use regular expressions to declare the steps that they can
handle. Because regular expressions can contain wildcards, one step
definition can handle several different steps.
© 2014 Leanpitch | CONFIDENTIAL
© 2014 Leanpitch | CONFIDENTIAL
Our Upcoming CSD Training – Please check Scrum Alliance
Please Reach out to US
scrum@leanpitch.com
+91 9902377677
© 2014 Leanpitch | CONFIDENTIAL
Naveen Kumar Singh
Naveen.singh@Leanpitch.com
Agile Coach
http://in.linkedin.com/in/naveenkumarsingh1
Twitter - @naveenhome

More Related Content

What's hot

The LAZY Developer's Guide to BDD (with Cucumber)
The LAZY Developer's Guide to BDD (with Cucumber)The LAZY Developer's Guide to BDD (with Cucumber)
The LAZY Developer's Guide to BDD (with Cucumber)
Tze Yang Ng
 
Behavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile TestingBehavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile Testingdversaci
 
CUCUMBER - Making BDD Fun
CUCUMBER - Making BDD FunCUCUMBER - Making BDD Fun
CUCUMBER - Making BDD Fun
SQABD
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
Nalin Goonawardana
 
WE are Doing it Wrong - Dmitry Sharkov
WE are Doing it Wrong - Dmitry SharkovWE are Doing it Wrong - Dmitry Sharkov
WE are Doing it Wrong - Dmitry Sharkov
QA or the Highway
 
Cucumber
CucumberCucumber
Cucumber
Bachue Zhou
 
Continuous integration in large programs
Continuous integration in large programsContinuous integration in large programs
Continuous integration in large programs
Naveen Kumar Singh
 
Cucumber From the Ground Up - Joseph Beale
Cucumber From the Ground Up - Joseph BealeCucumber From the Ground Up - Joseph Beale
Cucumber From the Ground Up - Joseph Beale
QA or the Highway
 
Introduction to Bdd and cucumber
Introduction to Bdd and cucumberIntroduction to Bdd and cucumber
Introduction to Bdd and cucumber
Nibu Baby
 
Behavior-Driven Development and Automation Testing Using Cucumber Framework W...
Behavior-Driven Development and Automation Testing Using Cucumber Framework W...Behavior-Driven Development and Automation Testing Using Cucumber Framework W...
Behavior-Driven Development and Automation Testing Using Cucumber Framework W...
KMS Technology
 
Behavior Driven Development with Cucumber
Behavior Driven Development with CucumberBehavior Driven Development with Cucumber
Behavior Driven Development with CucumberBrandon Keepers
 
Behavior Driven Testing - A paradigm shift
Behavior Driven Testing - A paradigm shiftBehavior Driven Testing - A paradigm shift
Behavior Driven Testing - A paradigm shift
Aspire Systems
 
Cucumber ppt
Cucumber pptCucumber ppt
Cucumber ppt
Qwinix Technologies
 
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Gáspár Nagy
 
Scrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - ColomboScrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - Colombo
Naveen Kumar Singh
 
Behavior Driven Development Testing (BDD)
Behavior Driven Development Testing (BDD)Behavior Driven Development Testing (BDD)
Behavior Driven Development Testing (BDD)
Dignitas Digital Pvt. Ltd.
 
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
Rhoynar Software Consulting
 
Jumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIO
Jumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIOJumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIO
Jumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIO
Josh Cypher
 
Practicing Agile through Scrum
Practicing Agile through ScrumPracticing Agile through Scrum
Practicing Agile through Scrum
Naveen Kumar Singh
 
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovygreach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
Jessie Evangelista
 

What's hot (20)

The LAZY Developer's Guide to BDD (with Cucumber)
The LAZY Developer's Guide to BDD (with Cucumber)The LAZY Developer's Guide to BDD (with Cucumber)
The LAZY Developer's Guide to BDD (with Cucumber)
 
Behavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile TestingBehavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile Testing
 
CUCUMBER - Making BDD Fun
CUCUMBER - Making BDD FunCUCUMBER - Making BDD Fun
CUCUMBER - Making BDD Fun
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
 
WE are Doing it Wrong - Dmitry Sharkov
WE are Doing it Wrong - Dmitry SharkovWE are Doing it Wrong - Dmitry Sharkov
WE are Doing it Wrong - Dmitry Sharkov
 
Cucumber
CucumberCucumber
Cucumber
 
Continuous integration in large programs
Continuous integration in large programsContinuous integration in large programs
Continuous integration in large programs
 
Cucumber From the Ground Up - Joseph Beale
Cucumber From the Ground Up - Joseph BealeCucumber From the Ground Up - Joseph Beale
Cucumber From the Ground Up - Joseph Beale
 
Introduction to Bdd and cucumber
Introduction to Bdd and cucumberIntroduction to Bdd and cucumber
Introduction to Bdd and cucumber
 
Behavior-Driven Development and Automation Testing Using Cucumber Framework W...
Behavior-Driven Development and Automation Testing Using Cucumber Framework W...Behavior-Driven Development and Automation Testing Using Cucumber Framework W...
Behavior-Driven Development and Automation Testing Using Cucumber Framework W...
 
Behavior Driven Development with Cucumber
Behavior Driven Development with CucumberBehavior Driven Development with Cucumber
Behavior Driven Development with Cucumber
 
Behavior Driven Testing - A paradigm shift
Behavior Driven Testing - A paradigm shiftBehavior Driven Testing - A paradigm shift
Behavior Driven Testing - A paradigm shift
 
Cucumber ppt
Cucumber pptCucumber ppt
Cucumber ppt
 
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
 
Scrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - ColomboScrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - Colombo
 
Behavior Driven Development Testing (BDD)
Behavior Driven Development Testing (BDD)Behavior Driven Development Testing (BDD)
Behavior Driven Development Testing (BDD)
 
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
 
Jumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIO
Jumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIOJumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIO
Jumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIO
 
Practicing Agile through Scrum
Practicing Agile through ScrumPracticing Agile through Scrum
Practicing Agile through Scrum
 
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovygreach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
 

Viewers also liked

Introduction to BDD with Cucumber for Java
Introduction to BDD with Cucumber for JavaIntroduction to BDD with Cucumber for Java
Introduction to BDD with Cucumber for Java
Seb Rose
 
Kvalitetssikring i et highperformance team
Kvalitetssikring i et highperformance teamKvalitetssikring i et highperformance team
Kvalitetssikring i et highperformance team
Niels Frydenholm
 
Testing with Rspec 3
Testing with Rspec 3Testing with Rspec 3
Testing with Rspec 3
David Paluy
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
Enrique Sánchez-Bayuela
 
Monitoring web application behaviour with cucumber-nagios
Monitoring web application behaviour with cucumber-nagiosMonitoring web application behaviour with cucumber-nagios
Monitoring web application behaviour with cucumber-nagios
Lindsay Holmwood
 
Rspec 101
Rspec 101Rspec 101
Rspec 101
Jason Noble
 
Pivotal tracker presentation 10-13-2010
Pivotal tracker presentation   10-13-2010Pivotal tracker presentation   10-13-2010
Pivotal tracker presentation 10-13-2010
pivotjoe
 
Pivotal Tracker Overview
Pivotal Tracker OverviewPivotal Tracker Overview
Pivotal Tracker Overview
Dan Podsedly
 
Pivotal Tracker - Quick Start Guide
Pivotal Tracker - Quick Start GuidePivotal Tracker - Quick Start Guide
Pivotal Tracker - Quick Start GuideAmit Ranjan
 
Git Branching Model
Git Branching ModelGit Branching Model
Git Branching Model
Harun Yardımcı
 
Test Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and MochaTest Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and Mocha
Salesforce Developers
 
Agile, the Pivotal way
Agile, the Pivotal wayAgile, the Pivotal way
Agile, the Pivotal way
James Chan
 
Testing Ruby with Rspec (a beginner's guide)
Testing Ruby with Rspec (a beginner's guide)Testing Ruby with Rspec (a beginner's guide)
Testing Ruby with Rspec (a beginner's guide)
Vysakh Sreenivasan
 
RSpec on Rails Tutorial
RSpec on Rails TutorialRSpec on Rails Tutorial
RSpec on Rails Tutorial
Wen-Tien Chang
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...
Niels Frydenholm
 
Test automation with Cucumber-JVM
Test automation with Cucumber-JVMTest automation with Cucumber-JVM
Test automation with Cucumber-JVM
Alan Parkinson
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using Git
Geoff Hoffman
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
HubSpot
 
Quick Introduction to git
Quick Introduction to gitQuick Introduction to git
Quick Introduction to gitJoel Krebs
 

Viewers also liked (20)

Introduction to BDD with Cucumber for Java
Introduction to BDD with Cucumber for JavaIntroduction to BDD with Cucumber for Java
Introduction to BDD with Cucumber for Java
 
Kvalitetssikring i et highperformance team
Kvalitetssikring i et highperformance teamKvalitetssikring i et highperformance team
Kvalitetssikring i et highperformance team
 
Cucumber jvm
Cucumber jvmCucumber jvm
Cucumber jvm
 
Testing with Rspec 3
Testing with Rspec 3Testing with Rspec 3
Testing with Rspec 3
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 
Monitoring web application behaviour with cucumber-nagios
Monitoring web application behaviour with cucumber-nagiosMonitoring web application behaviour with cucumber-nagios
Monitoring web application behaviour with cucumber-nagios
 
Rspec 101
Rspec 101Rspec 101
Rspec 101
 
Pivotal tracker presentation 10-13-2010
Pivotal tracker presentation   10-13-2010Pivotal tracker presentation   10-13-2010
Pivotal tracker presentation 10-13-2010
 
Pivotal Tracker Overview
Pivotal Tracker OverviewPivotal Tracker Overview
Pivotal Tracker Overview
 
Pivotal Tracker - Quick Start Guide
Pivotal Tracker - Quick Start GuidePivotal Tracker - Quick Start Guide
Pivotal Tracker - Quick Start Guide
 
Git Branching Model
Git Branching ModelGit Branching Model
Git Branching Model
 
Test Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and MochaTest Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and Mocha
 
Agile, the Pivotal way
Agile, the Pivotal wayAgile, the Pivotal way
Agile, the Pivotal way
 
Testing Ruby with Rspec (a beginner's guide)
Testing Ruby with Rspec (a beginner's guide)Testing Ruby with Rspec (a beginner's guide)
Testing Ruby with Rspec (a beginner's guide)
 
RSpec on Rails Tutorial
RSpec on Rails TutorialRSpec on Rails Tutorial
RSpec on Rails Tutorial
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...
 
Test automation with Cucumber-JVM
Test automation with Cucumber-JVMTest automation with Cucumber-JVM
Test automation with Cucumber-JVM
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using Git
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
 
Quick Introduction to git
Quick Introduction to gitQuick Introduction to git
Quick Introduction to git
 

Similar to Behavior driven development - cucumber, Junit and java

Automated agile testing using Cucumber
Automated agile testing using CucumberAutomated agile testing using Cucumber
Automated agile testing using Cucumber
Naveen Kumar Singh
 
PMI-ACP Lesson 06 Quality
PMI-ACP Lesson 06 QualityPMI-ACP Lesson 06 Quality
PMI-ACP Lesson 06 Quality
Thanh Nguyen
 
Delivering Applications Continuously to Cloud
Delivering Applications Continuously to CloudDelivering Applications Continuously to Cloud
Delivering Applications Continuously to Cloud
IBM UrbanCode Products
 
Launch Academy Introduction to Lean UX Workshop - February 2014
Launch Academy Introduction to Lean UX Workshop - February 2014Launch Academy Introduction to Lean UX Workshop - February 2014
Launch Academy Introduction to Lean UX Workshop - February 2014Marc Baumgartner
 
Webinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
Webinar-From user stories to automated acceptance tests with BDD-Eduardo RiolWebinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
Webinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
atSistemas
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
nikhil sreeni
 
Cloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team ServicesCloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team Services
Martin Hinshelwood
 
DevOps and Application Delivery for Hybrid Cloud - DevOpsSummit session
DevOps and Application Delivery for Hybrid Cloud  - DevOpsSummit sessionDevOps and Application Delivery for Hybrid Cloud  - DevOpsSummit session
DevOps and Application Delivery for Hybrid Cloud - DevOpsSummit session
Sanjeev Sharma
 
Selling (and Managing) Agile Contracts
Selling (and Managing) Agile ContractsSelling (and Managing) Agile Contracts
Selling (and Managing) Agile Contracts
Paul Eisenberg
 
Continuous everything
Continuous everythingContinuous everything
Continuous everything
TEST Huddle
 
Four pillars of DevOps - John Shaw - Agile Cambridge 2014
Four pillars of DevOps - John Shaw - Agile Cambridge 2014Four pillars of DevOps - John Shaw - Agile Cambridge 2014
Four pillars of DevOps - John Shaw - Agile Cambridge 2014
johnfcshaw
 
How Custom is your Org? CEER at Dreamforce 2019
How Custom is your Org?  CEER at Dreamforce 2019How Custom is your Org?  CEER at Dreamforce 2019
How Custom is your Org? CEER at Dreamforce 2019
Steven Herod
 
BDD Selenium for Agile Teams - User Stories
BDD Selenium for Agile Teams - User StoriesBDD Selenium for Agile Teams - User Stories
BDD Selenium for Agile Teams - User Stories
Sauce Labs
 
Specification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber ImplementationSpecification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber Implementation
TechWell
 
PureApp Presentation
PureApp PresentationPureApp Presentation
PureApp Presentation
Prolifics
 
Expo qa from user stories to automated acceptance tests with bdd
Expo qa   from user stories to automated acceptance tests with bddExpo qa   from user stories to automated acceptance tests with bdd
Expo qa from user stories to automated acceptance tests with bdd
Eduardo Riol
 
Testing microservices, contract testing
Testing microservices, contract testingTesting microservices, contract testing
Testing microservices, contract testing
Daria Golub
 
I Love APIs 2015: End to End Testing: Bug Squashing for Developers
I Love APIs 2015: End to End Testing: Bug Squashing for DevelopersI Love APIs 2015: End to End Testing: Bug Squashing for Developers
I Love APIs 2015: End to End Testing: Bug Squashing for Developers
Apigee | Google Cloud
 

Similar to Behavior driven development - cucumber, Junit and java (20)

Automated agile testing using Cucumber
Automated agile testing using CucumberAutomated agile testing using Cucumber
Automated agile testing using Cucumber
 
PMI-ACP Lesson 06 Quality
PMI-ACP Lesson 06 QualityPMI-ACP Lesson 06 Quality
PMI-ACP Lesson 06 Quality
 
Delivering Applications Continuously to Cloud
Delivering Applications Continuously to CloudDelivering Applications Continuously to Cloud
Delivering Applications Continuously to Cloud
 
Launch Academy Introduction to Lean UX Workshop - February 2014
Launch Academy Introduction to Lean UX Workshop - February 2014Launch Academy Introduction to Lean UX Workshop - February 2014
Launch Academy Introduction to Lean UX Workshop - February 2014
 
Webinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
Webinar-From user stories to automated acceptance tests with BDD-Eduardo RiolWebinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
Webinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Cloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team ServicesCloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team Services
 
Cucumber_Training_ForQA
Cucumber_Training_ForQACucumber_Training_ForQA
Cucumber_Training_ForQA
 
DevOps and Application Delivery for Hybrid Cloud - DevOpsSummit session
DevOps and Application Delivery for Hybrid Cloud  - DevOpsSummit sessionDevOps and Application Delivery for Hybrid Cloud  - DevOpsSummit session
DevOps and Application Delivery for Hybrid Cloud - DevOpsSummit session
 
Selling (and Managing) Agile Contracts
Selling (and Managing) Agile ContractsSelling (and Managing) Agile Contracts
Selling (and Managing) Agile Contracts
 
Continuous everything
Continuous everythingContinuous everything
Continuous everything
 
Four pillars of DevOps - John Shaw - Agile Cambridge 2014
Four pillars of DevOps - John Shaw - Agile Cambridge 2014Four pillars of DevOps - John Shaw - Agile Cambridge 2014
Four pillars of DevOps - John Shaw - Agile Cambridge 2014
 
How Custom is your Org? CEER at Dreamforce 2019
How Custom is your Org?  CEER at Dreamforce 2019How Custom is your Org?  CEER at Dreamforce 2019
How Custom is your Org? CEER at Dreamforce 2019
 
BDD Selenium for Agile Teams - User Stories
BDD Selenium for Agile Teams - User StoriesBDD Selenium for Agile Teams - User Stories
BDD Selenium for Agile Teams - User Stories
 
Nazeer Resume
Nazeer ResumeNazeer Resume
Nazeer Resume
 
Specification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber ImplementationSpecification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber Implementation
 
PureApp Presentation
PureApp PresentationPureApp Presentation
PureApp Presentation
 
Expo qa from user stories to automated acceptance tests with bdd
Expo qa   from user stories to automated acceptance tests with bddExpo qa   from user stories to automated acceptance tests with bdd
Expo qa from user stories to automated acceptance tests with bdd
 
Testing microservices, contract testing
Testing microservices, contract testingTesting microservices, contract testing
Testing microservices, contract testing
 
I Love APIs 2015: End to End Testing: Bug Squashing for Developers
I Love APIs 2015: End to End Testing: Bug Squashing for DevelopersI Love APIs 2015: End to End Testing: Bug Squashing for Developers
I Love APIs 2015: End to End Testing: Bug Squashing for Developers
 

More from Naveen Kumar Singh

Is scrum master an agile coach
Is scrum master an agile coachIs scrum master an agile coach
Is scrum master an agile coach
Naveen Kumar Singh
 
Scrum + Kanban - why and why not mix together
Scrum + Kanban - why and why not mix togetherScrum + Kanban - why and why not mix together
Scrum + Kanban - why and why not mix together
Naveen Kumar Singh
 
Requirement management in agile software development
Requirement management in agile software developmentRequirement management in agile software development
Requirement management in agile software development
Naveen Kumar Singh
 
Sprint planning dos and don'ts presentation by Agilemania
Sprint planning   dos and don'ts presentation by AgilemaniaSprint planning   dos and don'ts presentation by Agilemania
Sprint planning dos and don'ts presentation by Agilemania
Naveen Kumar Singh
 
The scrum master
The scrum master The scrum master
The scrum master
Naveen Kumar Singh
 
ScrumOps - Scrum + Practical DevOps
ScrumOps - Scrum + Practical DevOpsScrumOps - Scrum + Practical DevOps
ScrumOps - Scrum + Practical DevOps
Naveen Kumar Singh
 
Scrum plus – why scrum is not enough for successful delivery
Scrum plus – why scrum is not enough for successful deliveryScrum plus – why scrum is not enough for successful delivery
Scrum plus – why scrum is not enough for successful delivery
Naveen Kumar Singh
 
Practical DevOps
Practical DevOpsPractical DevOps
Practical DevOps
Naveen Kumar Singh
 
Explore Events of Scrum Framework
Explore Events of Scrum FrameworkExplore Events of Scrum Framework
Explore Events of Scrum Framework
Naveen Kumar Singh
 
ICAgile Certified Professional - Foundation of DevOps
ICAgile Certified Professional - Foundation of DevOps ICAgile Certified Professional - Foundation of DevOps
ICAgile Certified Professional - Foundation of DevOps
Naveen Kumar Singh
 
Agile Testing and Test Automation
Agile Testing and Test AutomationAgile Testing and Test Automation
Agile Testing and Test Automation
Naveen Kumar Singh
 
Role of Manager in LeSS (Large-Scale Scrum)
Role of Manager in LeSS (Large-Scale Scrum)Role of Manager in LeSS (Large-Scale Scrum)
Role of Manager in LeSS (Large-Scale Scrum)
Naveen Kumar Singh
 
Behavior driven development - Deliver Value by Collaboration
Behavior driven development - Deliver Value by CollaborationBehavior driven development - Deliver Value by Collaboration
Behavior driven development - Deliver Value by Collaboration
Naveen Kumar Singh
 
LeSS - Moving beyond single team scrum
LeSS - Moving beyond single team scrumLeSS - Moving beyond single team scrum
LeSS - Moving beyond single team scrum
Naveen Kumar Singh
 
Descaling through LeSS (Large-Scale Scrum)
Descaling through LeSS (Large-Scale Scrum)Descaling through LeSS (Large-Scale Scrum)
Descaling through LeSS (Large-Scale Scrum)
Naveen Kumar Singh
 
Scrumban – lean software development
Scrumban – lean software developmentScrumban – lean software development
Scrumban – lean software development
Naveen Kumar Singh
 
Test Driven Development presentation delhi meetup
Test Driven Development presentation delhi meetupTest Driven Development presentation delhi meetup
Test Driven Development presentation delhi meetup
Naveen Kumar Singh
 
Business intelligence - Microsoft Technologies
Business intelligence - Microsoft TechnologiesBusiness intelligence - Microsoft Technologies
Business intelligence - Microsoft TechnologiesNaveen Kumar Singh
 

More from Naveen Kumar Singh (20)

Is scrum master an agile coach
Is scrum master an agile coachIs scrum master an agile coach
Is scrum master an agile coach
 
Scrum + Kanban - why and why not mix together
Scrum + Kanban - why and why not mix togetherScrum + Kanban - why and why not mix together
Scrum + Kanban - why and why not mix together
 
Requirement management in agile software development
Requirement management in agile software developmentRequirement management in agile software development
Requirement management in agile software development
 
Sprint planning dos and don'ts presentation by Agilemania
Sprint planning   dos and don'ts presentation by AgilemaniaSprint planning   dos and don'ts presentation by Agilemania
Sprint planning dos and don'ts presentation by Agilemania
 
The scrum master
The scrum master The scrum master
The scrum master
 
ScrumOps - Scrum + Practical DevOps
ScrumOps - Scrum + Practical DevOpsScrumOps - Scrum + Practical DevOps
ScrumOps - Scrum + Practical DevOps
 
Scrum plus – why scrum is not enough for successful delivery
Scrum plus – why scrum is not enough for successful deliveryScrum plus – why scrum is not enough for successful delivery
Scrum plus – why scrum is not enough for successful delivery
 
Practical DevOps
Practical DevOpsPractical DevOps
Practical DevOps
 
Explore Events of Scrum Framework
Explore Events of Scrum FrameworkExplore Events of Scrum Framework
Explore Events of Scrum Framework
 
ICAgile Certified Professional - Foundation of DevOps
ICAgile Certified Professional - Foundation of DevOps ICAgile Certified Professional - Foundation of DevOps
ICAgile Certified Professional - Foundation of DevOps
 
Agile Testing and Test Automation
Agile Testing and Test AutomationAgile Testing and Test Automation
Agile Testing and Test Automation
 
Role of Manager in LeSS (Large-Scale Scrum)
Role of Manager in LeSS (Large-Scale Scrum)Role of Manager in LeSS (Large-Scale Scrum)
Role of Manager in LeSS (Large-Scale Scrum)
 
Behavior driven development - Deliver Value by Collaboration
Behavior driven development - Deliver Value by CollaborationBehavior driven development - Deliver Value by Collaboration
Behavior driven development - Deliver Value by Collaboration
 
SPS
SPSSPS
SPS
 
PSE
PSEPSE
PSE
 
LeSS - Moving beyond single team scrum
LeSS - Moving beyond single team scrumLeSS - Moving beyond single team scrum
LeSS - Moving beyond single team scrum
 
Descaling through LeSS (Large-Scale Scrum)
Descaling through LeSS (Large-Scale Scrum)Descaling through LeSS (Large-Scale Scrum)
Descaling through LeSS (Large-Scale Scrum)
 
Scrumban – lean software development
Scrumban – lean software developmentScrumban – lean software development
Scrumban – lean software development
 
Test Driven Development presentation delhi meetup
Test Driven Development presentation delhi meetupTest Driven Development presentation delhi meetup
Test Driven Development presentation delhi meetup
 
Business intelligence - Microsoft Technologies
Business intelligence - Microsoft TechnologiesBusiness intelligence - Microsoft Technologies
Business intelligence - Microsoft Technologies
 

Recently uploaded

Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
ShamsuddeenMuhammadA
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Yara Milbes
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 

Recently uploaded (20)

Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 

Behavior driven development - cucumber, Junit and java

  • 1. © 2014 Leanpitch | CONFIDENTIAL Behavior Driven Development Naveen Kumar Singh CSP, PMI-ACP, CSM, PMP
  • 2. © 2014 Leanpitch | CONFIDENTIAL Agenda User Story TDD, ATDD, and BDD BDD in Details BDD in Action Why Cucumber?
  • 3. © 2014 Leanpitch | CONFIDENTIAL User Story
  • 4. © 2014 Leanpitch | CONFIDENTIAL User Story • Product: Groceries Billing System • Stories • As an account I want to calculate bills of groceries purchased by customer so that I can generate invoice. • As an account I want to update groceries rates so that bills reflect correct rate • As an account I want to issue discount coupon so I can give to customer to redeem next time.
  • 5. © 2014 Leanpitch | CONFIDENTIAL Acceptance Criteria What to check at the end of development? Ordered Pizza online, then Pizza get delivered at home or confirmation mail in your inbox
  • 6. © 2014 Leanpitch | CONFIDENTIAL Acceptance Testing Making sure the software works correctly for the intended user in his or her normal work environment. • Alpha test • Version of the complete software is tested by the customer under the supervision of the developer at the developer’s site • Beta test • Version of the complete software is tested by the customer at his or her own site without the developer being present
  • 7. © 2014 Leanpitch | CONFIDENTIAL TDD, ATDD, and BDD
  • 8. © 2014 Leanpitch | CONFIDENTIAL ATDD BDD TDD
  • 9. © 2014 Leanpitch | CONFIDENTIAL Acceptance/Customer Test Driven Development Acceptance Test-Driven Development (ATDD) is a development methodology based on communication between the business customers, the developers, and the testers. ATDD encompasses many of the same practices as Specification by Example, Behavior Driven Development (BDD), Example-Driven Development (EDD), and Story Test-Driven Development (SDD). All these process aid developers and testers in understanding the customer’s needs prior to implementation and allow customers to be able to converse in their own domain language.
  • 10. © 2014 Leanpitch | CONFIDENTIAL ATDD Advantage Close collaboration Seeing concrete, working software Building trust and confidence Customer in control Evolving a shared language Tests as a shared language Tests as specification Specification by example
  • 11. © 2014 Leanpitch | CONFIDENTIAL ATDD Test Format Scenario: Send email Given that a web based email module has been developed And I am accessing it with proper authentication When I shall write the sender email address in To field And keeping the subject field non empty And write something in the body text area which accepts rich text And press or click send button Then my email will be sent And the event will be logged in the log file.
  • 12. © 2014 Leanpitch | CONFIDENTIAL BDD in Details
  • 13. © 2014 Leanpitch | CONFIDENTIAL Behaviour Driven Development (BDD) 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
  • 14. © 2014 Leanpitch | CONFIDENTIAL BDD Given- Set of preconditions Then-Some testable outcome When-When a event occurs
  • 15. © 2014 Leanpitch | CONFIDENTIAL BDD Features • A testable story (it should be the smallest unit that fits in an iteration) • The title should describe an activity • The narrative should include a role, a feature, and a benefit • The scenario title should say what's different • The scenario should be described in terms of Givens, Events, and Outcomes • The givens should define all of, and no more than, the required context • The event should describe the feature
  • 16. © 2014 Leanpitch | CONFIDENTIAL BDD Cycle Add Test Test Fail Code Rerun Test Refactor
  • 17. © 2014 Leanpitch | CONFIDENTIAL BDD Example Story: Returns go to stock In order to keep track of stock As a store owner I want to add items back to stock when they're returned
  • 18. © 2014 Leanpitch | CONFIDENTIAL BDD Example Scenario 1: Refunded items should be returned to stock Given a customer previously bought a black sweater from me And I currently have three black sweaters left in stock When he returns the sweater for a refund Then I should have four black sweaters in stock
  • 19. © 2014 Leanpitch | CONFIDENTIAL BDD Example Scenario 2: Replaced items should be returned to stock Given that a customer buys a blue garment And I have two blue garments in stock And three black garments in stock. When he returns the garment for a replacement in black, Then I should have three blue garments in stock And two black garments in stock
  • 20. © 2014 Leanpitch | CONFIDENTIAL Tools ATDD FitNesse Spectacular Concordian Thucydides BDD SpecFlow Cucumber JBehave NBehave Behat TDD JUnit NUnit TestNG MSTest
  • 21. © 2014 Leanpitch | CONFIDENTIAL BDD is an Agile Process BDD encourages collaboration between developers, QA and non-technical or business participants in a software project.
  • 22. © 2014 Leanpitch | CONFIDENTIAL BDD in Action
  • 23. © 2014 Leanpitch | CONFIDENTIAL BDD Classroom Exercise-GOAL Write BDD code to calculate Groceries Bills
  • 24. © 2014 Leanpitch | CONFIDENTIAL BDD Classroom Exercise-Feature File #encoding: utf-8 Feature: Checkout In order to calculate price of groceries As a Store Staff I should be able to calculate price for groceries during checkout Scenario: Checkout a banana Given The price of a “Banana” is $5 When I checkout 1 “Banana” Then the total price should be $5
  • 25. © 2014 Leanpitch | CONFIDENTIAL BDD Classroom Exercise-Add Test Runner Class package test.java; import org.junit.runner.RunWith; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions(features = "src/test/resources") public class testrunner { }
  • 26. © 2014 Leanpitch | CONFIDENTIAL BDD Classroom Exercise-Run BDD Scenarios 1 Scenarios ([33m1 undefined[0m) 3 Steps ([33m3 undefined[0m) 0m0.000s You can implement missing steps with the snippets below: @Given("^The price of a "([^"]*)" is $(d+)$") public void The_price_of_a_is_$(String arg1, int arg2) throws Throwable { // Express the Regexp above with the code you wish you had throw new PendingException(); } @When("^I checkout (d+) "([^"]*)"$") public void I_checkout(int arg1, String arg2) throws Throwable { // Express the Regexp above with the code you wish you had throw new PendingException(); } @Then("^the total price should be $(d+)$") public void the_total_price_should_be_$(int arg1) throws Throwable { // Express the Regexp above with the code you wish you had throw new PendingException(); }
  • 27. © 2014 Leanpitch | CONFIDENTIAL BDD Classroom Exercise-Add Test Step public class teststeps { @Given("^The price of a "([^"]*)" is $(d+)$") public void The_price_of_a_is_$(String arg1, int arg2) throws Throwable { // Express the Regexp above with the code you wish you had throw new PendingException(); } @When("^I checkout (d+) "([^"]*)"$") public void I_checkout(int arg1, String arg2) throws Throwable { // Express the Regexp above with the code you wish you had throw new PendingException(); } @Then("^the total price should be $(d+)$") public void the_total_price_should_be_$(int arg1) throws Throwable { // Express the Regexp above with the code you wish you had throw new PendingException(); } }
  • 28. © 2014 Leanpitch | CONFIDENTIAL BDD Classroom Exercise-Add Required Functionality and Test Scenarios public class teststeps extends TestCase { String product; int rate, qty; @Given("^The price of a "([^"]*)" is $(d+)$") public void The_price_of_a_is_$(String arg1, int arg2) throws Throwable { product = arg1; rate = arg2; } @When("^I checkout (d+) "([^"]*)"$") public void I_checkout(int arg1, String arg2) throws Throwable { qty=arg1; } @Then("^the total price should be $(d+)$") public void the_total_price_should_be_$(int arg1) throws Throwable { if(product.equals("Banana")) assertEquals(arg1, rate*qty); } }
  • 29. © 2014 Leanpitch | CONFIDENTIAL BDD Classroom Exercise-Run Scenarios Again
  • 30. © 2014 Leanpitch | CONFIDENTIAL Why Cucumber?
  • 31. © 2014 Leanpitch | CONFIDENTIAL Cucumber Cucumber was originally created as a command-line tool by members of the Ruby community. It has since been translated into several different development environments, including Java, to allow more of us to enjoy its benefits. When you run Cucumber, it reads in your specifications from plain- language text files called features, examines them for scenarios to test, and runs the scenarios against your system. Each scenario is a list of steps for Cucumber to work through. So that Cucumber can understand these feature files, they must follow some basic syntax rules. The name for this set of rules is Gherkin.
  • 32. © 2014 Leanpitch | CONFIDENTIAL Cucumber Along with the features, you give Cucumber a set of step definitions, which map the business-readable language of each step into code to carry out whatever action is being described by the step. In a mature test suite, the step definition itself will probably just be one or two lines of code that delegate to a library of support code, specific to the domain of your application, that knows how to carry out common tasks on the system. Sometimes that may involve using an automation library, like the browser automation library Selenium, to interact with the system itself.
  • 33. © 2014 Leanpitch | CONFIDENTIAL Cucumber Your Project Features Scenarios Steps Your System Automation Library Support Code Step Definitions Technology Facing Business Facing
  • 34. © 2014 Leanpitch | CONFIDENTIAL Cucumber
  • 35. © 2014 Leanpitch | CONFIDENTIAL Gherkin-Keywords A Gherkin file is given its structure and meaning using a set of special keywords. There’s an equivalent set of these keywords in each of the supported spoken languages, but for now let’s take a look at the English ones: • Feature • Background • Scenario • Given • When • Then • And • But • * • Scenario Outline • Examples
  • 36. © 2014 Leanpitch | CONFIDENTIAL Gherkin- Background Feature: Feedback when entering invalid credit card details In user testing we've seen a lot of people who made mistakes entering their credit card. We need to be as helpful as possible here to avoid losing users at this crucial stage of the transaction. Background: Given I have chosen some items to buy And I am about to enter my credit card details Scenario: Credit card number too short When I enter a card number that's only 15 digits long And all the other details are correct And I submit the form Then the form should be redisplayed And I should see a message advising me of the correct number of digits
  • 37. © 2014 Leanpitch | CONFIDENTIAL Gherkin- Multiple AND Scenario: Expiry date invalid When I enter a card expiry date that's in the past And all the other details are correct And I submit the form Then the form should be redisplayed And I should see a message telling me the expiry date must be wrong
  • 38. © 2014 Leanpitch | CONFIDENTIAL Gherkin- Replacing Given/When/Then with Bullets Some people find Given, When, Then, And, and But a little verbose. There is an additional keyword you can use to start a step: * (an asterisk). We could have written the previous scenario like this: Scenario: Attempt withdrawal using stolen card * I have $100 in my account * my card is invalid * I request $50 * my card should not be returned * I should be told to contact the bank To Cucumber, this is exactly the same scenario. Do you find this version easier to read? Maybe. Did some of the meaning get lost? Maybe. It’s up to you and your team how you want to word things. The only thing that matters is that everybody understands what’s communicated.
  • 39. © 2014 Leanpitch | CONFIDENTIAL Gherkin- Comments # This feature covers the account transaction and hardware-driver modules Feature: Withdraw Cash In order to buy beer As an account holder I want to withdraw cash from the ATM # Can't figure out how to integrate with magic wand interface Scenario: Withdraw too much from an account in credit Given I have $50 in my account # When I wave my magic wand And I withdraw $100 Then I should receive $100
  • 40. © 2014 Leanpitch | CONFIDENTIAL Gherkin- Doc Strings Doc strings just allow you to specify a larger piece of text than you could fit on a single line. For example, if you need to describe the precise content of an email message, you could do it like this: Scenario: Ban Unscrupulous Users When I behave unscrupulously Then I should receive an email containing: """ Dear Sir, Your account privileges have been revoked due to your unscrupulous behavior. Sincerely, The Management """ And my account should be locked
  • 41. © 2014 Leanpitch | CONFIDENTIAL Cucumber- Step Definitions In Cucumber, results are a little more sophisticated than a simple pass or fail. A scenario that’s been executed can end up in any of the following states: • Failed • Pending • Undefined • Skipped • Passed These states are designed to help indicate the progress that you make as you develop your tests.
  • 42. © 2014 Leanpitch | CONFIDENTIAL Cucumber- Step Definitions Failed – During execution based on Assert Passed – During execution based on Assert Pending – Pending exception Undefined – Steps are missing in step file Skipped – All pending and undefined
  • 43. © 2014 Leanpitch | CONFIDENTIAL Cucumber- Step Definitions Element Purpose Default dryRun true (Skip execution of glue code) False strict true (will fail execution if there are undefined or pending steps) False glue where to look for glue code (stepdefs and hooks) {} features the paths to the feature(s) False monochrome whether or not to use monochrome output False format what formatter(s) to use {} tags hat tags in the features should be executed {}
  • 44. © 2014 Leanpitch | CONFIDENTIAL Cucumber- Step Definitions @CucumberOptions( dryRun = false, strict = true, features = "src/test/features/com/sample", glue = "com.sample", tags = { "~@wip", "@executeThis" }, monochrome = true, format = {"pretty", "html:target/cucumber", "json:target_json/cucumber.json", "junit:taget_junit/cucumber.xml“ } )
  • 45. © 2014 Leanpitch | CONFIDENTIAL Cucumber- Step Definitions dryRun: if dryRun option is set to true then cucumber only checks if all the steps have their corresponding step definitions defined or not. The code mentioned in the Step definitions is not executed. This is used just to validate if we have defined a step definition for each step or not. Strict: if strict option is set to false then at execution time if cucumber encounters any undefined/pending steps then cucumber does not fail the execution and undefined steps are skipped and BUILD is SUCCESSFUL. Monochrome: if monochrome option is set to False, then the console output is not as readable as it should be. may be the output images will make this more clear.
  • 46. © 2014 Leanpitch | CONFIDENTIAL Cucumber- Regular Expression Step definitions use regular expressions to declare the steps that they can handle. Because regular expressions can contain wildcards, one step definition can handle several different steps.
  • 47. © 2014 Leanpitch | CONFIDENTIAL
  • 48. © 2014 Leanpitch | CONFIDENTIAL Our Upcoming CSD Training – Please check Scrum Alliance Please Reach out to US scrum@leanpitch.com +91 9902377677
  • 49. © 2014 Leanpitch | CONFIDENTIAL Naveen Kumar Singh Naveen.singh@Leanpitch.com Agile Coach http://in.linkedin.com/in/naveenkumarsingh1 Twitter - @naveenhome