7. Verifiointi ja validointi

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

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

Verifiointi ja validointi

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

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

Harjoitustyön testaus. Juha Taina

Ohjelmistotuotantoprojekti

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

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

6. Suunnittelu. Suunnitteluprosessi

1. Johdanto. Ohjelmistotuotannon piirteitä

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

Testaaminen ohjelmiston kehitysprosessin aikana

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

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

Convergence of messaging

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

10. Tarkastukset. Tarkastusten rakenne

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

Ohjelmiston testaus ja laatu. Testaustasot

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmistotuotanto s

Ohjelmistojen testaus

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

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

Laadunvarmistustekniikat

Kontrollipolkujen määrä

1. Johdanto. Ohjelmistotuotannon piirteitä

2. Ohjelmistotuotantoprosessi

Dynaaminen analyysi III

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

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

58160 Ohjelmoinnin harjoitustyö

Prosessimalli. 2. Ohjelmistotuotantoprosessi. Prosessimallin vaihejako. Prosessimallien perustehtävät. Ohjelmiston suunnittelu. Vaatimusmäärittely

Testaussuunnitelma Labra

Testaussuunnitelma. Oppimistavoitteiden hallintajärjestelmä harri

Dynaaminen analyysi I

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

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

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

Lohtu-projekti. Testaussuunnitelma

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

Menetelmäraportti Ohjelmakoodin tarkastaminen

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

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

Ohjelmistojen suunnittelu

1. Johdanto. Ohjelmistotuotannon piirteitä

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

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

1. Johdanto. Ohjelmistotuotannon piirteitä

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

Dynaaminen analyysi II

Ohjelmistojen mallintaminen. Luento 11, 7.12.

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

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

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

Ohjelmiston testaussuunnitelma

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

Test-Driven Development

Dynaaminen analyysi II Luento 4 Antti-Pekka Tuovinen

Dynaaminen analyysi IV

Testausprosessin vaatimukset. 2. Testausprosessi (Artikkelit) Vesiputousmallin ongelmia. V-mallin neljä osavaihetta. Testausprosessimalli V-malli

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen

1 Tehtävän kuvaus ja analysointi

Test-Driven Development

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

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

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

Ohjelmistoprosessit ja ohjelmistojen laatu kevät Suunnitelmakeskeiset prosessit (lukuisia lähteitä)

Ohjelmistoprosessit ja ohjelmistojen laatu kevät 2009

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

