Ohjelmistotuotanto s

Samankaltaiset tiedostot
Laadunvarmistustekniikat

Laadunvarmistustekniikoita. Ohjelmistotuotanto. Testaus termejä. Testaus periaatteita. Testaus havaintoja. Testaus havaintoja

Kontrollipolkujen määrä

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmiston testaus ja laatu. Testaustasot

Testaus ja laadunvarmistus

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi. Verifiointi- ja validointitekniikat. Verifiointi- ja validointitekniikat II

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa:

Yhteenveto. Menettelytavat

58160 Ohjelmoinnin harjoitustyö

Ohjelmistotuotantoprojekti

Dynaaminen analyysi I

Harjoitustyön testaus. Juha Taina

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaussuunnitelma. Asdf. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen

7. Verifiointi ja validointi

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

Convergence of messaging

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmistojen virheistä

TAMPEREEN TEKNILLINEN YLIOPISTO

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmistotuotanto, verifiointi ja validointi Syksy Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi

Testaaminen ohjelmiston kehitysprosessin aikana

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

Dynaaminen analyysi III

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

TAMPEREEN TEKNILLINEN YLIOPISTO

Ohjelmistotestaus -09

Testaussuunnitelma. Ohjelmistotuotantoprojekti Nero. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmistojen testaus

Testaussuunnitelma. PUSU-ryhmä. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaus elinkaaressa. Testaustasot ja vaiheet

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Testaussuunnitelma Labra

Ohjelmistotekniikka - Luento 10

Ohjelmistojen suunnittelu

3. Testaus osana ohjelmistoprosessia

Lohtu-projekti. Testaussuunnitelma

Ohjelmistotekniikka - Luento 10 Jouni Lappalainen

Dynaaminen analyysi IV

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen

Ohjelmiston testaussuunnitelma

Onnistunut Vaatimuspohjainen Testaus

Testaussuunnitelma. Opeapuri. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Mihin kaikkeen voit törmätä testauspäällikön saappaissa?

Ohjelmistotekniikka - Luento 3

Testaussuunnitelma. Oppimistavoitteiden hallintajärjestelmä harri

Ohjelmistotekniikka - Luento 9 Jouni Lappalainen

Järjestelmätestauksen vaatimukset. 6. Järjestelmätestaus (B, 14) Järjestelmätestauksen korkean tason testausstrategia

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

T Testiraportti - järjestelmätestaus

Testaussuunnitelma. Karstula. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Suunnitteluvaihe prosessissa

T Testiraportti - integraatiotestaus

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Testaussuunnitelma. Ohjelmistotuotantoprojekti XPerf. Helsingin yliopisto. Tietojenkäsittelytieteen laitos

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Hirviö Järjestelmätestauksen testitapaukset ja suoritusloki I1

Ohjelmistotuotanto, s /27/2003

Verifiointi ja validointi

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1

Ohjelmistotuotanto, s

Test-Driven Development

Testaussuunnitelma. pokeriv3. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaustyökalut Sini Mäkelä

Ohjelmistotestauksen suunnittelu - Case: A-lehdet Oy:n laskujen tulostusohjelma

Ohjelmoinnin perusteet Y Python

10. Tarkastukset. Tarkastusten rakenne

Tarkastusten rakenne. 10. Tarkastukset. Tuotoksen tekijän rooli. Tarkastustiimi. Tarkastusprosessin vaiheet. Tarkastusprosessi

Ohjelemistotuotanto, syksy 1998 /Prosessi Prosessimallit

Testaussuunnitelma. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

T Testiraportti - integraatiotestaus

Tutkintotyö, joka on jätetty opinnäytteenä tarkastettavaksi Jyri Jokelan insinöörin tutkintoa varten Tampereella

2. Ohjelmistotuotantoprosessi

Ohjelmistotuotanto, prosessit Syksy Ohjelmistotuotantoprosessi. Prosessimalli. Prosessimallien perustehtävät. Prosessimallin vaihejako

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

Software engineering

Ohjelmistojen mallintaminen. Luento 11, 7.12.

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

