24
How to Develop a Common Sense of “DONE”? Alexander Schwartz mobile.international, Berlin October 13, 2009

How to develop a common sense of "DONE"?

Embed Size (px)

DESCRIPTION

presented at the Agile Testing Days 2009 in Berlin

Citation preview

Page 1: How to develop a common sense of "DONE"?

How to Develop a Common Sense of “DONE”?

Alexander Schwartz

mobile.international, Berlin

October 13, 2009

Page 2: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Introduction

About MyselfAlexander SchwartzIT industry since 1989

• Developer (Java, C++)

• Tech Lead, Project Lead

• Test Developer

• Consultant

• Build Manager

• Configuration Manager

• Scrum Master

Release Manager for mobile

(includes CM, Build Management)

About My Company Mobile.international belongs to eBay Main platform: mobile.de

•Biggest market place for automobiles in germany.

•One of the top-10 websites in germany; 49 million visitor per month (IVW 02/2009)

Other marketplaces• RO: mobile.ro• PL: pl.mobile.eu• FR: ebay-automobile.fr• IT:

ebay-automobile.it

Page 3: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Focus of this talk

Main Statement:The combination of Branching + Quality Gates can be a good tool to improve the common sense of „DONE“ step by step, and to help testers to get integrated into agile teams.

This talk is related to thefollowing topics from the list

Transition to agile development Process

• How to organize testing activities?

• How to change the understanding of Testing?

Topics of interest of this Conference:

• Test Driven Development (TDD) / Behavior Driven Development (BDD)

• Acceptance Test Driven Development (ATDD)

• Automated Unit-level Tests

• Automated Integration-level Tests

• Automated System-level Regression Tests

• Automated ATDD

• Exploratory Testing on Agile projects

• Tools "for Agile Testing": for TDD/BDD; for ATDD; for Continuous Integration (CI), Build and Integration Management, Version Control Systems (VCS); etc.

• Managing testers on Agile teams

• Testing challenges for distributed team

• The roles of an Agile Tester

• How to engage testers from "traditional" development methodologies and help them transition to agile teams

• Continuous Testing (based on CI): e.g. Automated Regression Testing, Continuous Performance Testing, Continuous Load Testing, Continuous Scalability Testing etc.

• The Influence of Scrum or other Agile Methods on Conventional Testing Processes

• Evolutionary Testing Practices

• Measurable Improvements as a result of Agile Practices

• The Problems and solutions of changing to an Agile Culture seen from a Testing Perspective

Page 4: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

What means „DONE“?

ScrumDONE =

releasable

Agile Release Model: • Deliver small chunks, not big fat

releases.• Deliver value to customer several

times a week w.r.t. business prios.• At any time, you can decide to

perform a release.

Page 5: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Definition of Done (DoD)

Source: Gupta,Definition of Done: A Reference

Page 6: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

The Gap

Real World:

done means

„still a lot to do“

Ideal World:

DONE = releasable

?

Releasable

...

Feature tested

...

Unit tests green

Compiles

TestDevelopment

Mainline

Release Codeline

Releasable

...

Feature tested

...

Unit tests green

Compiles

MainlineRelease Codeline

TDevelopment

Test

►Codeline Quality ►Codeline Quality

►Process: Integrated Test Activities►Process: Waterfall

time

Page 7: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

How to improve the common sense of DONE?

Many Aspects Process Tools Infrastructure People Skills Commitment Mind set

• „QA as Quality Police“

• Developer: „I am not responsible for quality.“

As member of an agile team, I am responsible to deliver value to the customer in time and quality.

Strategy - Blue or the red pill?

Strategy B:

Step by step

Strategy A:

Brute force

Page 8: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

How to improve the common sence of DONE?

Long-Term Actions

Evangalize! (firm + carefully)

• Explain the need for an improved „done“ to all stakeholders.

• Convince first developers.

• Convince POs.

• Make tiny first steps for improvement + get commitment

Page 9: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

The Start of Our Scrum Transition

Situation Q2 2008

• parallel development with multiple distributed teams• two outsourcing partners• 60+ team members • 10+ teams of different size• Fast rump-up: 30+ new/external team members • Scope:

• Many CRs• New marketplaces• Redesign• New apps

• One big codebase

First Steps• Evaluation projects

Decision

Use Scrum for all teams.

Page 10: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Phase 1 of Our Scrum Transition

TestDevelopment

►Process: SCRUM with waterfall QA

Mainline

Release Codeline

►Codeline Quality

►CM: Mainline development

Part-time assignement

Test system

Experiences

We delivered. (Almost in time.)

Integration of POs

(bridged gap between business unit and technology department)

Increased visibility

Reduced test coverage.

Reduced external and internal quality + increased technical debt

No one feels responsible for bugs.

Main impediment: low quality of trunk blocks many teams.

Release deadlocks.

Page 11: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

New Inspiration New Approach