Katselmoinnit. review) Katselmoinnit (review( Mitä ovat katselmoinnit? Katselmoinnin määritelmä (IEEE 1988)

UCOT-Sovellusprojekti. Testausraportti

2. Äärelliset mallit (P&Y: 5)

Standardin IEC testaustekniikoista. V-malli vai ketterämpi prosessi?

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

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

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

L models. Testisuunnitelma. Ryhmä Rajoitteiset

Algoritmit 2. Luento 7 Ti Timo Männikkö

Testaus osana ohjelmistojen elinkaarta I

Testaus elinkaaressa. Testaustasot ja vaiheet

Ohjelmointi 2 / 2010 Välikoe / 26.3

4. Verifiointi ja validointi. Kevät 2005 Empiirinen ohjelmistotutkimus / Taina. Kevät 2005 Empiirinen ohjelmistotutkimus / Taina

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

Hirviö Laadunvarmistussuunnitelma

Ohjelmistotestaus -09

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

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

Suunnitteluvaihe prosessissa

Sisältö. 22. Taulukot. Yleistä. Yleistä

Käyttötapausanalyysi ja testaus tsoft

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

3.5 Hyväksymistestaus

Transkriptio:

7. Verifiointi ja validointi Verifiointi ja validointi (V&V) on ohjelmistotuotannon työvaihe, missä varmistetaan, että ohjelmisto täyttää sille asetetut implisiittiset ja eksplisiittiset vaatimukset ja ohjelmisto täyttää sen tilanneen asiakkaan ohjelmistolle asettamat tarpeet. V&V:ta tehdään koko ohjelmistoprosessin elinkaaren ajan. Kevät 2005 Ohjelmistotuotanto / Taina 1 Verifioinnin ja validoinnin ero Verifioinnissa varmistetaan, että ohjelmisto vastaa määrityksiään: Verification: Are we building the product right? Validoinnissa varmistetaan, että ohjelmisto täyttää asiakkaan sille asettamat odotukset: Validation: Are building the right product? Kevät 2005 Ohjelmistotuotanto / Taina 2 Taina 1

Verifiointi- ja validointitekniikat V&V:ssa käytetään enimmäkseen kahta tekniikkaa: tarkastuksia ja testausta. Tarkastukset (software inspections). Tarkastuksissa joukko ihmisiä analysoi ja tarkastaa järjestelmäkuvauksia, kuten vaatimusdokumentaatiota, suunnittelukaavioita ja ohjelmakoodia. Tarkastukset ovat staattinen tekniikka. Ne eivät vaadi suorituskelpoista ohjelmaa. Kevät 2005 Ohjelmistotuotanto / Taina 3 Verifiointi- ja validointitekniikat II Testaus (software testing). Testauksessa ohjelmistoa tai sen osaa suoritetaan tietyillä testitiedoilla ja tuloksia analysoimalla ja ohjelmiston suoritusta seuraamalla selvitetään, että toiminta on odotettua. Testaus on dynaaminen tekniikka, sillä siihen tarvitaan suorituskelpoinen ohjelma. Tarkastuksia voidaan tehdä koko ajan, testausta vasta ohjelmakoodin kanssa. Molempia tekniikoita tarvitaan V&V:ssa. Kevät 2005 Ohjelmistotuotanto / Taina 4 Taina 2

Verifioinnin ja validoinnin tavoite V&V:n tavoitteena on varmistaa, että ohjelmisto täyttää sille asetetut tavoitteet. Ohjelmiston ei tarvitse olla virheetön, eikä se myöskään yleensä ole sitä. Ohjelmiston on sen sijaan oltava tarkoitettuun käyttöön riittävän hyvä. Tavoitetaso riippuu sovellusalueesta. Kevät 2005 Ohjelmistotuotanto / Taina 5 V&V:n hallinnan V-malli Requir ements specifica tion System specifica tion System design Detailed design Acceptance test plan System integ ration test plan Sub-system integ ration test plan Module and unit code and test Service Acceptance test System integ ration test Sub-system integ ration test Kuvalla (C) I. Sommerville 2004 V-malli kuvaa V&V-työvaiheen suhteen muihin prosessin työvaiheisiin. Tarkastuksia voidaan pitää missä tahansa työvaiheessa tai niiden välillä. Kevät 2005 Ohjelmistotuotanto / Taina 6 Taina 3

7.1. Tarkastukset Tarkastus (inspection) on kokous, jossa tarkastetaan jonkin työvaiheen tuotos, tai osa siitä, ja yritetään löytää siitä puutteita ja virheitä. Puute = vajaa määritys tai puuttuva toiminta. Virhe = väärin tehty määritys tai ei-toivottu toiminta. Kevät 2005 Ohjelmistotuotanto / Taina 7 Tarkastukset - II Tarkastuksia tehdään kaikissa projektin työvaiheissa. Aina kun projektissa on saatu jotain valmiiksi, tulos kannattaa varmentaa tarkastuksella. Tarkastukset parantavat tuotteen laatua, sillä aikaisessa vaiheessa löydetty puute tai virhe on helpompi korjata kuin myöhemmin löydettynä. Kevät 2005 Ohjelmistotuotanto / Taina 8 Taina 4

Tarkastusten luonne Tarkastus on muodollinen tilaisuus, johon osallistuu 3-6 henkilöä. Tilaisuudella on tarkka aikataulu. Henkilöt edustavat eri sidosryhmiä asiakkaasta projektiryhmän jäseniin. Tarkastuksessa kootaan löydetyt puutteet ja virheet. Tarkastukseen valmistaudutaan etukäteen noin 2h ajan. Kevät 2005 Ohjelmistotuotanto / Taina 9 Tarkastukseen osallistujat Osallistujien roolit: Puheenjohtaja (moderator): vastaa tarkastuksen aikataulusta ja ohjelmasta. Sihteeri (scribe): kirjaa ylös löyd. asiat. Alustaja (reader): kuvaa esitettävän asian. Kirjoittaja (author/owner): edustaa dokumentin tekijöitä. Tarkastaja (inspector): etsii dokumentista puutteita ja virheitä (kaikkien rooli). Kevät 2005 Ohjelmistotuotanto / Taina 10 Taina 5

Ennen tarkastusta Ennen tarkastustapahtumaa: kaikki tarkastuksessa tarvittavat dokumentit ovat saatavilla, osallistujilla on ollut aikaa tutustua dokumentteihin, käytössä on tarkistuslistat yleisimmistä puutteista ja tarkastettava dokumentti on sellaisella tasolla, että siinä ei ole ilmeisiä virheitä. Kevät 2005 Ohjelmistotuotanto / Taina 11 Tarkastustapahtuma Tarkastustapahtuma saa kestää korkeintaan kaksi tuntia. Siinä keskitytään yksinomaan löytämään puutteita ja virheitä. Tarkastukseen osallistujat eivät keskustele löydetyistä puutteista. Kun puute on havaittu, sihteeri kirjaa sen ylös ja siirrytään eteenpäin. Kevät 2005 Ohjelmistotuotanto / Taina 12 Taina 6

Tarkastuksen päätös Tarkastuksen lopuksi ryhmä äänestää tuotoksen hyväksymisestä: Hyväksytään sellaisenaan: ei muutoksia. Hyväksytään muutoksin: löydetyt puutteet ja virheet on korjattava, mutta tuotoksesta ei tarvita enää uutta tarkastusta. Hylätään: löydetyt puutteet ja virheet on korjattava. Korjauksen jälkeen tuotoksesta käydään läpi uusi tarkastus. Kevät 2005 Ohjelmistotuotanto / Taina 13 Tarkastusten kultaiset säännöt 1.Arvioidaan tuotetta, ei tekijää. 2.Suunnitellaan aikataulu ja pidetään siitä kiinni. 3.Ei väittelyä. 4.Ei ratkota löydettyjä ongelmia. 5.Rajoitetaan osallistujien määrä 3-6 henkeen. 6.Valmistaudutaan huolellisesti tarkastukseen. 7.Käytetään tarkistuslistoja sekä valmistautuessa että tarkastuksessa. 8.Varataan riittävästi aikaa ja resursseja. 9.Koulutetaan osallistujat. 10. Pidetään tarkastuksessa kännykät kiinni! Kevät 2005 Ohjelmistotuotanto / Taina 14 Taina 7

7.2. Testaus Testauksella on kaksi tavoitetta: Osoittaa sekä asiakkaille että projektille, että ohjelmisto täyttää sille asetetut vaatimukset. Tämä on validointitestausta. Löytää ohjelmistosta puutteita ja virheitä, joiden johdosta ohjelmisto ei toimi, toimii väärin tai ei vastaa sille asetettuja määrittelyjä. Tämä on määritysten ja syntaksin testausta (Sommervillella termi on defect testing). Kevät 2005 Ohjelmistotuotanto / Taina 15 Täydellinen testaus mahdotonta Täydellinen testaus, missä ohjelma testataan kaikilla mahdollisilla syötteillä, syötekombinaatioilla ja ajoituksilla, ei ole käytännössä mahdollista. Jo hyvin yksinkertaisilla ohjelmilla kaikkien testitapausten suoritus veisi vuosia. Tämän johdosta testauksessa valitaan osajoukko kaikista mahdollisista testitapauksista. Kevät 2005 Ohjelmistotuotanto / Taina 16 Taina 8

Testauksen oleellinen kysymys Miten valitaan sellainen testitapausten osajoukko, että sen suorittaminen on mahdollista järkevässä ajassa ja että sen avulla ohjelma tai sen osa saadaan testattua riittävän hyvin. Sommerville suosittelee vastaukseksi yrityskohtaista testauspolitiikkaa, jonka mukaan testitapaukset valitaan. Kevät 2005 Ohjelmistotuotanto / Taina 17 Testausvaiheet Sommerville jakaa testauksen kahtia: Komponenttitestauksessa (Component testing) ohjelmaa testataan osina. Testatut osat kootaan yhteen ja testaan koottuina. Komponenttitestaus kuuluu pääosin ohjelmiston kehittäjille (projektiryhmälle). Järjestelmätestauksessa (System testing) testataan järjestelmää kokonaisuutena. Järjestelmätestaus kuuluu pääosin ulkopuoliselle testausryhmälle. Kevät 2005 Ohjelmistotuotanto / Taina 18 Taina 9

Järjestelmätestaus Työvaihe on liittävä: Kuhunkin osajärjestelmään liitetään komponentteja ja testataan komponenttien yhteistyö. Tämä on integrointitestausta. Komponentit lisätään ja testataan yksi kerrallaan, kunnes kaikki osajärjestelmän komponentit on liitetty ja testattu. Kun kaikki osajärjestelmät on koottu ja testattu, testataan vielä, että osajärjestelmät toimivat yhdessä oikein. Kevät 2005 Ohjelmistotuotanto / Taina 19 Integrointitestaus Integrointitestauksessa testataan valmiiden yksittäin toimivien komponenttien yhteistyö osajärjestelmässä. Integrointia voidaan tehdä ylhäältä alas: Ensin tehdään osajärjestelmän runko ohjauskomponenteista, minkä jälkeen niihin liitetään toiminnat toteuttavat komponentit yksi kerrallaan. Kevät 2005 Ohjelmistotuotanto / Taina 20 Taina 10

Integrointitestaus II Integrointia voidaan tehdä yhtä lailla alhaalta ylös: aloitetaan toimintakomponenteista ja edetään kohti korkean tason komponentteja. Käytännössä tehdään ns. voileipätestausta, missä integrointitestataan sekä alhaalta ylöspäin että ylhäältä alaspäin. Kevät 2005 Ohjelmistotuotanto / Taina 21 Rasitustestaus Integrointitestauksen jälkeen järjestelmän kriittisiä ominaisuuksia voidaan testata: suorituskykyä, luotettavuutta ja vikasietoisuutta, turvallisuutta. Rasitustestauksessa ohjelma viedään äärirajoille ja mielellään vielä niiden yli. Kevät 2005 Ohjelmistotuotanto / Taina 22 Taina 11

Hyväksymistestaus Hyväksymistestaus (Acceptance testing, Sommervillella Release testing) tehdään sen jälkeen, kun integrointiestaus on saatu valmiiksi. Hyväksymistestauksen tarkoituksena on varmistaa, että tuote on sellaisessa kunnossa, että se voidaan antaa asiakkaalle tuotantokäyttöön. Kevät 2005 Ohjelmistotuotanto / Taina 23 Yksikkötestaus Komponenttitestaus, tai yksikkötestaus, (Component testing / Unit testing) tehdään ennen järjestelmätestausta. Sommerville halusi esitellä järjestelmätestauksen ensin, koska nykyisin kaikille komponenteille ei tehdä yksikkötestausta. Valmiina ostetut kaupalliset COTS-komponentit (Commercial Off the Shelf) ovat sellaisia, joille ei tehdä lainkaan yksikkötestausta. Kevät 2005 Ohjelmistotuotanto / Taina 24 Taina 12

Yksikkötestauksen tasot Yksikkötestausta tehdään jakamattomille ohjelman osille: Olioille. Olioa ei kannata hajottaa erikseen testattaviksi metodeiksi, sillä olion metodit ovat yleensä vahvasti sidoksissa toisiinsa. Koosteisille olioille tai olioryppäille. Joskus oliot ovat niin vahvasti sidoksissa toisiinsa, että niitä ei voi testata erikseen. Kevät 2005 Ohjelmistotuotanto / Taina 25 Yksikkötestauksen tasot II Komponenteille. Yleensä komponentin toteuttavat oliot testataan erikseen ja integroidaan sen jälkeen komponentiksi. Tämän jälkeen komponentti voidaan vielä testata koosteisten olioiden tapaan jakamattomana kokonaisuutena. Jos komponentit ovat kovin isoja, niiden toiminnallisuus kannattaa testata osina. Tällöin kannattaa erityisesti keskittyä komponentin rajapintoihin ja integrointiin. Kevät 2005 Ohjelmistotuotanto / Taina 26 Taina 13

Yksikkötestauksen testejä Testauksessa pitää kattaa testattavan yksikön kaikki ominaisuudet: Jokainen operaatio (metodi) testataan erikseen. Jokaisen attribuutin arvon asetus ja käyttö testataan. Kaikki yksikön tilat ja siirtymät testataan. Samalla kaikki mahdolliset ulkoiset tapahtumat generoituvat, sillä ne siirtävät yksikön tilasta toiseen. Kevät 2005 Ohjelmistotuotanto / Taina 27 Rajapintatestaus Komponenttitestauksen oleellinen osa on rajapintatestaus. Siinä etsitään virheitä, jotka johtuvat rajapintojen virheistä tai vääristä rajapintojen oletuksista. Rajapinnat ja rajapintatestaus ovat erittäin tärkeitä, sillä sekä olioiden että komponenttien palvelut määritellään niiden rajapintojen kautta. Kevät 2005 Ohjelmistotuotanto / Taina 28 Taina 14

Rajapinnat Rajapintoja: Parametrien välitysrajapinnat. Jaetun resurssin rajapinnat: muisti ym. Proseduraaliset rajapinnat: palvelukutsut Viestinvälitysrajapinnat. Havaittavia virheitä: Rajapintaa käytetään väärin. Rajapinnan toimintaa ei ymmärretä. Rajapinnan käytön ajoitus on väärä. Kevät 2005 Ohjelmistotuotanto / Taina 29 Rajapintatestauksen testejä Parametrien arvoalueiden äärirajoilla olevat testiarvot. Osoitinparametreille null-osoitin. Proseduraaliselle rajapinnalle poikkeukselliset kutsujärjestykset (esim. tiedoston luku ennen sen avaamista). Viestinvälitysrajapinnoille rasitustestaus. Jaetun resurssin rajapinnalle resurssien rinnakkaisten luku- ja kirjoitusprosessien suoritusjärjestystä vaihtelevat testit. Kevät 2005 Ohjelmistotuotanto / Taina 30 Taina 15

Testausmenetelmiä Testauksessa käytetään kahta yleistä menetelmää: mustalaatikkotestausta (black-box testing) ja rakenteellista testausta (structural testing) Mustalaatikkotestauksessa järjestelmää testataan syötteiden ja tulosteiden avulla. Ohjelmakoodi ei ole näkyvillä. Rakenteellisessa testauksessa järjestelmää testataan ohjelmakoodin avulla. Kevät 2005 Ohjelmistotuotanto / Taina 31 Mustalaatikkotestaus Mustalaatikkotestauksessa (black-box testing) testitapaukset valitaan ohjelman tai komponentin spesifikaation avulla. Itse ohjelma on musta laatikko, jonka toiminnan määrittelevät sen saamat syötteet ja sen antamat tulosteet. Koska testaus perustuu spesifikaatioon, testauksen suunnittelu voidaan aloittaa heti määrittelyjen valmistuttua. Kevät 2005 Ohjelmistotuotanto / Taina 32 Taina 16

Mustalaatiikotestauksen anatomia Inp ut test dat a I e Inputs causing anomalous behaviour System Output test results O e Outputs which reveal the presence of defects Kuvalla (C) I. Sommerville 2004 Kevät 2005 Ohjelmistotuotanto / Taina 33 Mustalaatikkotestauksen tavoitteet Mustalaatikkotestauksessa pyritään löytämään virheellisiä tai puuttuvia toimintoja, sisäisiin, ulkoisiin tai käyttöliittymään liittyviä virheitä, virheitä yleisissä tietorakenteissa, suorituskykypuutteita ja alustus- ja lopetustoimintojen virheitä. Kevät 2005 Ohjelmistotuotanto / Taina 34 Taina 17

Ositustestaus Mustalaatiikotestauksessa syöteavaruus ositetaan ekvivalenssiluokiksi. Yksi luokka kuvaa toiminnallisuuden osajoukkoa, jolle voidaan tehdä yhteisiä testejä. Ekvivalenssiluokat voidaan johtaa esimerkiksi ohjelmiston kuvauksista, arkkitehtuurista, käyttäjän vaatimuksista tai järjestelmävaatimuksista. Kevät 2005 Ohjelmistotuotanto / Taina 35 Testitapausten valinta Jokaisesta ekvivalenssiluokasta valitaan muutama testitapaus. Valitut testitapaukset edustavat koko ekvivalenssiluokkaa. Onnistuneessa jaottelussa mikä tahansa luokan jäsen kelpaa testitapaukseksi. Käytännössä suositaan luokan rajoilla olevia arvoja, sillä ne ovat parhaimpia havaitsemaan jaottelun puutteita ja virheitä. Kevät 2005 Ohjelmistotuotanto / Taina 36 Taina 18

Ekvivalenssiluokkaesimerkki Olkoon meillä metodi boolean alkuluku(int n). Tällöin ekvivalenssiluokat voidaan valita vaikka seuraavasti. n < 0 n = 0 n > 0 ja alkuluku n > 0 ja ei ole alkuluku n on jotain muuta kuin integer Kevät 2005 Ohjelmistotuotanto / Taina 37 Rakenteellinen testaus Rakenteellisessa testauksessa testitapaukset valitaan ohjelmakoodin perusteella. Koodia tutkimalla löydetään sellaisia testitapauksia, joita on vaikea keksiä mustalaatikkotestauksella. Esim. kaikkien koodissa käsiteltyjen poikkeustilanteiden testaus voidaan tehdä rakenteellisilla testausmenetelmillä. Kevät 2005 Ohjelmistotuotanto / Taina 38 Taina 19

Polkutestaus Polkutestaus on yleisin rakenteellisen testauksen menetelmä. Siinä lähtökohtana on koodista tehty siirtymäverkko (flow graph): Jokaisesta lauseesta tulee solmu. Jokaisesta siirtymästä lauseesta toiseen tulee suunnatun verkon särmä. Verkossa on yksi lähtösolmu ja mahdollisesti monta maalisolmua. Kevät 2005 Ohjelmistotuotanto / Taina 39 Binäärihaun siirtymäverkko public static void search(int key, int [] elemarray, Result r) 1 { 1. int bottom = 0; 2 2. int top = elemarray.length 1; int mid; 3. r.found = false; 3 4. r.index = -1; 4 5. while (bottom <= top) { 6. mid = (top + bottom) / 2; bottom > top 5 while bottom <= top 7. if (elemarray[mid] == key) { 8. r.index = mid; 6 9. r.found = true; 10. return; 7 elemarray [mid]!= key 11 } else { elemarray [mid] = key elemarray [mid] > key elemarray [mid] < key 11. if (elemarray[mid] < key) 8 9 12 13 12, bottom = mid + 1; else 13. top = mid 1; } 14 10 } } Kuvalla (C) I. Sommerville 2004 Kevät 2005 Ohjelmistotuotanto / Taina 40 Taina 20

Siirtymäverkon polku Yksi siirtymäverkon polku on reitti lähtösolmusta johonkin maalisolmuun. Testauksessa tavoitteena on löytää sellainen testitapaus, joka kulkee halutun polun läpi. Aina tällaista testitapausta ei löydy, sillä metodissa saattaa olla kuollutta koodia. Täydellinen polkutestaus kävisi läpi kaikki mahdolliset polut. Kevät 2005 Ohjelmistotuotanto / Taina 41 Testattavat polut Yleensä kaikkien polkujen testaus ei ole mahdollista. Esimerkiksi ehdot ja silmukat yhdessä kasvattavat nopeasti kaikkien mahdollisten polkujen määrää. Tämän johdosta valitaan osajoukko esimerkiksi seuraavilla yleisillä ehdoilla: Kaikissa solmuissa on käytävä. Kaikissa särmissä on käytävä. Kevät 2005 Ohjelmistotuotanto / Taina 42 Taina 21