tdr & tdd - meetupfiles.meetup.com/1508927/tdr & tdd.pdftdr & tdd test -driven...
TRANSCRIPT
![Page 1: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/1.jpg)
12/16/15
1
TDR&TDDTest-Driven{Requirements&Development}ByMikeRieser (email:[email protected])
ENGINEERING PRACTICES
“PeoplehavetoldmethattheyseeScrumasthemanagementapproachtoagiledevelopmentandXPastheengineeringpracticesthatmakeiteffective,bothbondedtogetherbycomplimentarypracticesandgoals.”
– KenSchwaber
![Page 2: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/2.jpg)
12/16/15
2
ScrumforProcess, ExtremeProgramming(XP)forPractices
“Accordingly,wheneverIhaveasituationinwhichsoftwareisbeingdeveloped,Scrumisbeingused,andtheengineeringpracticesaresubstandard,IalsocallforXPtobeimplemented.”
– KenSchwaber
#3
Scrum’s InfluenceonExtremeProgramming(XP)
From: Kent Beck To: Jeff Sutherland <jsutherland>
Reply: [email protected]
Date: Mon, 15 May 1995 18:01:15 -0400 (EDT)
Subj: HBR paper
_____________________________________________________Isthere agoodplace togetreprints ofthe SCRUM paper fromHBR? I'vewritten patterns for something verysimilar andIwanttomakesure Istealasmanyideas aspossible.
Kent
#4
![Page 3: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/3.jpg)
12/16/15
3
MATURINGPRACTICES
DiscussionTeamsnewtoScrumtypically startbyputtingeverythinginprogressandtreatingtheiterationlikeamini-waterfall.
Howhaveyouseenteamsmature inthewaytheyapproachandaccomplish theirwork?
![Page 4: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/4.jpg)
12/16/15
4
SkillMaturityModelsAgile teamsmatureintheir skillsandpractices:• DreyfusModel: Novice toExpert.• MartialArts: Shu-Ha-Ri.• Meilir Page-Jones: InnocenttoResearcher.
NoviceAgileTreat anIteration likeamini-waterfall. Allstories putin flight atonce.QAgetssqueezed atthe
endhaving totesteverything thenight before the demo.
![Page 5: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/5.jpg)
12/16/15
5
QAPlightTheTester isattheendoftheprocessandmayhavequestions.
?
?
AdvancedBeginnerTeamstarts completing stories earlier, butstill approaches eachstory inatraditional fashion.
![Page 6: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/6.jpg)
12/16/15
6
StevenCoveytip: “Beginwith theendinmind.”Let’sisolateaUser Storyandthinkaboutit.
“Beginwiththeendinmind.”WhatifwebeganwithQATesting?
![Page 7: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/7.jpg)
12/16/15
7
QATestsandRequirements atthestart.Thiswrapsalotofthingsaround.NoticewheretheBAandQA endup?
Separate outtheDevtasks.
![Page 8: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/8.jpg)
12/16/15
8
Isolateeacharea.
Rearrange theDevtasks. Codemovesearlier.
![Page 9: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/9.jpg)
12/16/15
9
We’llredirect theflow.
AnalysisfeedsTests.FromTestswegostraight toCode.
![Page 10: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/10.jpg)
12/16/15
10
Let’snameeachofthesekeyareas.
Test-DrivenRequirements +Test-DrivenDevelopment
![Page 11: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/11.jpg)
12/16/15
11
Mature teamwithmature practicesPracticingTest-DrivenRequirementswithTest-DrivenDevelopment
TEST-DRIVENREQUIREMENTS
“Anexamplewouldbehandyrightaboutnow.”– BrianMarick
![Page 12: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/12.jpg)
12/16/15
12
TestTablesarebestdonecollaboratively!
SoftwareRequirements asaTable“...anysoftwareprogramcanbethoughtofasatablethatmapsprograminputstotheircorrespondingcorrectoutputs.Thischaracterizationofprogrammingassumesafinitenumberoffiniteinputs,whichisfairforpracticalpurposes” 27
July 2001 issue of ACM Software Engineering Notes, J. P. Lewis
![Page 13: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/13.jpg)
12/16/15
13
WorldofWarcraftCharacterMovementCharacter MovementCharacterName
CharacterLocation
ObjectLocation Move Location? #Comment
Operandi (0, 0,0) - Forward (1,0,0) Unhinderedmovement
Operandi (0,0, 0) (-1, 0,0) Backward (0,0,0) Blockedmovement
Persona!
ATMWithdrawCashTestTableWithdraw Cash
ATM CashAccountBalance
RequestAmount Result?
ATMCash?
AccountBalance? #Comment
$1,000 $5,000 $100 OK $900 $4,900 Happy
$1,000 $1,000 $1,000 OK 0 0 Boundary
$100 $5,000 $200 ERROR $100 $5,000 InsufficientATMcash
$1,000 $100 $200 ERROR $1,000 $100 Insufficientacct balance
$1,000 -$100 $200 ERROR $1,000 -$135 Overdraftfee!
![Page 14: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/14.jpg)
12/16/15
14
Gherkin– Given-When-ThenGiven anAccountwitha$5,000balanceAnd theATMwith$1,000cash
When thePatronwithdraws$100cash
Then theAccountbalance is$4,900And theATMhas$900cash
CommonTools• Fit(orSlim)andFitNesse (JavaorC#)• SpecFlow (C#)• Jbehave (Java)• Cucumber (Ruby)• Concordian• Nominations?
![Page 15: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/15.jpg)
12/16/15
15
Discussion• AnyonehavestoriesofTest-DrivenRequirementssparkingcollaboration onteams?
• When’sthebesttimetohavetheteamcreatethetests?
TEST-DRIVENDEVELOPMENT
![Page 16: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/16.jpg)
12/16/15
16
SoftwareDevelopment ProcessDependencies
34
Waterfall
UpfrontRequirements
Upfront Design
Agile
Evolutionary Design
Refactoring
Automated DeveloperTests
TestFirst
TestAfter
Test-AfterApproach
TraditionalWay– TestAfter• 1daytothinkanddesign• 2daystowritethecode• Ohyeah,2daystowritetheunittests
DesignJ
CodeK
UnitTestL
35
![Page 17: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/17.jpg)
12/16/15
17
Test-FirstApproach
TDDWay– TestFirst• Takesaboutthesametimeasjustdesignandcodedidbefore• UnitTestsseemingly forfree– how?
Writeatest
KMakeitpass
JMakeitright
J
36
WhatisTDD?• DeveloperPractice• Test-FirstProgramming• IncrementalDesign• One testatatime• TDDdoesunittestingbutunittestingisnotnecessarilyTDD
![Page 18: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/18.jpg)
12/16/15
18
WhatTDDisNot!• Writing allthetests beforethecode• NotQATesting• Not IntegrationTesting
WhatisRed?Afailing testislikeahuntinglicense tochangeproductioncode.• Enhancements – addatesttoaddnewfunctionality.
• Defects – reproduce thebugasafailingtest.
Onlyintroduceasmuchofatestasyoucangettogreen insay,5mins.
![Page 19: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/19.jpg)
12/16/15
19
WhatisGreen?GettoGreenquickly!ObviousImplementation – ifyouknowwhattodo,justdoit!Fake It!– whenyoudon’tuseaconstant!
WhatisRefactor?• Workincrementally.• BeabletoshowGreen aftereachchange.• Removeduplication.• CleanasyouGo!
![Page 20: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/20.jpg)
12/16/15
20
Refactor– whatdoyoumean?if ( ... ) {
...i = i + 1;
} else {...i = i + 1;
}
if ( … ) {…
} else {…
}
i = i + 1;
if ( ... ) {...
} else {...
}
i = i + 1;
WhatisIntegrate??• Integrateasfrequentlyaspossible.• Maynotbecomplete,butifdone-enough,shareit.• (ItypicallyavoidcheckinginFakes.)
![Page 21: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/21.jpg)
12/16/15
21
Test-Firstvs Test-AfterTest-First
• Thetestsgetwritten.• Testablecodeisgenerallyflexiblecode.
• Lowercoupling• Highercohesion• AllowsRefactoring• Confidence
Test-After
• Sometimestheunittestsget“skipped.”
• Teststhatstartfromawizardaregenerallyprettypoor.
WhatAreUnitTests?• Testswhichhaveaspecific focuswhichcallamethod(orfunction).
• Verify thatthe requirements arebeingmetbythecodewhentestedinisolation.
• “Likeacompiler” forthebusiness requirements.
![Page 22: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/22.jpg)
12/16/15
22
WhatUnitTestsareNOT!
BenefitsofTDD?• Testfirstismorefunthattestafter• UnitTestsactuallygetwritten• Producestestabledesigns• Thinkoutside-in, firstabouthowtouse,thenabouthowtodoit• GoodunitteststhatsupportRefactoring• RequirementsClarification&Understanding• Confidence (nofear)• Solutions thatfitlikeahandinaglove• Version1.0codethatyouarehappywith• ReducesDefects
![Page 23: TDR & TDD - Meetupfiles.meetup.com/1508927/TDR & TDD.pdfTDR & TDD Test -Driven {Requirements & Development} By Mike Rieser(email:mike@mrieser.com) ENGINEERING PRACTICES “People have](https://reader033.vdocuments.us/reader033/viewer/2022042205/5ea71b3dfc53b64880072033/html5/thumbnails/23.jpg)
12/16/15
23
TDD– “Rediscovered”byKentBeck“TotheunknownauthorofthebookwhichIreadasaweird12-yearoldthatsuggestedyoutypeintheexpectedoutputtapefromarealinputtape,thencodeuntiltheactualresultsmatchedtheexpected result,thankyou,thankyou,thankyou.”
– KentBeck(Test-DrivenDevelopmentByExample)
THEENDQuestions?