Testaus Yleist Testaus on suunnitelmallista virheiden etsimist Tuotantoprosessissa

  • Slides: 17
Download presentation
Testaus

Testaus

Yleistä • Testaus on suunnitelmallista virheiden etsimistä • Tuotantoprosessissa ohjelmaan jää aina virheitä, käytettävistä

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

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%

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

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

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

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

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

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

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

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

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

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

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

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

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

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