UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

45
University of Washington Agile Developer Cer6ficate Spring Quarter Advanced Topics in Agile So>ware Development Class #1: User Stories and Acceptance Tes6ng

description

 

Transcript of UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

Page 1: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

UniversityofWashingtonAgileDeveloperCer6ficate

SpringQuarterAdvancedTopicsinAgileSo>wareDevelopmentClass#1:UserStoriesandAcceptanceTes6ng

Page 2: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

UserStoriesStory 14 As a customer I want to check my order status online so that I can know when to

expect my package

Asmallpieceofbusinessvaluethatcanbe

deliveredinanitera6on

Page 3: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

WhyUserStories?

•  AgilePrinciple:–  “Themostefficientandeffec6vemethodofconveying

informa6ontoandwithinadevelopmentteamisface‐to‐faceconversa6on”

•  UserStoriesareinsufficienttoimplementwithoutaconversa6onbetweenthecustomeranddeliveryteam

•  Describever6calslicesoffunc6onality•  Wordsneedcontexttointerpret;requirementsareinterpretedoutofcontextinmanycases

Page 4: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

WhatisaUserStory?*•  CARD

–  Tokenrepresen6ngtherequirement.It'susedinplanning.NotesarewriVenonit,reflec6ngpriorityandcost

•  CONVERSATION

–  Therequirementitselfiscommunicatedfromcustomertoprogrammersthroughconversa6on(Theconversa6onislargelyverbal,butiso>ensupplementedwithdocuments)

•  CONFIRMATION

–  Theconfirma6onprovidedbytheacceptancetestiswhatmakespossiblethesimpleapproachofcardandconversa6on

–  Whentheconversa6onaboutacardgetsdowntothedetailsoftheacceptancetest,thecustomerandprogrammerseVlethefinaldetailsofwhatneedstobedone

*“Essen6alXP:Card,Conversa6on,Confirma6on”–RonJeffrieshVp://www.xprogramming.com/xpmag/EXPCardConversa6onConfirma6on.htm

Page 5: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

AUserStoryTemplate(CARD)

•  Describesthevalueoffunc6onalityfromauser’sperspec6ve

•  UserRole–auseroftheproduct•  DoSomething–featureuserneeds•  Value/Benefit–whyfeatureisimportant

User Story Template As a <<user role>>

I want to <<do something>> so that <<value/benefit>>

Page 6: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

TheINVESTModelI–N–V–E–S–T

•  I= Independent‐dependenciesreduceagility

•  N= Nego6able‐nego6a6onbreedscollabora6on•  V= Valuable‐valuabletotheProductOwner,

client,customeranduser

•  E= Es6mable‐storiesareplanningtools•  S= SizedAppropriately‐canbepredictably

completedanddelivered

•  T= Testable‐story(acceptance)testsdefine whenweare“done”

