This is the presentation for the "Gauge your BDD Tests" automation testing workshop conducted at vodQA Hyderabad 2015 in ThoughtWorks Hyderabad office.
4. What is TDD?
Test-driven development (TDD) is a technique for
building software that guides software development by
writing tests first.
- Martin Fowler
5. TDD (Contd…)
● Req: Calculation engine to be able to add 2 numbers
● Tests
○ @Test
shouldAddPositiveNumbers() {
assertEquals(calculator.add(1, 2), 3);
}
○ @Test
shouldAddNegativeNumbers() {
assertEquals(calculator.add(-1, -2), -3);
}
○ @Test
shouldAddNumbersInWords(){
assertEquals(calculator.add(“one”, “two”), 3);
}
7. When asked what is BDD
● It’s just TDD right?
● That Given-When-Then thing
● Business driven development
● The BA/PO writes the requirements and then the devs
write tests
8. A collaborative way to define what behaviour in a system
should be tested, by using the same language (natural
language) and grammar used to capture the business need.
BDD is...
9. The Requirement
As a [Role]
I want [Feature]
So that I receive [Value]
As an online shopper
I want to search for products
So that I can make buying decision
10. The Test
Given [Context]
When [Event Occurs]
Then [Outcome]
Given that I have logged in
When I search for a product
Then list of related items are displayed
11. A Badly Written Test
Given that I am on the home page
When I click on the “login” link
And I type text “Mahendra” in the “name” text box
And I type “pwd” in the “password” text box
And I click the “login” button
Then I can see my profile
12. A Well Written Test
Given I land on the homepage
When I log into my account with username “Mahendra” and
password “pwd”
Then I am on the “profile” page
13. Another Well Written Test
● Open Home Page
● Login with with username “Mahendra” and password
“pwd”
● “Profile” page is displayed
15. In a tool we want...
● Simplicity
because who doesn’t like simple!!
● Maintainability
because everyone has been on a long running project and we
know it is hell to keep tests working
● Customisability
because we all have our own preferences
● Speed
because we all have that need for speed
16. What if we want to break away from every form of
syntax and write specifications in natural
language?
Like you’d write an email
18. About Gauge
● Open Source
● Simple Markdown syntax
● Multiple Language Support (Java, C#, Ruby)
● First class parallel execution support
● Extensible and Hackable
● IDE support (IntelliJ, VS, Eclipse)
● First class CI / CD integration support