Henrik Kniberg:

Actions

New Policies

• Every project teams develops in a project branch.

• No commits in the mainline.

• Every contribution for the mainline (and the next release) has to satisfy the conditions of a Quality Gate (< releasable).

Quality Gate: releasableQuality Gate:

ready for trunk

(< releasable)

Page 12: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Phase 2 of Our Scrum Transition: Project Branches

►Integration of Test Activities

MainlineRelease Codeline

►Codeline quality

Test(Story, Acceptance,

Regression)

TestDev

Part-time assignement

►CM: Project branches

Page 13: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Quality Gates

• Use existing DoD papers etc.

• Ask teams “Team Quality Contract”

• Discuss it, discuss why

• Get commitment by all stakeholders

• Plan iterative reviews + improvements

• Term from traditional development

• For an agile team, a quality gate can make quality expectations explicit.

Page 14: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Management of Integrations

Use self management of the teamBook merge slots (Wiki)

“conflict resolution”

Merge Token “Merge Frog”

Experiences

Delays

Integration queue increases

Team Reactions

- Deliver smaller chunks

- Split functionality acc. to business prio

Page 15: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

How we test?

• full/partial system deployed in test system

•Module + Dependencies•Module •Class•Method

Source: Lisa Crispin & Janet GregoryAgile Testing: A Practical Guide for Testers and Agile TeamsAddison-Wesley, 2009

Selenium-Selenese

- SeleniumRC

Unit Tests Integration tests

Unit Tests

Functional Tests Exploraty Tests

UAT

Manual Functional Tests

.

UI

Tests

Acceptance Tests(API Layer)

Unit/Component Tests

Page 16: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Pilot Project: Story Tests

• full/partial system deployed in test system

•Module + Dependencies•Module •Class•Method

.

ConcoridionSeleniumRC /Webdrivver

automated storytests

automated storyFRONTEND tests

Concoridion

.

UI

Tests

Acceptance Tests(API Layer)

Unit/Component Tests

Story Tests

Page 17: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Expericences / Discussion

Q: Be strict?no – gates are just guidelines

Q: How many contributions missed the release stream?

> 25

Q: Pressure in the teams?

Q: Pressure on QA members?

Increased quality of TRUNK.

Increased release reliability

Increased release flexibility

Increased release „throuput“

(delivered more story points per time)

Increased responsibility

Increased understanding of DONE

Increased integration of testers

(some teams)

Small waterfall (some teams)

Merge overhead !!!

Merge risks re-test in R-test phase

Problem: completeness of test environments re-test in R-test phase

Long R-test phase

Still a QA bottleneck

Page 18: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Step 2a: Perform a „Team Release“

Quality Gate: releasableQuality Gate:

ready for trunk

= releasable

Rationals:

• high business priority

• high risk

• contract with fixed starting date

Pros

• reduced release risk

• very clear responsibility of the project team

Page 19: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Test

Phase 3 of Our Scrum Transition:

Mainline

Release Codeline

►CM: Project branches

►Process: SCRUM with small waterfall + big waterfall

►Codeline Quality

Experiences

More conditions of quality gates satisfied.

Decreased R-test phase length.

Increased understanding of DONE

Increased integration of testers

(most teams)

....

TestDev

Action #3

• Reduced regression test phase lenght + team size.

• Testers are assigned to their project team, rather than to the R-test team.

• Be more strict: Verify the conditions of the Quality Gate.

Page 20: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Integration of Supporting Disciplines

Q: How to integrate supporting disciplines / aspects?

(Site Operations, NFR, DB, Architecture, Domain Model, etc.)

Options

Option 1: Just mention in Quality Gate … distribute knowledge and expectations

Option 2: Test as part of the Quality Gate

Option 3: Use reviews

Page 21: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

What about Continuous Integration?

Standard: Use...• Continous build + unit test• Package• Deployment• Regression tests• Metrics: test coverage + more

Advanced: Try to automate ...• Verification criteria for Quality Gates• Merges• CM tasks (creation of branches + CI build configurations)• Deployment• DB Setup

Rule:

Use CI for every active codeline. Tasks:

Create + maintain necessary infrastructure

Q: How is maintaining it?central team vs. project teams

Conclusion:

This is a big effort, but it‘s worth every minute.

Page 22: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

What‘s next?

Kanban

Simplify mergingDistributed VCS (GIT, ...)

Automatic Merging

Team ownership for...Test system

CI System

Distributed VCS (GIT, ...)

Page 23: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Conclusions

The “branching approach” can help.

It requires high skills: CM, test systems

Merge costs and risks are high

…but it can help the teams to get a feeling for the quality they deliver

…and improve the common sense of DONE.

Page 24: How to develop a common sense of "DONE"?

October 13, 2009 – Agile Testing Days – Alexander Schwartz – How to Develop a Common Sense of “DONE”?

Q & AQ & A