Ohjelmistotestauksen perusteita Luento 1 Antti-Pekka Tuovinen

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Määrittelydokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaussuunnitelma. Pizzeria - Pitseria HAAGA-HELIA ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma. WebPizza

Testaus. tulosavaruus. Testaus

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

CoMa - Testausdokumentti

dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

Ohjelmistotestauksen perusteita I Luento 1 Antti-Pekka Tuovinen

Transkriptio:

Laadunvarmistustekniikoita Ohjelmistotuotanto 1 testaus (testing) ohjelman suorittamista tarkoituksena löytää virheitä tarkastukset (inspections, reviews) asiantuntijoiden suorittamia dokumentin (voi olla myös koodi) läpikäyntejä tarkoituksena löytää virheitä Osittain samoja virheitä - osittain erilaisia 1 Harri Laine 2 Testiajo on onnistunut, jos se on paljastanut ohjelmistosta aikaisemmin havaitsemattoman virheen Hyvä testitapaus on sellainen, joka suurella todennäköisyydellä paljastaa aiemmin havaitsemattoman virheen virhe (error, mistake, bug): ohjelmiston poikkeaminen sen spesifikaatista (=määrittelystä) vika (fault) virheellisen ohjelmakohdan suoritus - vika esiintyy siis vain, jos virheellinen ohjelmakohta suoritetaan häiriö (failure) viasta aiheutuva ulkoisesti havaittava poikkeama ohjelmiston spesifikaatiosta kaikki virheet ja viat eivät välttämättä johda häiriöön Harri Laine 3 Harri Laine 4 Havaintoja: ammattiohjelmoija tuottaa ~1,2 virhettä / 200 riviä ohjelmakoodia uudessa 200000 rivin ohjelmatuotteessa on ~1200 virhettä pitkäänkin käytössä olleissa ohjelmistoissa on noin 1 virhe / 1000 riviä koodia yhden virheen poistamiseen kuluu noin 12 henkilötyötuntia on erittäin tehoton tapa varmistua ohjelman toimivuudesta voi osoittaa ohjelmiston virheellisyyden ei sen oikeellisuutta Tyypillinen virhejakauma Beizer: Software testing techniques, 2 ed, van Nostrand Reinhold, 1990 ohjelmakoodin lauseissa 25% ohjelmakoodin tietorakenteissa 22% spesifikaation toteutustavassa 16% moduulien/komponenttien integroinnissa 9% huolimattomuusvirheitä 9% spesifikaatioissa 8% Harri Laine 5 Harri Laine 6 H.Laine 1

Testitapaus: tietty ohjelmiston syötearvojen joukko Rakenteellinen eli sisäinen eli lasilaatikkotestaus (structural / glass box / white box testing) perustuu ohjelmakoodin mukaiseen läpikäyntiin eli testattava komponentti on läpinäkyvä laatikko, joka paljastaa sisäisen rakenteensa testitapaukset valitaan siten, että ne aiheuttavat ohjelmakoodin mahdollisten suoritusreittien läpikäyntiä ohjelmasilmukoista johtuen kaikkien mahdollisten suoritusreittien läpikäynti ei ole yleensä mahdollista järkevässä ajassa Toiminnallinen eli funktionaalinen eli ulkoinen eli mustalaatikkotestaus (functional / black box testing) perustuu ohjelmiston ulkoisesti havaittavan toiminnan tarkasteluun testattava komponentti on musta laatikko, jonka sisään ei nähdä syötteet -> komponentti -> tulokset ok? Suuresta syöteavaruudesta johtuen (esim. R: real) kaikkien mahdollisten syötteiden testaus ei ole mahdollista järkevässä ajassa Harri Laine 7 Harri Laine 8 Spiraalikuva ohjelmistotuotantoprosessista Kokonaissuunnittelu S Vaatimukset R Suunnittelu D Koodi U yksikkötestaus I integrointitestaus V validointitestaus St järjestelmätestaus tuotanto sisäänpäin - testaus ulospäin yksikkötestaus (unit test): testataan ohjelmiston jokainen komponentti (moduuli, aliohjelma, luokka, ) tyypillisesti white box integrointitestaus (integration test) testataan komponenttien yhteistoiminta validointitestaus (validation test) testataan ohjelmiston ja vaatimusmäärittelyn vastaavuus järjestelmätestaus (system test) testataan järjestelmä kokonaisuudessaan (mukana laitteistot) tyypillisesti black box Harri Laine 9 Harri Laine 10 strategia: V-malli strategia: V-malli Määrittely Integrointitestaus V-malli kytkee rakentamisvaiheen ja testausvaiheen suunnitelma laaditaan testausvaihetta vastaavassa rakentamisvaiheessa Kussakin testausvaiheessa ohjelmiston toimintaa verrataan vastaavan rakentamisvaiheen tuottamaan spesifikaatioon ohjelmointi Järjestelmätestaus Arkkitehtuurisuunnittelu Moduulisuunnittelu Moduulitestaus virheiden korjaamisen hinta Harri Laine 11 Harri Laine 12 H.Laine 2

