Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Uzyskiwaniemaksimumkorzyścizautomatyzacjitestów
kodmazwyklemniejbłędówijestłatwiejgoutrzymaćbezwprowadzaniadoniegono-
wychbłędów.Dodatkowokodłatwiejszywutrzymaniu,oznaczarównieżwyższąpro-
duktywność,ponieważpozwalaonprogramistomszybciej,łatwiejiprzedewszystkim
bezpieczniejimplementowaćcorazwięcejfunkcji.
Acoznowymifunkcjami?Niebędziemytutajzbytniowchodzićwszczegóły(więcejna
tentematmożnaznaleźćwrozdziale16,poświęconymmetodycetworzeniaoprogramowa-
niasterowanegotestamiakceptacyjnymi,ATDD),alepodstawowaideapoleganatym,żeza
każdymrazem,gdyopracowywanajestjakaśnowafunkcja,wrazzniątworzonepowiąza-
nezniątesty.Funkcjataka(lubhistoryjkaużytkownika)uznawanajestzahukończoną”tylko
wtedy,gdyprzejdzieonapomyślniewszystkietestyiniezostanąwniejznalezioneżadnebłędy.
Jużsłyszętesceptycznegłosy:hŚwietnie…aletonigdyniezadziaławmoimzespole…”.
Przekonajmysięwięc,żemożebyćinaczej:jeślizaczniemystosowaćteideejużodpierwszego
dnia,wówczaspodejścietobędziełatwedozrealizowania.Prawdopodobniejednakniezro-
bimytego,takwięcwprzypadkuichzastosowaniaw(dużo)późniejszymczasieosiągnięcie
tegocelubędziedużotrudniejsze.Jednakwrozdziale4wyjaśniamy,wjakisposóbmożemy
stopniowozbliżaćsiędotegoceluiosiągnąćwiększośćzomówionychwcześniejkorzyści
wdużokrótszymczasie.Ponadtowrozdziale15pokazujemy,żedowolny,nawetnaszwłasny
zespółjestwstanietoosiągnąć.Wrozdzialetymprezentujemykonkretneporadydotyczące
tego,wjakisposóbprzedstawićszybkiwzrostzinwestycjikażdemuinteresariuszowi,który
możesprzeciwiaćsięwprowadzeniutejzmiany,nawetjeśliniejesteśmymenedżerami.
8
HiSTOrYJKiUŻYTKOWniKa
Historyjkaużytkownika(userstory)jestterminemstosowanymwramachmetodykizwinnego
tworzeniaoprogramowania,którywzwięzłysposóbopisujeżądanąfunkcję.Zamiastdefniować
wyczerpującyiszczegółowydokumentwymagańnapoczątkuprojektu,anastępnieimplemen-
towaćgoprzezdługiokresczasu,jakmatozwyklemiejscewmodelukaskadowym,wramach
metodykiprogramowaniazwinnegostosujesiępodejściepolegającenaprzyrostowymdodawa-
niudooprogramowaniamałychfunkcji.Każdatakaniewielkafunkcjalubzmianajesthistoryj-
użytkownika.Historyjkaużytkownikaniezawszemusisięjednakwiązaćzdodaniemnowej
funkcji.Wniektórychprzypadkachhistoryjkaużytkownikamożebyćrównieżżądaniezmiany
lubnawetusunięciaistniejącejfunkcjiwwynikuuzyskaniainformacjizwrotnejodużytkownika.
Historyjkiużytkownikapowinnymiećstosunkowowąskizakres,takabymożnajebyłoszybkoza-
implementowaćidośćwcześnieoddaćwręceklienta(lubprzynajmniejwręcewłaścicielapro-
duktu)wceluuzyskaniainformacjizwrotnych.Jednak,mimożehistoryjkaużytkownikapowinna
byćzwięźlezdefniowana,tonadalpowinnaonastanowićjakąśwartośćdlaużytkownikakońco-
wego.Zwyklepotrzebapewnejpraktykiikreatywności,abymócrozłożyćdużąfunkcjęnaszereg
takichhistoryjek
8,alerzadkokiedytrafająsięfunkcje,którychniedasięwtensposóbpodzielić.
Choćnicniepowstrzymujenasprzedbardzoszczegółowymopisywaniemhistoryjkiużytkow-
nika,topowinniśmysięraczejskupićnaogólnejideiijejwartościdlaużytkownikakońcowe-
go,pozwalajączespołowinaopracowaniewłasnychkreatywnychrozwiązańdanegoproblemu.
8Pewnewskazówkinatematdzieleniadużychhistoryjekużytkownikamożnaznaleźćpodadresem
http://agileforall.com/new-story-splitting-resource/.
15