Ohjelmistotuotanto, s

Samankaltaiset tiedostot
Ohjelmistotuotanto, s2001 2/27/2003

Testaus ja laadunvarmistus

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

Dynaaminen analyysi III

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

Rakenteellinen testaus (white box)

Yhteenveto. Menettelytavat

Kontrollipolkujen määrä

Luokkatestauksen piirteitä: metodit. 4. Luokkatestaus (B, 10) Luokkatestauksen piirteitä: yliluokat. Luokan valmistelu. Alfa-Omega syklin vaiheet

Ohjelmiston testaus ja laatu. Testausmenetelmiä

58160 Ohjelmoinnin harjoitustyö

Kombinaatiotestauksen tekniikat. 5. Kombinaatiotestaus (P&Y: 11) Luokittelutestauksen algoritmi. Luokittelutestaus. Pankkiautomaattiin kirjautuminen

Johdatus verkkoteoriaan luento Netspace

Dynaaminen analyysi IV

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen

Onnistunut Vaatimuspohjainen Testaus

5. Bugiraportoinnista

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

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

Ohjelmistotuotanto s

Ohjelmien analysointi. ER-kaaviot

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

Laadunvarmistustekniikat

TAMPEREEN TEKNILLINEN YLIOPISTO

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

Testaussuunnitelma Labra

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Ohjelmistotuotanto, kurssikoe , H. Laine Arvostelu

Algoritmit 1. Luento 10 Ke Timo Männikkö

TAMPEREEN TEKNILLINEN YLIOPISTO

UML -mallinnus TILAKAAVIO

Luokkatestauksen piirteitä: metodit. 4. Luokkatestaus (B, 10) Luokkatestauksen piirteitä: yliluokat. Luokan valmistelu. Alfa-Omega syklin vaiheet

5. Kombinaatiotestaus (P&Y: 11)

Harjoitustyön testaus. Juha Taina

Algoritmit 1. Luento 8 Ke Timo Männikkö

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Johdatus verkkoteoriaan 4. luento

Lohtu-projekti. Testaussuunnitelma

Dynaaminen analyysi I

Ohjelmiston toteutussuunnitelma

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen historia

Algoritmit 2. Luento 14 Ke Timo Männikkö

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

0 v i v j / E, M ij = 1 v i v j E.

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Diskreetit rakenteet

811120P Diskreetit rakenteet

Ohjelmistotuotantoprojekti

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

811120P Diskreetit rakenteet

12. Javan toistorakenteet 12.1

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

Johdatus graafiteoriaan

11/20: Konepelti auki

Ohjelmistojen suunnittelu

Algoritmi on periaatteellisella tasolla seuraava:

Test-Driven Development

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö

Ohjelmistotuotanto, s

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

Apuja ohjelmointiin» Yleisiä virheitä

12. Javan toistorakenteet 12.1

Ohjelmistotekniikan menetelmät, UML

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Lähestymistavat - toiminnallinen

Johdatus graafiteoriaan

Ohjelmistojen mallintaminen Tietovuokaaviot Harri Laine 1

Algoritmit 2. Luento 11 Ti Timo Männikkö

Ohjelmistojen mallintaminen

Ohjelmistotekniikan menetelmät, käyttötapauksiin perustuva vaatimusmäärittely

Ohjelmiston testaus ja laatu. Testaustasot

11. Javan toistorakenteet 11.1

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Algoritmit 1. Luento 9 Ti Timo Männikkö

Convergence of messaging

Algoritmit 1. Luento 7 Ti Timo Männikkö

Test-Driven Development

Dynaaminen analyysi II

Testaus. tulosavaruus. Testaus

Algoritmit 1. Luento 13 Ma Timo Männikkö

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

Osa. Toimintojen toteuttaminen ohjelmissa vaatii usein haarautumisia ja silmukoita. Tässä luvussa tutustummekin seuraaviin asioihin:

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

b) Olkoon G vähintään kaksi solmua sisältävä puu. Sallitaan verkon G olevan

Simulointi. Tapahtumapohjainen

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

isomeerejä yhteensä yhdeksän kappaletta.

Jaana Helanen BELLEBOOK-AJANHALLINTAJÄRJESTELMÄN TESTAUS

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

Muistutus aikatauluista

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

Johdatus graafiteoriaan

Ohjelmistotestauksen perusteita I Luento 1 Antti-Pekka Tuovinen

Lähdekoodin suorituksen malli. 2. Äärelliset mallit (P&Y: 5) Ohjausvuokaaviot. Atomiset ehdot OVK:ssa. Atomiset ehdot

Transkriptio:

