Testaus Yleist Testaus on suunnitelmallista virheiden etsimist Tuotantoprosessissa
- Slides: 17
Testaus
Yleistä • Testaus on suunnitelmallista virheiden etsimistä • Tuotantoprosessissa ohjelmaan jää aina virheitä, käytettävistä menetelmistä huolimatta • Hyvät menetelmät, kuten katselmoinnit pienentävät testauksen tarvetta • Testaus pystyy todistamaan ainoastaan ohjelman virheellisyyden, ei virheettömyyttä • Testi on onnistunut, kun tulos on oikea ja ohjelman (tai testattavan osan) sisäinen tila on muuttunut oikein
Kontrollipolkujen määrä • 5 solmua – 120 permutaatiota • 10 solmua – 3 628 800 permutaatiota • 20 solmua – 2, 4 x 1018 permutaatiota -> 1 mrd suoritusta sekunnissa = 77 vuotta
Testaukseen riittävästi resursseja! Vaihe Kustannusosuus 1 Vaatimukset 3% 2 Määrittely 5% 3 Suunnittelu 7% 4 Koodaus 6% 5 Moduulitestaus 7% 6 Integrointi 6% 7 Ylläpito 67 %
Testausprosessi Testitapaukset Suunnittelu Testidatan valmistelu Testitulokset Testiraportit Suoritetaan testi Verrataan tuloksia suunnitelmiin Virheen jäljitys
Testauksen V-malli Päävaatimusten määrittely Järjestelmän spesifikaatio Arkkitehtuurisuunnittelu Komponenttisuunnittelu Päävaatimusten speksit Järjestelmän speksit Arkkitehtuurin speksit Moduulien speksit Komponenttien koodaus / testaus Hyväksymistestaus Järjestelmän testaus Integrointitestaus Komponenttien testaus
Yleisiä suosituksia • Toimintojen testaus on komponenttitestausta 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ä
Lähestymistapa integroinnissa • Top-down – Testataan ensin ylimmän tason moduulit niin, että korvataanalemman tason moduulit ”tynkämoduuleilla” • Bottom-up – Testataan ensin alemman tason moduulit ja ylempi taso korvataan testiajureilla • Käytännössä toteutetaan molempia? ?
Kaksi päätapaa testauksessa • Sisäinen testaus (white-box testing) – Algoritmien virheettömyys – Otetaan huomioon komponentin rakenne ja tunnistetaan riskikohdat – Testiaineisto suunnitellaan niin, että mahdollisimman suuri osa koodista tulee toteutetuksi • Ulkoinen testaus (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
Käsitteitä • • • Validointitestaus Regressiotestaus – muutoksen jälkeen Alfa-testaus – Toimittajan luona Beta-testaus – Asiakkan luona Julkistustestaus – Uusi versio
Sisäinen testaus • Kontrollipolkujen läpikäynti – Suunnitellaan testitapaukset niin, että mahdollisimman moni tai ainakin yleisimmät polut tulee läpikäytyä • Silmukat – Ohitus kokonaan – Yksi kierros – N-1, N ja N+1 kierrosta (esim. taulukoiden rajat) • Oliokielissä voi olla vaikeaa
Ulkoinen testaus • • • Puuttuvat tai virheelliset toiminnot Liittymävirheet Virheet tietorakenteissa tai tietokantojen käytössä Alustus- ja lopetusvirheet Suorituskykyongelmat Lukitusongelmat (tieto) syöte tulos
Testisyötteiden valinta • Jaetaan testisyötteet ekvivalenssiluokkiin: – – sallittua väliä pienempi sallitulla välillä sallittua väliä suurempi poikkeukset • Esim. päivämäärän syöttö – testataan päivät 0, 1, 28 -31, 32 – testataan kuukaudet 0, 1, 12, 13 – erikseen karkausvuosi • Tilanne, jolloin rajoitettu tietorakenne tulee täyteen – N-1, N, N+1
Testisyötteiden valinta • Binäärihaku – harmaalaatikkotestaus 1 5 9 14 18 20 23 28 36 • Valitaan kriittiset pisteet, jotka tiedetään, kun tunnetaan sisäinen toteutus • Testataan myös eri kokoisella taulukolla – 1 solu, parillinen määrä, pariton määrä
Virheenjäljitys on ongelmallista • Virhe voi olla kaukana havaitsemispaikasta • Virheen syy voi olla käyttäjässä • Virheellistä toimintaa voi olla vaikea toistaa – syy voi olla pitkän toimintosarjan yhteensattumissa • Virhe voi johtua esim. kääntäjän tai laitteiston erityispiirteistä (reaalilukujen yhtäsuuruus)
Mietittävä ennen korjausta 1. Voiko samanlaisia virheitä olla muuallakin ohjelmassa? Kannattaa tutkia, jos on aihetta epäilyyn. 2. Voiko korjaus aiheuttaa uusia virheitä? Tarkistetaan riippuvuudet huolellisesti. 3. Olisiko virhe voitu välttää tuotantoprosessissa. Otetaan oppia tulevaisuuteen (virhekanta).
Riittävä testaus • Tarvittavan testauksen määrää on vaikea arvioida etukäteen • Voidaan jatkaa ”kunnes rahat loppuvat” • Varsinkin massatuotteissa tehdään kompromissi, jotta saadaan tuote ajoissa markkinoille • Voidaan päättää testauksen lopettamisesta, kun virhekäyrä tasaantuu