achieving zero defect with agile methods bugday bangkok 2012 โดย varokas panusuwan (agile66)
DESCRIPTION
Achieving Zero Defect with Agile Methods BugDay Bangkok 2012 โดย Varokas Panusuwan (Agile66)TRANSCRIPT
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