Rakenteellinen testaus (white box) Ohjelmistotuotanto Testaus Rakenteellinen testaus perustuu ohjelman rakenteen hyväksikäyttöön - tieto ja kontrollivuoesityksiin tietovuo (data flow) - tiedon kulku kontrollivuo (control flow) - kontrollin kulku Kontrollin kulkua voidaan kuvata perinteisellä vuokaaviolla (flowchart) junction case Harri Laine Kontrollin kulku Ohjelmasta vuoverkoksi vuokaavio - vastaavuus ohjelmakoodin kanssa jokainen lause näkyy kaaviossa liian yksityiskohtainen testauksen kannalta vuoverkko (flowgraph) abstraktio vuokaaviosta kontrollin haarautumis- ja yhtymiskohdat esitetään verkon solmuina (de) peräkkäiset suoritettavat lauseet yhdistyvät yhdeksi prosessiksi procedure sort begin records_remain begin record; record.field = 0 then begin process record; store in buffer; Increment counter; end else begin record.field=0 then begin reset counter; end else begin process record; store in file; end ; Harri Laine 3 Harri Laine 4 Ohjelmaa vastaava vuokaavio Yhdistetään peräkkäiset lauseet Harri Laine Harri Laine 6 HY/TKTL

Korvataan ehdot haarautumasolmuilla Korvataan lausesekvenssit prosessisolmuilla jotkut esitykset esim. Pressman jättävät vuoverkon tällaiseksi, mutta... Harri Laine Harri Laine 8 Jatketaan poistamalla prosessisolmut ja sijoitetaan toiminnallisuus särmiin 6 3 4 process store increment vuoverkon polku (path), reitti: jo linkkien yhdistämiä solmuja sama solmu voi esiintyä polulla useaan kertaan (silmukat) segmentti: polun osajo segmentin pituus: segmentin solmujen lukumäärä täydellinen polku (complete path): polku, joka alkaa vuoverkon alkusolmusta ja päättyy sen loppusolmuun alkusolmu: ei sisääntulevia linkkejä (esimerkissä ) loppusolmu: ei ulosmeneviä linkkejä (esimerkissä ) Harri Laine 9 Harri Laine 0 6 4 3 alkusolmu loppusolmu lyhin täydellinen polku:,, silmukallinen täydellinen polku:,,3,6,, McCaben kompleksisuusmitta (cyclomatic complexity), merkitään V(G), verkolle G ohjelman vuoverkon alueiden määrä V(G)= E-N+, missä E=särmien määrä ja N=solmujen määrä V(G)= P+, missä P on verkon haarautumasolmujen lukumäärä käytetään mittaamaan ohjelman monimutkaisuutta käytetään laskettaessa tarvittavien testien lukumäärää Harri Laine Harri Laine HY/TKTL

haarautumasolmut 4 3 V(G)= E-N+= 9-+ =4 V(G)= P+ = 3+ =4 Polkutestauksessa on tarkoitus valita testiaineistot siten, että ne aiheuttavat tiettyjen vuoverkon polkujen suorituksen On määritelty erilaisia kattavuusmittoja polkutestaukselle: polkukattavuus (path coverage) käydään läpi kaikki mahdolliset täydelliset polut (polku/ testiajo) usein mahdotonta koska polkuja on liian paljon Harri Laine 3 Harri Laine 4 lausekattavuus (statement coverage) käydään jokaisessa ohjelman lauseessa, eli jokaisessa vuoverkon solmussa ja prosessisärmässä, vähintään kerran testiajojen yhteydessä haara- eli päätöskattavuus (branch/decision coverage) käydään ohjelman jokaisen ehdon kaikki arvot (kaikki vuoverkon särmät) läpi vähintään kerran testiajojen aikana McCaben kompleksisuusmitta antaa tällöin tarvittavien testiajojen vähimmäismäärän yleisesti tavoiteltu kattavuus ehtokattavuus (condition coverage) ohjelman jokaisen päätöksen kaikkien osaehtojen on saatava kaikki arvonsa testiajojen aikana moniehtokattavuus (multiple condition coverage) testaus on suoritettava ohjelman jokaisen päätöksen osaehtojen kaikilla arvoyhdistelmillä silmukkatestaus (loop testing) suoritetaan ohjelman toistolauseita (vuoverkon silmukallisia polkuja) useampaan kertaan saman testiajon aikana (koska virheet kasautuvat silmukoihin) 0 kertaa, kerta, tyypillinen määrä, maksimimäärä, maksimi+ kertaa tarkentaa haarakattavaa testausta Harri Laine Harri Laine 6 täydellistä kattavuutta voi olla mahdoton saavuttaa a<00 then begin b:=a; ---- ---- ei sijoituksia b:lle ---- b>00 then begin ------- saavuttamaton kohta Esimerkki: then ; Lausekattavuus: x=, z=0: testiajo Haarakattavuus: x=, z=0: x=, z=-: testiajoa Harri Laine Harri Laine 8 HY/TKTL 3

