Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.WproWadzeniedoteStoWania
1.5.
Ogólnezasadytestowania
Wciągukilkudziesięciuostatnichlatpojawiłoswielezasaddotyczącychtestowania
oprogramowania.Poniższalista,zaczerpniętaz[13],podajesiedemuniwersalnychza-
sad,któreobowiązująniezależnieodzakresutestowania,rodzajutestowanegosystemu
czyużywanychtechnik.
Zasada1.Testowanieujawniausterki.hTestowaniepokazujeobecność,aniebrakuste-
rek”tosłynnezdaniezostałowygłoszoneprzezDijkstrępodczasdyskusjinakonfe-
rencjihSoftwareEngineeringTechniques”w1969rokuwRzymie[21].Test,którego
wynikróżnisodoczekiwanego,pokazujeistnieniejakiegośproblemuwkodzielubdo-
kumentacji.Wystarczyjedentakitest,abyśmymoglistwierdzićwystąpieniebłędu.Jeśli
jednakwszystkietestydadząpoprawne,tzn.zgodnezoczekiwaniem,wyniki,czyjestto
dowódpoprawnościtestowanegoprogramu?Niestetynie.Wkodziemożeistniećde-
fekt,któregożadentestniewykrył.StwierdzenieDijkstrymawręczcharaktertwierdze-
niamatematycznegomożnajeformalnieudowodnićnagruncieteoriirozstrzygalności.
Formalnie,problemstwierdzeniapoprawnościprogramujestnierozstrzygalny,tozna-
czynieistniejealgorytmstwierdzający,czyprogrampodanymunawejściujestpopraw-
ny
2.Oczywiścietestowaniezmniejszaprawdopodobieństwowystępowaniawprogramie
niewykrytychdefektów,niemniejnieznalezienieżadnychusterekniejestdowodempo-
prawnościoprogramowania.
Zasada2.Testowaniegruntownejestniewykonalne.Przetestowaniewszystkichm-
liwychkombinacjiwarunkówpoczątkowychidanychwejściowychdoprogramujest
wykonalnetylkowtrywialnychprzypadkach.Pozatrywialnymiprzypadkaminiedas
równieżprzetestowaćwszystkichmożliwychścieżekprzepływusterowania.Jeśliwpro-
gramieistniejeprzynajmniejjednapętla,tomożesonawykonywaćdowolnąliczbę
razy,zatemistniejenieskończeniewieleścieżekwykonania.Nawetjeślizałożymy,że
dziedzinawejściowajestograniczona(wkońcukomputeroperujenazbiorachdyskret-
nych,nieciągłychikażdazmiennamożeprzyjmowaćskończonąliczbęmożliwychwar-
tości),toitakliczbakombinacjiwejśćczyścieżekjestzbytduża,abydałasprzetesto-
waćwsensownymczasie.
zmienna(ang0variable)elementpamięcikomputera,dostępnywprogramieprzez
swojąnazwę
Rozważmyprzykładpseudokoduzlistingu1.3.
2Poprawnośćprogramuwszczególnościwymaga,byalgorytmmiałwłasnośćstopu,tzn.abydlakażdego
możliwegowejściazakończyłswojąpracęwskończonymczasie.Jeśliprogramszapętla,oznaczatoistnienie
usterki.Wiadomo,żetzw.problemstopujestproblememnierozstrzygalnym,awięcnierozstrzygalnyjesttakże
problemstwierdzenia,czyprogramniezawierausterek.
14