Testaus käsite Sekalaista asiaa Sami Kollanus 15.11.2006 Jos ajatellaan, että = V&V, voidaan erottaa: Staattinen Dynaaminen Toisaalta voidaan määritellä Myersin (1979) mukaan: Testaus on ohjelman suoritusta, jonka tarkoituksena on löytää virheitä (Myers 1979) 2 Testauksen käsitteestä Kattavuusmitat Laatujärjestelmä Laadunohjaus Laadunvarmistus V&V Lausekattavuus (statement coverage) Päätöskattavuus, haarakattavuus (decision coverage, branch coverage) Ehtokattavuus (condition coverage) Tarkastukset, läpikäynnit, Moniehtokattavuus (multicondition coverage) Polkukattavuus (path coverage) Haikala & Märijärvi 2002. 3 Haikala ja Märijärvi, 2002. Ohjelmistotuotanto. 4
Harjoitus: kattavuuden laskeminen Kontrollipolkujen määrä if ((a>1) & (b=0)) then do x=x/a; if ((a=2) (x>1)) then If (a>1) & (b=0) False If (a=2) (x>1) False True True x=x/a; x=x+1; end x=x+1; Maaret Pyhäjärvi Laske kattavuudet: Lause Haara Moniehto Polku [Myers 1979] 5 5 solmua 120 permutaatiota 10 solmua 3 628 800 permutaatiota 20 solmua 2,4 x 10 18 permutaatiota -> 1 mrd suoritusta sekunnissa = 77 vuotta -> pikatestissä 1 mrd * tyhjä silmukka = 2,4 s. 6 Testauksen kattavuus Testauskäsitteitä Mitä saadaan aikaan läpikäymällä kaikki polut? Minkälaisia virheitä löydetään? Mitä virheitä ei löydetä? Lisää kattavuudesta: http://www.kaner.com/coverage.htm Alfa (toimittajan luona) Beta (asiakkaan luona) Julkistus (eri versio/konfiguraatio) Regressio, uusinta (vrt. uudelleen) 7 8
Sisäinen vs. ulkoinen Testauksen V-malli Sisäinen, lasilaatikko (white-box testing) Algoritmien virheettömyys Otetaan huomioon komponentin rakenne ja tunnistetaan riskikohdat Testiaineisto suunnitellaan niin, että mahdollisimman suuri osa koodista tulee toteutetuksi Ulkoinen, mustalaatikko (black-box testing) Keskitytään ulospäin näkyvään toimintaan toiminnallisuuksiin Verrataan testattavan kokonaisuuden vastaavuutta vaatimusmäärittelyyn Tutkitaan tulosarvoja (tiloja) suorituksen jälkeen Voidaan suunnitella määrittelyvaiheessa Päävaatimusten määrittely Järjestelmän spesifikaatio Päävaatimusten speksit Järjestelmän speksit Arkkitehtuurin speksit Moduulien speksit Komponenttien koodaus / Komponenttien Arkkitehtuurisuunnittelu Komponenttisuunnittelu Integrointi Hyväksymis Järjestelmän 9 10 Lähestymistapa integrointitestauksessa Oraakkeli Top-down (osittava) Testataan ensin ylimmän tason moduulit niin, että korvataan alemman tason moduulit tynkämoduuleilla Bottom-up (kokoava) Testataan ensin alemman tason moduulit ja ylempi taso korvataan testiajureilla http://www.cs.jyu.fi/~sakkinen//ai neisto/oraakkeli.ppt 11 12
Korttiesimerkki Yhteenvetoa Mitkä kortit täytyy kääntää seuraavan ehdon testaamiseksi: Jos kortissa on vokaali, niin sen toisella puolella on parillinen numero 2 A B 1 Kattava on jo laskennallisesti mahdotonta Kattavuus ei pelasta maailmaa! Monen abstraktin tekijän keskinäisten riippuvuuksien hahmottaminen on hankalaa Testaus pystyy todistamaan ainoastaan ohjelman virheellisyyden, ei virheettömyyttä Tuotantoprosessissa ohjelmaan jää aina virheitä, käytettävistä menetelmistä huolimatta > Kätännössä rajalliset resurssit, jotka on kohdennettava järkevästi 13 14 Ohjelmiston elinkaarikustannukset Testauksen rajallisuus 1 2 3 4 5 6 Vaihe Vaatimukset Määrittely Suunnittelu Koodaus Integrointi Testaus Kustannusosuus 2 % 5 % 6 % 5 % 7 % 8 % Pelkkä ei riitä Ei löydä puutteita Ei toteuta ohjelman validointia Ei kykene arvioimaan arkkitehtuurin toimivuutta, ylläpidettävyyttä, dokumentaatiota yms. Virheet voivat kumota toisensa -> ei näy testauksessa 7 Ylläpito 67 % Haikala ja Märijärvi, 2002. Ohjelmistotuotanto. 15 16
Milloin sitten lopettaa? Yleisiä suosituksia Kunnes aika tai rahat loppuvat Kun virhekäyrä tasaantuu Kompleksisuusmitat testauksen resurssien arvioinnissa Kattavuusmittojen käyttö Virheiden syöttö Testaussuunnitelmaan hyväksymiskriteerit Toimintojen on komponenttita tärkeämpää Muutoksen jälkeen on tärkeämpää testata vanhat kuin uudet toiminnot On tärkeämpää testata tavanomaiset tapaukset kuin ääritapaukset Testiohjelmatkin on suunniteltava huolellisesti Virheet pyrkivät kasautumaan Testauksen täytyy olla suunnitelmallista Testaaja eri henkilö kuin tekijä 17 18