Esimerkki: then ; Esimerkki: then ; Ehtokattavuus: x=0:, z=0: : x=:, z=-: : testiajoa mutta -haara jää testaamatta Moniehtokattavuus: x=0:, z=0: : x=0:, z=-: : x=:, z=0:: x=:, z=-: : 4 testiajoa Harri Laine 9 Harri Laine 0 Tietovuotestaus Tietovuotestauksessa testiaineiston laadinta perustetaan tietorakenteiden (muuttujien) tilamuutoksiin (asetus, käyttö laskennassa, käyttö päätöstilanteessa, llaus ) Suhteutetaan tilamuutokset vuoverkkoon Erilaisia aineiston laatimisstrategioita kaikki asetukset (kunkin muuttujan jokainen asetus testattava vähintään kerran) kaikki päätöskäytöt (kunkin asetuksen kaikki käytöt päätöstilanteissa testattava, ellei tällaisia ole on testattava vähintään yksi laskentakäyttö) kaikki käytöt (kunkin asetuksen kaikki käyttötilanteet testattava) Harri Laine Perintä ja polymorfismi tuovat mukanaan testausongelmia (mutta poistavat myös joitakin) voi olla vaikea hahmottaa minkä luokan palvelu varsinaisesti suoritetaan ohjelmoijalla on voinut olla väärä käsitys siitä miten palvelu kehittyy luokkahierarkiasssa palvelun valinta perustuu polymorfismiin, jolloin virheelliseen valintaehtoon liittyviä ongelmia ei esiinny Harri Laine Yksikkötestausta vastaa luokan testaus metodien satunnaiset suoritusjärjestykset elinkaaritestaus - tilakaavion pohjalta ositus : testataan vain osaa luokasta olion tilaa muuttavat & olion tilan säilyttävät metodit attribuuttiperustainen ositus toimintojen kategorisointiin pohjaustuva jaottelu (alustus, laskenta, kysely,., lopetus) Yhteistyön testaus suorituspolku (th) testauksena Käyttötapapohjainen testaus soveltuu validointitestaukseen ja suorituspolkutestaukseen Käyttötapatestauksella voidaan testata myös käyttöliittymää Skenaariot (esimerkkitapaukset) käyttötavan ilmentymiä - toimintasarja tyypilliset tapaukset poikkeustilanteet Harri Laine 3 Harri Laine 4 HY/TKTL 4

Onnistunut testi johtaa tarpeeseen jäljittää virhe Varsin huosti systematisoitu alue virhe voi olla kaukana ulkoisesta ilmenemispaikastaan virheen korjaaminen voi tilapäisesti estää muiden virheiden ilmenemisen virheen syy saattaa olla käyttäjässä virheellistä toimintaa voi olla vaikea toistaa virhe voi johtua ohjelmointikielen tai laitteistoarkkitehtuurin erityispiirteistä on ongelmanratkaisutilanne, johon auttaa kokemus näkökulman vaihto Jäljitysmenetelmiä raaka työ työkalujen mekaaninen käyttö: muistivedokset (dump) suoritusjäljitin (trace, debugger) suuri määrä tulosteita vaikea löytää tarvittavaa tietoa Harri Laine Harri Laine 6 peruutus lähdetään havaitusta häiriöstä ja peruutetaan mahdollisia toimintapolkuja pitkin tietovuoviipaloijaa käyttämällä (slicer, esim.hypersoft) ohjelma näyttää virhekohtaan johtavat tietovuot ja mahdollistaa niiden seuraamisen syiden elimiinti induktio: kerää virheeseen liittyvät tiedot hypoteesi virheen syystä hypoteesin testaus deduktio: kerää mahdolliset syyt elimii syitä havaintojen perusteella Harri Laine Korjaus Ennen löydetyn virheen korjausta, olisi syytä pohtia: Esiintyykö samantyyppinen virhe myös muualla ohjelmassa? jos esiintyy, niin korjataan Aiheuttaako muutos mahdollisesti uusia virheitä ohjelmaan? jäljitetään sivuvaikutukset Mitä olisi pitänyt tehdä toisin, ettei virhettä olisi syntynyt vältetään jatkossa, oppiva tuotantoprosessi Harri Laine 8 HY/TKTL