42

Quality Jam: BDD, TDD and ATDD for the Enterprise

Embed Size (px)

Citation preview

Page 1: Quality Jam: BDD, TDD and ATDD for the Enterprise
Page 2: Quality Jam: BDD, TDD and ATDD for the Enterprise

BDD, TDD, and ATDD for the EnterpriseAdam Satterfield, VP of QA, BetterCloudKevin Dunne, VP of Business Development, QASymphony

Page 3: Quality Jam: BDD, TDD and ATDD for the Enterprise

“Absorb what is useful, discard what is useless and add what is specifically your own.”

— Bruce Lee

Page 4: Quality Jam: BDD, TDD and ATDD for the Enterprise

AGENDA• Understanding typical software development and testing challenges

• Introduce test-first methodologies• Benefits of implementing test-first methodologies• Review the state of test-first methodologies in industry• Investigate BetterCloud’s successful implementation of ATDD• Q&A

Page 5: Quality Jam: BDD, TDD and ATDD for the Enterprise

Current Problems in Software Dev & Test

Page 6: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Where We Came From

Traditional development cycles often model the Rational Unified Process:

Source: http://www.psa-software.com/_img/_knowledge_center/rup.jpg

Page 7: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

The Broken Game of Telephone

Running the processes in parallel introduces the risk as the requirements get handed off multiple times and customer expectations change with time:

Source: http://lh5.ggpht.com/_g0-GZzIBNms/SloJ3LOGy3I/AAAAAAAAAK0/FvyLacg_Q28/s800/conversations.pngg

Page 8: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Why QA Breaks Down in Agile

• QA kept out of the loop• QA does not complete their acceptance tests until after the sprint had started

• Dev and QA out of sync• Lack of understanding or inability to qualify when QA is “Done” with testing.

Page 9: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Why We Chose It

We would have obviously chosen a more efficient process, but we were constrained by many limitations, including:

Environment Creation Code Merges On-Premise Prevalence

Desktop Focus Lack of Collaboration Off-Shore Development

Page 10: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

What’s Changed

Many of our prior limitations have been replaced, based on macro trends around technology and industry:

Containers have simplified the process dramaticallyEnvironment Creation

Git has replaced Subversion as the industry standardCode Merges

Cloud adoption is at an all time high, increased securityOn-Premise Prevalence

Prevalence of Web, Mobile, Internet of thingsDesktop Focus

Increase in teamwork, chat and collaboration technologyLack of Collaboration

Shifts towards rural sourcing, onshoring of laborOff-Shore Development

Page 11: Quality Jam: BDD, TDD and ATDD for the Enterprise

Introducing Test-First Methodologies

Page 12: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

How the Process Has Adapted

Now that we have freed ourselves of past limitations, the process has been shifted to one that aligns more with our needs:

Traditional Approach

Test-First Approach

Design Requirements Code Test Deploy

Design (Automated) Test Code Refactor Deploy

Page 13: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

TDD vs. ATDD vs. BDD

Test-First methodologies were coined “Test Driven Development”. Less technically focused versions called Acceptance Test Driven Development (ATDD) and Behavior Driven Development (BDD) also emerged:

Test Driven Development (TDD)

Behavior Driven Development BDD

Acceptance Test Driven Development (ATDD)

Unit Test Driven Development (“Technical

TDD”)

Page 14: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

What’s the Difference?

ATDD and BDD are similar in that they both try to make TDD more accessible to business users. The major functional difference comes down to how the tests are structured:

"I think this definition leaves out a key piece, we are focusing on collaboration and learning. Having worked on a project that was using 'ATDD', in 2005 I think, we had the same goals then as BDD without

the Given When Then language.“

— Wes Williams

Page 15: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Pros and Cons

ATDD/BDD offer benefits over more Unit Focused/Technical TDD, but also has its drawbacks:

Pros• Increased understanding of tests from business stakeholders

• Increased collaboration early in the cycle• More focus on customer and business needs

• Higher involvement of business in development and quality

Cons• Addition of more tooling in the development/delivery chain

• Greater time spent defining tests and specifications

• Demands stronger contributors in requirements, dev, test

• Often increases the automation needs in an organization

Page 16: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

User Stories – Sprint Planning

The user story is the “What.” Allows the business to explain a business need while leaving development to choose the best technical approach

Example:As a paying customer,I want to have the ability to update my billing information on my recurring subscription,So that I can keep my subscription current if my information changes.

Page 17: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Acceptance Criteria

Acceptance criteria are how we define “done.” They’re measures for how a system should perform. They:

• Define the system behavior.• Ensure features work as expected.• Provide the team a better gauge of the amount of work needed to complete a story.• Guide Development and QA testing.

Page 18: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Acceptance Criteria Example

Examples based on user story:

• There should be a navigation element the user can select from to update their billing information

• The user should have the ability to update either their billing address or their payment methods for the recurring payment

• A notification should be shown to the user stating that changes will not go into effect until next billing cycle

Page 19: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Acceptance Tests

Verify the work: Acceptance tests evaluate the acceptance criteria using the “Given-When-Then” format.

Example:Given: The given clause sets the stage for the initial scenario being tested or the stage the user is at prior to testingWhen: The when clause describes the action the user performs on the systemThen: The then clause describes the system’s reaction to the action performed in the when clause

Page 20: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Acceptance Test Example

Example:Given the customer has navigated to the billing pageWhen the customer clicks on “Update Billing Information” and clicks “Change Address,”Then: the customer is presented with a form to enter a new address.

Example based on Acceptance Criteria:

