BDD - Test Academy Barcelona 2017

19

Transcript of BDD - Test Academy Barcelona 2017

Page 1: BDD - Test Academy Barcelona 2017
Page 2: BDD - Test Academy Barcelona 2017

BDD tips & tricks

Carlos Blé - @carlosble

Page 3: BDD - Test Academy Barcelona 2017

What is your understanding BDD?

Page 4: BDD - Test Academy Barcelona 2017

Build the right product +

Build the product right

Effective requirements gathering techniqueTeam alignment tool

Set of agile engineering practices

Page 5: BDD - Test Academy Barcelona 2017

Problem Domain Vs Solution Domain

Problem

Solution

Solution

Solution

Page 6: BDD - Test Academy Barcelona 2017

Works for usProduct vision - release vision

Short user stories we can develop in two days.

Vertical user stories.- non-explicit technical stuff

Business valuable examples. - no state

Separate acceptance criteria from scenarios.

Deliver new features every week or two weeks.

Page 7: BDD - Test Academy Barcelona 2017

Direct access to each other to ask questions face to face at any time.

Hexagonal Architecture (ports & adapters)

Combine Cucumber with other tools (xUnit, RSpec flavored frameworks)

Mind maps: plan and prioritize

Works for us

Page 8: BDD - Test Academy Barcelona 2017

Specification workshops

Don't focus on automation

Observe the users interact with our software

Meet the users after every release

Works for us

Page 9: BDD - Test Academy Barcelona 2017

What happens with the GUI?UI workshops:

3 Roles: UX, Developer, Analyst

User stories often contain GUI “suggestions” or “guidelines”

GUI should not add unnecessary constraints

Page 10: BDD - Test Academy Barcelona 2017

Examples Vs Acceptance Criteria

Examples helpto understandthe business, and remove ambiguity

But acceptance criteria requires a higher level of abstraction

Page 11: BDD - Test Academy Barcelona 2017

See the forest for the trees

Acceptance criteria are a quick summary to help us understand...

● what do we really want? the desired behavior of the system

● how to demo? when is the feature done

● documentation: the implemented behavior

Page 12: BDD - Test Academy Barcelona 2017

As garage organiserI want to assign jobs to mechanicsTo balance the workload in the garage

Acceptance Criteria:

- Jobs are assigned to a single mechanic on a particular day without specifying the start time

- Jobs have different priorities

- Ongoing jobs can't be assigned from one mechanic to another

- A finished job can't be assigned to any other mechanic

Page 13: BDD - Test Academy Barcelona 2017

Background:“Paco” is a mechanic

Scenario: Assign job to mechanicGiven the job "Change pad brakes" is in the unassigned work queueAnd “Paco”'s agenda for tomorrow is emptyWhen the organizer assigns the job to “Paco” for tomorrowThen the first thing for him to work on tomorrow is that jobAnd the job is no longer in the unassigned work queue

Scenario: Prioritize jobs Given “Paco”'s queue for tomorrow contains "Change oil" & “Inspection”When the organizer prioritizes the job “Inspection” for “Paco”Then first thing for him to work on tomorrow is “Inspection”

Page 14: BDD - Test Academy Barcelona 2017

Scenario: Ongoing jobs can't be reassignedGiven that “Paco”'s is working on "Inspection”When the organizer tries to assign the job to another mechanicThen the organiser is told that “Paco” is already working on that jobAnd it remains assigned to “Paco”

Scenario: Finished jobs can't be reassignedGiven that “Paco” is done with job “Change pad brakes”When the organiser tries to assign it to another mechanicThen the organiser is told that job is finished and can't be reassigned

Notes:- Mechanic agenda is stored in table T in the legacy system.

UX Suggestions:- Drag & drop could be a good metaphor for the assignments

Page 15: BDD - Test Academy Barcelona 2017

Do we need scenarios for this one?

As garage organiserI need to know what jobs are in the queue To assign jobs to mechanics

Acceptance Criteria:

- Jobs are in the queue when: - they are not assigned to a particular mechanic and the car is in the garage. - the job doesn't require a pending steering part.

Page 16: BDD - Test Academy Barcelona 2017

RecapAcceptance criteria specify what should be done

Examples help understand the criteria

Additional information may be useful

When an acceptance criterion is a long line...

When an example doesn't reveal the criterion...

7

E

AC AC

AC

E E

Heuristic

Page 17: BDD - Test Academy Barcelona 2017

Separate types of tests

Documentation tests - Cucumber - Nunit with specific tags (attributes): [Test] [Specification]

public void …() ● Triangulation tests - Integration and unit tests - Nunit, Webdriver...

Page 18: BDD - Test Academy Barcelona 2017

AutomationEven if we don't automate the scenarios...

Cucumber scenarios don't have to be integration tests.

Sometimes xUnit/RSpec frameworks are enough.

Automation often require little changes in the scenarios...

Avoid complex test setup

Page 19: BDD - Test Academy Barcelona 2017

We love feedback!Features are not real until they go live and users embrace them. Don't plan too far away!

Conclusion: listen to your users!

Release Feedback

10