Achieving Zero Defect with Agile Methods BugDay Bangkok 2012 โดย Varokas Panusuwan (Agile66)

Post on 01-Nov-2014

1.535 views 0 download

Tags:

description

Achieving Zero Defect with Agile Methods BugDay Bangkok 2012 โดย Varokas Panusuwan (Agile66)

Transcript of Achieving Zero Defect with Agile Methods BugDay Bangkok 2012 โดย Varokas Panusuwan (Agile66)

Achieving Zero Defect with Agile Methods

Varokas Panusuwan (Agile66)- Bug Day Bangkok 2012 -

Agenda

● Context● TDD● QA Role in Agile● Continuous Delivery● Q & A

About My Team

My Team

● 10 Devs (5+5)● 2 Product Owner● 3 QAs● Agile !! -- 2 Years from 0 ● Inherited Legacy code● Web Application● Release Weekly● Zero Defect*

PMs Love Us !! * in TDDed code

Zero Defect

Test Driven Development

Test Driven Development (TDD)

<Test 1><Test 2><Test 3>

#1

[Code 1][Code 2][Code 3]

Le Write Code

<Test 1><Test 2><Test 3>

Test Failed !!

#2

#3

<Test 1><Test 2><Test 3>

Test Passed!!

#4

Le Write Test

Writing Code Like a Sir

Code Always Tested

TDD == Testable Specification

Create Login Page(1) Email has correct format(2) Password required...

Le Spec

Story

Acceptance Criteria

testEmailFormat() testPasswordRequired()

Le Test

TDD

QA DEV

#2 fail.

B**** PLEASE !!

Automate Tested

Oh... setup wrong

Interface

Code?

[Code 1][Code 2][Code 3]

Req?

Test

REQUIREMENT

● Specific● Measurable● Actionable● Realistic● Time-bound●

https://github.com/varokas/tdd-examples/blob/master/src/test/java/com/huskycode/stack/StackImplTest.java

Bug

MismatchSpec

Not in Spec

TDD ???

F***

YEAH!!

TDD == Better Modular Design == Easier to Test

public billing() {date = new Date(); //Get Todayif(date == endOfMonth)

sendBillToCustomer();}

QA... U MAD ??

QA

public billing(dateService) {date = dateService.getToday();if(date == endOfMonth)

sendBillToCustomer();}

Le Dev

MOCK

1. Let todayService.getToday == 302. runTest --> billing(todayService)3. SUCCESS !!

Le Test Code

Le QATWEAK

QA Role in Agile Team?

Bug

Spec Mismatch

Not in Spec

???Exploratory Testing

Story (Spec) Writing

PM

DEV(3) SAD PATH(4) EDGE CASE(5) EXCEPTION

SPEC (1) HAPPY PATH(2) HAPPY PATH

QA

#2 Conflict with ...

What about ...

1. PM & Dev & QA Write Story2. QA Review Acceptance Criteria [ TESTs !!! ]3. Dev implement Story4. QA Exploratory TestDONE !!!

Agile All The Way

Regression Test

QA Like a Sir

Quality Up Front

QA >> Testing

Continuous Delivery

"Responding to Change over Following a Plan"

- Agile Manifesto #4 -

http://agilemanifesto.org/

Order Management System

User Management System

Following Big Plan...

Big Gigantic Module System Thingie

..

..

..

BRANCHMERGE

REGRESSION

TESTING HOTFIX

RELEASE PLANNING

SCHEDULED DOWNTIME

REPLAN !!!

RE-ESTIMATE TEST ALL

BRANCH

week 1

week 2

Bug in legacy code found !!Need fix in 1 week

[Release 1]

[Release 2]

Cancel Order

Add Order

Responding to Change

week 1

week 2

Weekly Releases

week 3

week 4

week 5

...

...

Edit Order

P1 Bug ... Have to fix in 1 week !!

Cancel Order

DEV QA

PM

DeliverValue OverTime

View All Orders

Fix Bug

Shuffle priorities like a sir

One Thing At A Time

Devs

QAs

PM

Work 1

Work 2

Work 3

Devs

QAs

PM

Work 1

Work 2

Work 3

Code Review / Pair Programming

"given enough eyeballs, all bugs are shallow"

- Linus' Law -

Pair Programming == Real time code review

Does not have to be all the time !!

● Test Harder?● Test More?● Don't Change Anything?

Better Quality

Agile == Simplify

● No spec mismatch● 100% code coverage● Document always match code● Automated regression test● Less bug inducing activities/useless tasks,

More delivering good quality code.● "Do the right thing, at the right time"

"The only way to go fast is to go well."

Uncle Bob

Agile66: www.facebook.com/groups/agile66

Thank you !!

Me:www.facebook.com/varokas

Questions?

Please:

Feel free to view and distribute

Use/Modify this slide only under permission from the author

Additional Topics

More About Agile ??

Agile Thailand 2012

(17/06/2012)http://agilethailand2k12.eventbrite.com/

TDD == 100% Coverage

Test 1

Test 2

Test 3

Le Code

Code 1

Code 2

Code 3

.....

.....(Le Wild Code appears)

....

....

Y UNO TEST?

Incremental Design

Trunk development?

You Ain't Gonna Need It

TDD == Safety Net

Whole Team == reduced bug