Source:adaptedfromBillWake,xp123.com(h<p://xp123.com/xplor/xp0308/index.shtml)

Page 7: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

TypesofUserStories

•  Epic–auserstorythathasnotbeendecomposedtomeetINVESTmodelbecauseitislowerpriority

•  Theme–acollec6onofrelateduserstories

•  AnEpicisaThemewhensplitintosmallerUserStories

Page 8: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

Interconnec6onsofaUserStory

TheRightConversaHon

DefineDone

IncrementalDelivery

UserPerspecHveAndFocus

EsHmates

Value

DomainModel,SystemMetaphor,GlossaryofTerms

User Story • Card• Conversa6on• Confirma6on

Page 9: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

Exercise:UserStoryWri6ng

WriteUserStoriesfortheJiVerwebapplica6on.

ID8.5

Page 10: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

AcceptanceTests

•  Telluswhetherthesystemdoeswhatthecustomerexpects

•  EnableDeveloperstoknowthey’vesa6sfiedrequirements

•  Helpsusbuildthe“right”so>ware•  Arealsocalledcustomertestsorfunc6onaltests•  Canbeautomatedsothesecanbeverifiedbyanyoneatany6me

•  “Running,TestedFeatures”**Adaptedfrom“AMetricLeadingtoAgility”–RonJeffrieshVp://www.xprogramming.com/xpmag/jatRtsMetric.htm

Page 11: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

Confirma6onThroughAcceptanceCriteria

•  ProductOwnermakesfirstpassatAcceptanceCriteriabeforeSprintPlanningMee6ng

•  DuringSprintPlanning,AcceptanceCriteriaarediscussed•  FinalAcceptanceCriteriaforeachUserStoryisanego6a6on

betweenDeliveryTeamandProductOwner

•  Shouldbeshort,easytounderstandstatements

Story 14 As a customer, I want to check my

order status online so that I can know when to expect my package

AcceptanceCriteria• Viewstatusas“wai6ngforpickup”,“enroute”or“delivered”• Dateofeachstepinroute• Es6mated6meofdelivery

Page 12: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

ComparingAcceptanceCriteriatoDefini6onofDone

DefiniHonofDone:Helpsusbuildthethingright(deliverables)

AcceptanceCriteria:Helpsusbuildtherightthing(funcHonality)

AcceptanceCriteria• Viewstatusas“wai6ngforpickup”,“enroute”or“delivered”• Dateofeachstepinroute• Es6mated6meofdelivery

Page 13: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

UserStory“Smells”•  Splitalongprocesslines

–  Design,code,test,document

•  Splitacrossarchitecturelines–  Database,BusinessTier,UI

•  Splitalongprocedurallines–  Dothis,thenthis,andfinallythis

•  Hardtounderstandfully•  Customervalueisnotclear

Page 14: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

*RequirementtoUserStory–ACaseStudy

•  Ourstar6ngrequirement:

Story 1 Anyonecanregisterbypaying

immediatelywithPayPal

*Modifiedfromoriginalar6clebyJ.R.Rainsberger‐hVp://www.jbrains.info/weblog/browse/9

Page 15: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

*RequirementtoUserStory–ACaseStudy

•  Maybebreakitalongprocesslines?:Story 1.1

Design:AnyonecanregisterbypayingimmediatelywithPayPal

Story 1.3

UnitTest:Anyonecanregisterbypayingimmediatelywith

PayPal

Story 1.2

Code:AnyonecanregisterbypayingimmediatelywithPayPal

Story 1.4

Func6onalTest:Anyonecanregisterbypayingimmediately

withPayPal

*Modifiedfromoriginalar6clebyJ.R.Rainsberger‐hVp://www.jbrains.info/weblog/browse/9

Page 16: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

*RequirementtoUserStory–ACaseStudy

•  Maybebreakitalongarchitecturelines?:

Story 1.1

UI:AnyonecanregisterbypayingimmediatelywithPayPal

Story 1.3

Database:Anyonecanregisterbypayingimmediatelywith

PayPal

Story 1.2

BusinessLogic:Anyonecanregisterbypayingimmediately

withPayPal

Story 1.4

QA:AnyonecanregisterbypayingimmediatelywithPayPal

*Modifiedfromoriginalar6clebyJ.R.Rainsberger‐hVp://www.jbrains.info/weblog/browse/9

Page 17: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

*RequirementtoUserStory–ACaseStudy

•  Maybebreakitalongprocedurallines?:

Story 1.1

Collectregistra6oninforma6on

Story 1.3

Emailregistranta>erpayment

Story 1.2

IntegratewithPayPal

Story 1.4

Emailorganizera>erpayment

*Modifiedfromoriginalar6clebyJ.R.Rainsberger‐hVp://www.jbrains.info/weblog/browse/9

Page 18: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

*RequirementtoUserStory–ACaseStudy

•  Aha,self‐containedincrementsofvalue…

Story 1.1

AsaRegistrantIwanttoregisterwithmyemailsothatIcanbeno6fiedelectronically

Story 1.3

AsaRegistrantIwanttobeno6fiedofmyprocessed

registra6onsothatIknowitiscomplete

Story 1.2

AsanOrganizerIwanttocollectmoreinforma6onfromRegistrantsothatIcancontact

themlater

Story 1.4

AsanOrganizerIwanttobeno6fiedofaregistra6onsothat

Icanfulfillit

*Modifiedfromoriginalar6clebyJ.R.Rainsberger‐hVp://www.jbrains.info/weblog/browse/9

Page 19: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

MoreGuidelinesforSpliqngStories

•  Databoundaries•  Opera6onalboundaries•  Excep6ons•  Errorhandling•  Removingcross‐cuqngconcerns

•  Priority

Page 20: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

Avoidspliqngstoriestoosoon

•  Don’tsplitstoriestoosoon–  ResultsinhugeinventoryonProductBacklog(waste)–  Iner6asetsinandclogssystem– Manydetailswilllikelybethrownout,resul6ngin“sunkcosts”

•  Progressivelyelaboratestoriesbasedon–  Priority–  Risk

•  Effec6velyspliqngstoriesisajointeffort–  ProductOwner,Stakeholders–  Team

Page 21: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

TheneedforFITFIT:FrameworkforIntegratedTests

•  CreatedbyWardCunningham

•  Allowscustomers,testers,andprogrammerstolearnwhattheirso>wareshoulddoandwhatitdoesdo.

•  Automa6callycomparescustomers'expecta6onstoactualresults•  Simpletableformat

•  Easyforeveryonetounderstandandmaintaintests

•  Powerfulframeworktotestalmostanythingthebusinesscaresabout

•  Book:“FITforDevelopingSo>ware”(Mugridge,Cunningham)hVp://www.amazon.com/Fit‐Developing‐So>ware‐Framework‐Integrated/dp/0321269349/

http://fit.c2.com

Page 22: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

FITorFitNesse?

•  FIT:coreframeworkfortes6ng– Command‐linetool:easilyscriptable

– TestsareWordorExceldocumentssavedasHTML

•  FitNesse:Web‐basedfrontendforFIT– Easilyaccessibletoanyone– TestsareWikipages

– Helpsorganizetestsintosuites

Source: Alex Pukinskis – “Flawless Iterations” – Agile 2005

Page 23: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

WhatdoesFITtest?

•  Whateveryouwant…– Businessrules–  Integra6onpoints– Businessservices– Workflows

– UIsteps

Page 24: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

AsimpleexampleofaFITtest

*Source: http://fit.c2.com/

Page 25: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

FitWorkflow*

•  Startswithwhiteboardconversa6on•  Customer(SME,businessperson,productmanager,etc.)informallydescribenewfeature

•  Programmersandtestersaskques6ons

*Source: http://fit.c2.com/

Page 26: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

FitWorkflow*

•  Customer,workingwithdeliveryteam,refinesexamplesintotables

•  Usebusiness‐friendlytools,suchasMicroso>ExcelandWord,tocapturetesttables

*Source: http://fit.c2.com/

Page 27: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

FitWorkflow*

•  Deliveryteamsuggestaddi6onalareastocover

*Source: http://fit.c2.com/

Page 28: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

FitWorkflow*

•  DeliveryteamformattablesforusewithFit

*Source: http://fit.c2.com/

Page 29: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

FitWorkflow*

•  DeliveryteamcreatesFit“fixtures”(smallpieceofcodethattranslatestesttablesintoexecu6ontestsagainsttheso>ware)

*Source: http://fit.c2.com/

Page 30: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

FitWorkflow*

•  ExecuteFitdocumentagainstso>ware•  Atfirstsometestsmaybefailing(red)

*Source: http://fit.c2.com/

Page 31: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

FitWorkflow*•  Deliveryteamcollaborateswithcustomertoincrementallyenhancetesttables

•  Deliveryteamimplementsso>waretomeettestexecu6on(green)*Source: http://fit.c2.com/

Page 32: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

FitWorkflow*

•  Documentiskeptforregressiontes6ng•  Documentisincludedinautomatedbuildtoensureeverythingkeepsworking

•  Asques6onsariseaboutfunc6onalityanexampleisaddedandFitreportstheanswer

*Source: http://fit.c2.com/

Page 33: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

Exercise:AcceptanceTests

Createini6alacceptancetestsusingFitgoingthroughen6reworkflow.

Page 34: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

HowdoesFITwork?

Source: Alex Pukinskis – “Flawless Iterations” – Agile 2005

Page 35: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

Howdeep/widetotestwithFit?

•  Bestusedfor“businessrules”•  JustunderUIlayer•  CantestUIworkflowbutbriVle(UIchangesoccurmoreo>en)

•  Testserviceinterfaces(SOA,J2EE,…)•  Definehowsystemshouldhandlesitua6ons

•  Acceptancetestsshouldtestintegratedsystem

Page 36: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

ColumnFixture

•  ColumnFixturemapscolumnstofixtureelements•  Greatfortes6ngcalcula6ons•  Abstract‐doesn’tdefinehowbusinessruleisused•  GenerallytheleastbriVletables

eg.Calculator key x() flash()

100 100 false enter 100 false 0 0 false / 0 true clx 0 false

*Source: http://fit.c2.com/

Page 37: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

RowFixture

•  RowFixturecomparesrowsintestdatatoresultsfromsystemundertest

•  Returnedvaluescomparedtothoseintable•  Algorithmmatchesrowswithsystemresultsbasedononeormorekeys

Times

task total time total billing

background 8:00 0.00

stqe 6:00 0.00

usda 0:00 0.00

conference 10:00 1500.00

*Source: http://fit.c2.com/

Page 38: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

Ac6onFixture

•  Ac6onFixtureinterpretsrowsassequenceofcommandsperformedinorder

•  Firstcolumncontainscommand

•  Subsequentcolumnscontainsvaluesinterpretedbycommand

•  GenericAc6onFixturecommandsare:–  startaClass‐directedtoinstanceofaClass,similartonaviga6ngtoapar6cular

GUIscreen

–  enteraMethodanArgument‐invokeaMethodwithanArgument,similartoenteringvaluesintoGUIfields

–  pressaMethod‐invokeaMethodwithnoarguments,similartopressingGUIbuVon

–  checkaMethodaValue‐‐invokeaMethodwithnoarguments,comparereturnedvaluewithaValue,similartoreadingvaluesfromGUIscreen

Page 39: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

Ac6onFixtureexample•  Searchingformusic…

eg.music.Realtime

enter select 2 pick an album

press same album find more like it

check status searching

await search complete

check status ready

check selected songs 2

*Source: http://fit.c2.com/

Page 40: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

Bringingitalltogether•  Usesequencesoftables•  Build/Operate/CheckPaVern(hVp://fitnesse.org/)– Oneormoretablestobuildtestdata(ColumnFixture)

– Usetabletooperateondata– UseColumnFixtureorRowFixturetoverifytheresults

•  Cleanupdatacreated

Page 41: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

FitLibraryAddi6onalFixtures

•  CommonFitusagepaVernsprovidedbyframework

•  Allowsmoresophis6catedtests– DoFixture‐tes6ngac6onsondomainobjects–  SetupFixture‐repe66vedataentryatstartoftest–  CalculateFixture‐alterna6vetoColumnFixture– ArrayFixture‐orderedlistshandledautoma6cally–  SubsetFixture‐testspecificelementsofalist

•  Canoperatedirectlyonsystemcomponentswithoutwri6ngcustomfixtures

Page 42: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

OrganizingFITtests

•  Maintainsuiteofregressiontestsfrompastitera6onsthatalwayspass

•  Run“regression”testswithbuild.•  Maintainasuiteof“inprogress”testsforthecurrentitera6on–  Begintheitera6onwithalltestsfailing–  Endtheitera6onwithmosttestspassing

•  Attheendoftheitera6on,movenewlypassingtestsintoregressionsuite–  BewaretheFitnesse“Refactor/Move”command

Page 43: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

ExecutableRequirements

•  Unambiguousdefini6onofrequirements•  Executabledocumenta6on

•  Repeatableandspecific•  Thesecond‐mostdetailedspecifica6onofthecustomer’srequest

Page 44: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

OtherAgileTes6ngTools

•  OpenSourceWebUITes6ngtools–  StoryTestIQ–  WATiR–  Selenium

–  CanooWebTest

•  Gothe“lastmile”toverifythingsfittogether

•  TestswriVenandmaintainedincrementally•  TendtobemorebriVle

Page 45: UW ADC - Course 3 - Class 1 - User Stories And Acceptance Testing

Whatabouttradi6onaltes6ngtools?

•  Whydon’tweuseSilkTest,TestDirector,QuickTestPro,etc.forAgiletes6ng?–  Expensive– Automatedtoolsarerecord‐and‐playback;briVle

–  TiesourteststotheUIimplementa6on– Manualtools(TestDirector)taketoolongtorun.

– Workfineasaninterimstrategy(especiallyifyoualreadyhavethelicenses)

–  ConsideraddingFITasacomponentofyourtes6ng