bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take...

37
BDD IN JAVA AND GROOVY speaker.identity { name 'Venkat Subramaniam' company 'Agile Developer, Inc.' credentials 'Programmer', 'Author', 'Trainer' blog 'http://agiledeveloper.com/blog' email '[email protected]' }

Transcript of bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take...

Page 1: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

BDD IN JAVA AND GROOVY

speaker.identity { name 'Venkat Subramaniam' company 'Agile Developer, Inc.' credentials 'Programmer', 'Author', 'Trainer' blog 'http://agiledeveloper.com/blog' email '[email protected]'}

Page 2: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Abstract

In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy.

What's BDD?

Benefits of BDD

Tools for BDD

Creating BDD in Java

Creating BDD in Groovy

2

Page 3: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Essence of AgilityTo create relevant working software

Developing software is hard business

How can you succeed?

Feedback is essential

Two kinds of feedbackCode Meets

Customer’sExpectations

CodeMeetsYour

Expectations

3

Page 4: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Test Driven DevelopmentThe word "Test" in TDD is a bit misleading

It is not about verifying software

It is an approach to developing software by way of writing code that exercises your code

It helps you to

create a lightweight design

express behavior

create a form of highly expressive documentation

Keep an eye on code—to tell you if it begins to fall apart4

Page 5: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Unit Testing: Essential but not Sufficient

Unit Testing is one (but not only) example of TDD

Unit Testing tells us that code's meeting the programmer's expectations

Very important to know the code continues to meet that expectation as software evolves to meet user's expectations

But, how do you know what's the user's expectations?

5

Page 6: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Ways to express User's Expectations

Use cases

User Stories

Agile projects tend to lean towards user stories

Still, how to verify code continues to meet those expectations/requirements?

6

Page 7: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Types of Tests and Levels

Code Meets

Customer’sExpectations

CodeMeetsYour

ExpectationsClasses/Models/...

Controls/Services/...

UI/Presentation/...

UnitTesting

FIT

BDD

SeleniumWatir

Page 8: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Ubiquitous Language

"A language structured around the domain model and used by all team members to connect all the activities of the team with the software"—Domain Driven Design by Eric Evans.

8

Page 9: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Executable DocumentationWe typically express requirements and system behavior in the form of documentation

What if you can actually execute that documentation?

You can show to yourself that the code is meeting the expectations

Helps you to ascertain that code continues to meet those expectations

Enter Behavior Driven Design

Introduced by Dan North9

Page 10: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Behavior Driven Design

It is a TDD approach

It is a ubiquitous language

It is an executable documentation

It promotes communication

Helps develop common vocabulary and metaphor

Help you to get the "words" right

Can be used by programmers, testers, business analysts, domain experts, and customers.

10

Page 11: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Behavior and Story

You can use BDD to express Stories and Behaviors

Story Framework and Spec Framework

Stories correspond to User Stories—to express behavior at application level

Spec or Behavior correspond to expectations at class level—to express behavior at service/component level

These can help express requirements that can be specified, understood, and negotiated by developers, testers, business analysts, and business customers.

11

Page 12: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Behavior

Each behavior is expressed as a test/exercise method

It tells what the object should do

Notice the keyword "should"—that's a main focus in BDD—the shoulds and the shouldn’ts

12

Page 13: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Building StoriesYou may define user stories as a series of acceptance criteria as scenarios

It has the givens, events, and outcomes

That is

Given some initial condition(s),

When event(s) occurs,

Then ensure some outcome(s)

13

Page 14: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Executable Criteria

The specification is specified in a way it is executable

Directly represented in code and used to exercise your application code

14

Page 15: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Tools for BDD

Java - JBehave, JDave, beanSpec, Instinct

easyb

15

Page 16: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

easyb

Started by Andy Glover

Express Story and Spec using Groovy Based Domain Specific Language (DSL)

Highly expressive

Can be used for Java and Groovy applications

16

Page 17: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Writing a StoryA Story file can contain any number of scenarios

Each scenario has three parts: given, when, then

when is optional

17

Use " instead of ' if you want to embed expressions in text

Page 18: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Writing a StoryYou can have more than one of given, when, then

When is optional

18

Page 19: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Expressing Conditions–shouldYou can verify values on any object using one of the following should constructs

19

Page 20: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

ensuring (asserting)You can ensure or assert values using closure syntax

20

add multipleconditionsusing andoperates on value given to ensure

Page 21: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Writing a SpecSpecs/Behaviors start with it

You can have as many of these you like in a Spec

21

Page 22: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Story Example

22

file:money.story

Unintegrated or Pending Story

Page 23: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Running Story

23

On my machine easyb is an alias to“java -classpath ... org.disco.easyb.BehaviorRunner”

You can provide multiple story files to easyb

Page 24: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Fake Integration

24

Page 25: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Integration

25

Page 26: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

AccountService.java

26Obviously a trivial example to get test pass, real

AccountService will be talking to Account(s)

Page 27: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Running Story

27

Page 28: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Let’s Break It

28Fix it and try again

Page 29: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

A Narrative

29

Page 30: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Another Story

30

Page 31: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Running The Two Stories

31

Page 32: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Reports

32

Page 33: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Reports

33

file: stories.txt

Page 34: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Other Options to Run

Ant

Maven

IntelliJ IDEA

Refer to http://www.easyb.org

34

Page 35: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Specifications

35

file: purchaseSoda.specification

Page 36: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Referenceshttp://behavior-driven.org

http://jbehave.org/

http://codeforfun.wordpress.com/gspec/

http://www.easyb.org/

Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans, Addison-Wesley.

36

You can download examples and slides fromhttp://www.agiledeveloper.com - download

Page 37: bdd in java and groovy - Agile Developer · PDF fileAbstract In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What's BDD?

Thank You!Please fill in your session evaluations

37

You can download examples and slides fromhttp://www.agiledeveloper.com - download