Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
różnicepomiędzytestamimanualnymiiautomatycznymi
Ludzieczęstomyślą,żeskorotestyautomatycznemogąwykonywaćsięszybkoiwkrót-
kimokresieczasupokrywaćdużączęśćoprogramowania,topozwalająonenaszybsze
wyszukaniedużejilościbłędówpoprzezlosowelubsystematycznepróbypokryciawielu
przypadkówużycia.Tych,którzyrównieżtaksądzą,muszęrozczarować,boniestetynie
tojestpodstawowymcelemtestowaniaautomatycznego.Abybyćwstanieznaleźćbłędy,
testpowinienwiedzieć,czegonależysięspodziewać,aczegonie.Oiletestermanual-
nyposiadatakąintuicyjnąwiedzę,tomaszynajużnie.Jeśliwydajenamsię,żemożemy
sformalizowaćtereguływprostysposób,którymożnazautomatyzować,topowinniśmy
pomyślećjeszczeraz.Wwiększościprzypadkówregułytetakskomplikowanejaksam
testowanysystem...Pamiętajmy,żegłównymcelemtestowaniaautomatycznegoniejest
znalezienietakdużejliczbybłędów,jaktotylkomożliwe,aleraczejdostarczenieszybkiej
informacjizwrotnejotym,czysystemzachowujesięwoczekiwanysposób,jakzostało
tozdefiniowanewtestach.
Zdrugiejstronyistniejąprzypadki,wktórychmożemysformalizowaćpewneistotne
(choćbardzoogólne)regułynatematgranicmożliwychrezultatówsystemuiutworzyćtest
automatyczny,którysprawdziwielemożliwychwejśćlosowolubsekwencyjneispraw-
dzi,czyuzyskiwanerezultatyfaktyczniemieszcząsięwoczekiwanymprzedziale.Jeśli
spróbujemynapisaćlubzmodyfikowaćtakietestywceluzweryfikowaniapewnychnietry-
wialnychreguł,wówczastesttakibardzoszybkostaniesięnatyleskomplikowany,żetrud-
nobędzienamgodalejanalizowaćiutrzymywać.Ztegopowoduztechnikitejbędziemy
chcielikorzystaćjedyniewceluweryfikacjireguł,któreprostedozdefiniowania,ale
majązasadniczeznaczenie.Wewszystkichpozostałychprzypadkachnależystosowaćpro-
stetesty,któreweryfikujątylkojedenlubkilkakonkretnychprzykładów.Technikatana-
zywanajesttestowaniemopartymnawłasnościach(property-basedtesting),anajbardziej
rozpoznawalnymnarzędziem,któreobsługuje,jestQuickCheck,napisanypierwotnie
wjęzykuprogramowaniaHaskell,apóźniejprzeniesionydowieluinnychpopularnychjęzy-
ków,takichjakJava,F#(którymożebyćwykorzystywanyprzezC#iinnejęzykiplatfor-
my.NET),Python,Ruby,JavaScript,C/C++iwieleinnych.Ponieważtemattenodnosi
sięjedyniedorzadkichprzypadków,wykraczaonpozazakrestejksiążki.
Kolejnąiprawdopodobniebardziejprzydatnąopcjąjesttworzeniepółautomatycznych
testówlubnarzędzidlatesterówmanualnych,którepomogąimszybciejpokrywaćwiele
przypadków.Samąanalizęzgodnościuzyskiwanychrezultatówzoczekiwaniamipozosta-
wiasięwrękachtesterówmanualnych.Informacjenatemattego,kiedytworzyćigdzie
używaćtakichnarzędzi,trzebaznaleźćsamodzielnie,ponieważtentematrównieżwykra-
czapozazakrestejksiążki.Takwięcodtejpory,jeśliniezostanietookreśloneinaczej,-
dziemymówićwyłącznieozaplanowanymtestowaniumanualnymorazjegoautomatyzacji.
MaŁpiETESTOWaniEaUTOMaTYCZnETESTOWaniEEKSpLOraCYJnE
Terminmałpietestowanie(monkeytesting)odnosisiędopraktykilosowegowciskaniaklawiszy
(lubwykonywaniaoperacjibezrozumieniaichkontekstu)jakmogątorobićmałpylubmałe
dzieciwcelusprawdzenia,czydanyprogramulegnieawarii,czyteżnie.Choćtechnikęmożna
włatwysposóbzautomatyzować,tojednakzkilkupowodówniebędzieonazbytefektywna:
17