Page 21: Quality Jam: BDD, TDD and ATDD for the Enterprise

Benefits of Test-First Approaches

Page 22: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

How Can TDD Help Us?

Test Driven Development brings several major benefits to organization, most notably:

1. Move Testing Up Front – prevents having to rush testing at the end of the cycle2. Bake in Automation from Day 1 – protects against getting behind with test and

automation coverage3. Build More Testable Software – requires developers to think about testability,

and create more robust software4. Push to Customers When Ready – allows you to push software to customers

just in time, as it is developed

Page 23: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Move Testing Up Front

Moving Testing Up Front removes the risk of having to make compromises at the end of the cycle on quality or on-time delivery:

Traditional Development Timeline

Ends on: Day 1 Day 3 Day 14 Day 20 Day 21

Design Requirements Code Test Deploy

There is risk in this process that any process, typically Code, will run over and either squeeze development, or push release dates. TDD removes it!

Page 24: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Defect Costs Increase as Code Matures

Design Implementation Testing Maintenance0

20

40

60

80

100

120

Phase/Stage of the S/W Development in Which the Defect is Found

Cost of Resolving Defect

Page 25: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Bake in Automation Up Front

In traditional development, automation is often built after the code is developed, which has significant limitations:

Test development is more costly, since we cannot access the code to make it more testable (more details to come)Tests are slower and more brittle, with higher levels of maintenance, if we can only access the UITest coverage is incomplete, as we must chose strategically where to build out automation coverage

Moving to TDD flips the process and forces developers to write code to satisfy tests, increasing automation coverage, speed, and reducing cost

Page 26: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Build for Testability

Source: http://zeroturnaround.com/wp-content/uploads/2015/12/PUZZLE-1-min.png

Moving towards BDD will force your developers to build an application that can be tested well at the Unit, Integration, and UI levels:

Page 27: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

UI Test

s

Integration Tests

Unit Tests

Building a Complete Testing Strategy

Moving towards BDD will also demand a more complete testing strategy focused on more than just UI testing:

UI Tests

Integration Tests

Unit Test

s

Page 28: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Push Features When They Are Complete

TDD paired with continuous delivery will allow you to push features as they become ready, if you’d like to:

Old Way

New Way

Code Feature ACode Feature B

Code Feature CTest Deploy

WaitWait

Code Feature ACode Feature B

Code Feature C

WriteTests

DeployDeploy

Deploy

Page 29: Quality Jam: BDD, TDD and ATDD for the Enterprise

State of Test-First in Industry

Page 30: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

State of Test First – Respondent Overview

Most respondents are yet to implement TDD, or just getting started

Page 31: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Learning the Ropes Online

Most people are learning about TDD online, due to lack of good in-person content!

Page 32: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Struggling for Developer Buy-In

The biggest stumbling block continues to be getting developers to write tests

Page 33: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Transition to Agile First, Then TDD

Most organizations move to TDD after mastering Scrum/Kanban Agile approach

Page 34: Quality Jam: BDD, TDD and ATDD for the Enterprise

How BetterCloud Does ATDD

Page 35: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

A Typical Sprint

Dev Code/Test Code/Test Code/Test Code/Test Code/Test

Day 1 Day 2 Day 3 Day 4 Day 5

FA Test Plan Test Test - Color Test Test TestTest upload to Qtest

DEV

QA

Everyone Sprint Planning Arch Review Sprint Planning Internal Demo

Dev Code/Test Code/Test Code/Test Code/Test Code/Test

Day 6 Day 7 Day 8 Day 9 Day 10

FA Test Plan Test - Color Test - Color Test Test Test Test Test

DEV

FA

Everyone Sprint Planning Arch Review Sprint Planning Internal Demo

Dev Bugs/Refactor Bugs/Refactor Bugs/Refactor Bugs/Refactor Bugs/Refactor

Day 11 Day 12 Day 13 Day 14 Day 15

FA Test Plan Test - Color Test Test - ProductionTest Test Test

DEV

FA

Everyone Sprint Planning Arch Review Sprint Planning Demo & Retrospective

Page 36: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

How Does the Process Work with our Tools?

User Story Acceptance Criteria Testing Tasks

Test Case Test Runs

JIRA

qTest

When the Test Run passes, complete the

testing task

DONE!

Page 37: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Improvements for Automation

BetterCloud writes automated cases in Groovy with the Spock framework:

• Spock - higher level language, like a manual acceptance test

• Groovy - object oriented programming language, drives desired activity in the application

Reduced the amount of time between functionality being delivered and automation coverage being created

Page 38: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Groovy and Spock Example

Page 39: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

QA Improvements

• QA have become the Subject Matter Experts (SME’s) for the product• Acceptance test cases get created during sprint planning which frees

up time in sprint to test• Team can focus on more complex test scenarios including system

testing and leading UAT sessions with the business• QA and Dev can discuss the split of testing to limit overlap between

Unit, Integration and Acceptance Testing

Page 40: Quality Jam: BDD, TDD and ATDD for the Enterprise

#qualityjam16

Tips

• Include the test automation team early and often in sprint planning• Do not think “inside the tool” with test automation. Learn about other

efficiencies that can be gained, like creating scripts in powershell or a chrome extension tool.

• Focus on communication and collaboration. Those are the two key points to a successful Agile team

• Both Manual and automated testers working together is key

Page 41: Quality Jam: BDD, TDD and ATDD for the Enterprise

Q&A

Page 42: Quality Jam: BDD, TDD and ATDD for the Enterprise

THANK YOUKevin [email protected]

Adam [email protected]