tyypit tyypit yksikkötestaus toimiiko moduuli irrallisena kokonaisuutena? toimivatko paikalliset tietorakenteet ja sisäiset suoritusreitit voidaan tarvita erityisiä tynkiä (stub) ja ajureita (driver) korvaamaan testattavan kutsumia ja sitä kutsuvia moduuleja kutsuu kutsuu ajuri testattava tynkä 1... Integrointitestaus toimiiko moduulijoukko integroituna kokonaisuutena (kun yksittäiset moduulit on ensin testattu erikseen) toimiiko tiedonvälitys moduulien rajapinnoilla? toimiiko moduulien kytkentä? Tapa integroida vaikuttaa testaukseen big bang - kaikki valmiiksi, sitten kasaan ja testataan poluittain (threads)- toteutetaan ja testataan suorituspolku kerrallaan top down (tarvitaan tynkiä), bottom up (tarvitaan ajureita) tynkä 1 Harri Laine 13 Harri Laine 14 Testityypit Validointitestaus / järjestelmätestaus (usein yhdistetty) toimiiko kokonaisjärjestelmä niin kuin tuotantoprosessin alussa on määritelty? millainen on ulkoisesti havaittava toiminta, suorituskyky, varmuus, siirrettävyys, virheensietokyky, ylläpidettävyys,..? toimivatko ohjelmisto ja laitteisto yhdessä? testilajeja: alfa-testaus asiakkaan suorittama tuottajan tiloissa ja laitteilla beta-testaus asiakkaan suorittama omassa todellisessa käyttöympäristössään testaus perustuu useimmiten syötemuuttujien arvoalueen (domain) osittamiseen => arvoaluetestaus (domain testing) parametrin tyyppi (jos tiedossa) kertoo arvoalueen var I: integer; I kokonaisluku (välillä - < Ι < + ) ohjelma synnyttää arvoalueita esim: if I<0 then else. - < Ι <0 0 Ι < + Harri Laine 15 Harri Laine 16 Arvoaluetestauksen periaate: valitaan yksi testitapaus arvoalueen sisältä valitaan arvoalueen rajat valitaan yksi testitapaus välittömästi arvoalueen rajojen ulkopuoleta esim: spesifikaatiossa arvoalue: 0 Ι 100, testiaineisto: I=50 (sisällä, voisi olla yhtä hyvin vaikka 78) I=0 (alarajalla) I=100 (ylärajalla) I= -1 (alarajan ulkopuolella) I= 101 (ylärajan ulkopuolella) Ekvivalenssiluokat T.J.Ostrand, M.J.Balcer: The Category-Partition Method for Specifying and Generating Functional Tests, CACM, 31, 6, 1988, pp 676-686 jokainen arvoalue jaetaan ekvivalensiluokkiin, joille pätee jokainen tiettyyn ekvivalenssiluokkaan kuuluva arvo käyttäytyy testauksen kannalta samalla tavalla jokainen luokan arvo paljastaa virheen yhtä suurella todennäköisyydellä jos toiminta on virheellistä arvolla α, se on virheellistä muillakin ko. luokan arvoilla jos toiminta on oikein arvolla α, se on oikein myös muilla ko. luokan arvoilla testitapauksiksi kustakin luokasta 1 (tai muutama) arvo Harri Laine 17 Harri Laine 18 H.Laine 3

epäkelvot arvot kelpoarvot=arvoalue ekvivalenssiluokkia var I: integer; -2-1 0 1 2 kelvollisten luokat I<0 I=0 I>0 valinta kelvottomat 3.14 abc Harri Laine 19 Harri Laine 20 testauksen aikana ekvivalenssihypoteesi saattaa osoittautua pätemättömäksi Luokkarajoja on tällöin muutettava toimii oikein oikein toimivat toimii väärin väärin toimivat Harri Laine 21 Harri Laine 22 Jaa ohjelmisto spesifikaation perusteella erikseen testattaviksi osajärjestelmiksi Tunnista jokaisen osajärjestelmän syötemuuttujat testitapaus on syötemuuttujien alustusarvojen joukko Määrittele jokaiselle syötemuuttujalle sen tekijät tekijä, kategoria (category) on muuttujan keskeinen ominaisuus esim. järjestettävä taulukko tekijöitä: taulukon koko, alkioiden tyyppi, alkioiden minimiarvo, alkioiden maksimiarvo, minimiarvon sijainti, maksimiarvon sijainti - asiat jotka ovat oleellisia järjestämisen toimimisen kannalta Harri Laine 23 Määrää jokaiselle tekijälle arvojen ekvivalenssiluokat (choice) esim. järjestettävä taulukko / taulukon koko: {koko=0} {koko=1} {2<=koko<=100} {koko>100} Tuota testimäärittely jokaiselle osajärjestelmälle tekijälista+ kunkin tekijän ekvivalenssiluokat näiden perusteella voidaan määrätä testikehykset (test frame) testikehys muodostetaan valitsemalla joukko tekijöitä tarkoituksena on muodostaa testitapaus valitsemalla ensin yksi ekvivalenssiluokka kuhunkin testikehyksen tekijään liittyen ja sitten yksi arvo kustakin valitusta luokasta Harri Laine 24 H.Laine 4

0 1 2 101... 50 100 taulukon koko testikehys valitsee ekvivalenssiluokat testitapaus valitsee arvot tyyppi minimi arvo testimäärittely valitsee tekijät maksimi arvo minimin sijainti Harri Laine 25 Lisää testimäärittelyihin rajoitukset, jotka koskevat tekijöiden ja ekvivalenssiluokkien mukaanottamista testikehyksiin esim, jotkin ekvivalenssiluokat eivät voi olla samaan aikaan voimassa, kuten {taulukon koko=0} ja {minimin sijainti>100} rajoituksilla vähennetään testikehysten ja -tapausten lukumäärää Tuota testikehykset automaattisesti testaustyökalulla Tuota testikehyksiin liittyvät testitapaukset (työkalulla) Yhdistä loogisesti yhteenkuuluvat testitapaukset testijonoiksi (test script) Harri Laine 26 Testaa osajärjestelmät suorittamalla testijonot Ylläpidä testimäärittelyjä ja -tuloksia testitietokannassa jos saman ekvivalenssiluokan tapaukset aiheuttavat ristiriitaista toimintaa, muuta luokkajakoa. Ekvivalenssiluokat Luokittelu on pyrittävä tekemään niiden ominaisuuksien mukaan, jotka todennäköisimmin aiheuttavat virheitä Testitapauksia on valittava luokan koon mukaan: iso luokka - enemmän tapauksia Huono luokittelu paljastaa virheitä yhtä tehottomasti kuin puhtaasti satunnainen testaus, missä koko arvoalue tutkitaan yhdeksi ekvivalenssiluokaksi ja testitapaukset valitaan satunnaisesti Harri Laine 27 Harri Laine 28 H.Laine 5