Ohjelmistotestauksen perusteita II



Samankaltaiset tiedostot
Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

Ohjelmistotestauksen perusteita Luento 1 Antti-Pekka Tuovinen

Dynaaminen analyysi IV

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen

Dynaaminen analyysi I

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

Ohjelmiston testaussuunnitelma

Testauksen hallinta ja johtaminen

Onnistunut SAP-projekti laadunvarmistuksen keinoin

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

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

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

Ohjelmistotestauksen perusteita I Luento 1 Antti-Pekka Tuovinen

Harjoitustyön testaus. Juha Taina

UCOT-Sovellusprojekti. Testausraportti

58160 Ohjelmoinnin harjoitustyö

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

Convergence of messaging

Testaus-tietoisku: Tärkeimpiä asioita testauksesta projektityökurssilaisille

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

Testauksen suunnittelu. Faculty of Science 30 April

Testaaminen ohjelmiston kehitysprosessin aikana

Ohjelmiston testaus ja laatu. Testausmenetelmiä

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

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

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

Testaus osana ohjelmistojen elinkaarta II

Onnistunut Vaatimuspohjainen Testaus

Ohjelmistotuotantoprojekti

Dynaaminen analyysi III

Ohjelmistojen mallintaminen. Luento 11, 7.12.

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

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

Simulaattoriavusteinen ohjelmistotestaus työkoneympäristössä. Simo Tauriainen

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

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

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

T Testiraportti - integraatiotestaus

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

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti

Dynaaminen analyysi II

T Testiraportti - järjestelmätestaus

Project-TOP QUALITY GATE

Hyväksymistestauksen tarkistuslista järjestelmän hankkijalle

Kontrollipolkujen määrä

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

Ohjelmistotuotteen hallinnasta

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

Dynaaminen analyysi II Luento 4 Antti-Pekka Tuovinen

Vakuutusyhtiöiden testausinfo

Testauksen hallintaa teekkareille (ja muille kiinnostuneille) Arto Stenberg

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

Ohjelmistotestaus -09

Kuopio Testausraportti Asiakkaat-osakokonaisuus

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

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

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

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmiston toteutussuunnitelma

Hirviö Laadunvarmistussuunnitelma

Harjoitus 7: NCSS - Tilastollinen analyysi

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

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

Testaussuunnitelma Labra

4.2 Tekniikat Kuka testaa?

CoMa - Testausdokumentti

Mittarit ja tieto testauksen tehostamisen ja kehittämisen tukena. Henri Grönblom

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

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

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

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

Tapahtuipa Testaajalle...

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

Kuopio Testausraportti Kalenterimoduulin integraatio

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

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

Miksi auditoidaan? Pirkko Puranen FT, Ylitarkastaja

Ohjelmiston testaus ja laatu. Testaustasot

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

Käyttötapausanalyysi ja testaus tsoft

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

Testausoppeja toimialavaihdoksesta

Harjoituskoe Vastaukset. ISTQB Ketterä testaaja 2015 Perustason sertifikaattisisällön laajennus

TESTIRAPORTTI - JÄRJESTELMÄ, ADMIN Virtuaaliyhteisöjen muodostaminen Versio 1.0

ABHELSINKI UNIVERSITY OF TECHNOLOGY

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

Laadunvarmistustekniikat

KÄYTETTÄVYYSTESTAUS OSANA KETTERÄÄ KEHITYSTÄ

Ohjelmistotestaus -09

TESTIRAPORTTI - XMLREADER-LUOKKA Virtuaaliyhteisöjen muodostaminen Versio 1.0 (luonnos 2)

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaihe 3. Antti Jääskeläinen Matti Vuori

Laurea Liven toiminnallinen testaus

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

T Testiraportti - integraatiotestaus

TESTIRAPORTTI - JÄRJESTELMÄ, PORTAL Virtuaaliyhteisöjen muodostaminen Versio 1.0

@Tampereen Testauspäivät ( )

Laadunvarmistusdokumentti

Testauspäällikön tarinoita Arto Stenberg

Hirviö Laadunvarmistussuunnitelma

Transkriptio:

Ohjelmistotestauksen perusteita II Luento 2 Antti-Pekka Tuovinen 14 March 2013 1 Luennon oppimistavoitteet Testausprosessin perustoiminnot Testauksen psykologiaa Testauksen seitsemän periaatetta 14 March 2013 2 1

Ohjelmistokehitysprosessit 14 March 2013 3 Testauksen yleinen kulku Kurssikirja, kuva 2-4 Fundamental test process 14 March 2013 4 2

Testauksen perustoiminnot Testauksen suunnittelu ja ohjaus Testaustarpeiden analysointi ja testien suunnittelu Testien implementointi ja suoritus Testauksen lopetusehtojen täyttymisen toteaminen ja raportointi Testauksen päättäminen 14 March 2013 5 Testauksen suunnittelu ja ohjaus Testaus on työmäärältään ja tarkoitukseltaan niin merkittävä osa ohjelmistoprojektia, että se vaatii oman suunnitelmansa Suunnitelmaa on myös varauduttava muuttamaan projektin edetessä On mietittävä Testauksen tavoitteet Tarvittavat resurssit henkilöstö, aika, laitteet jne. Koulutustarpeet Testauksen organisointi ja hallinto 14 March 2013 6 3

Testauksen suunnittelu ja ohjaus Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi Korjaavat toimet Suunnitelman päivitys Testauksen hallintatehtäviin (test management) kuuluvat testausprosessin, testi-infran ja testiohjelmistojen hallinto ja ylläpito 14 March 2013 7 Testausstrategia Testauksen suunnittelun päätehtävä on testausstrategian laatiminen Kuten aikaisemmin nähtiin, täydellinen (exhaustive) testaus ei ole mahdollista Testauskohteet ja testit on siis priorisoitava riskianalyysin perusteella Kriittisiksi luokitellut ohjelmiston osat on testattava perusteellisimmin Tavoitteena on testauksen optimaalinen kohdentaminen oikeisiin paikkoihin Esimerkki VSR järjestelmän testausstrategia (kurssikirja s. 20) 14 March 2013 8 4

Testauksen suunnittelu ja ohjaus Testauksen suunnittelun kuuluu myös sen päättäminen, milloin testaus voidaan lopettaa (exit criteria) Lopetuskriteerien tarkka muoto riippuu käytetyistä testausmenetelmistä - esimerkiksi Tietyn lausekattavuuden (90%) saavuttaminen Tietty osuus (70%) kaikista järjestelmän transaktioista testattu vähintään kerran Lopetuskriteerien määrääminen kuvaa samalla testauksen intensiteetin (test intensity) jakautumisen eri osa-alueille (alijärjestelmät/toiminnot) 14 March 2013 9 Testauksen suunnittelu ja ohjaus Ajan hallinta kun tulee taas kiire Testien priorisointi ohjaa testaamaan kriittisimmät osa ensin, joten ne tulevat ainakin testatuiksi Testausympäristöjen hallinta Testaustyökalujen valinta ja hankinta Testikehikkojen ja -alustojen (test harness, test bed) kehittäminen otettava mukaan kehitystiimien työlistoille jo aikaisessa vaiheessa, jotta ohjelmistoa voidaan testata osissa kehitysprosessin aikana 14 March 2013 10 5

Testaustarpeiden analysointi ja testien suunnittelu Testien suunnittelun lähtökohtia (test basis) Vaatimukset Ohjelmiston arkkitehtuuri Riskianalyysit (virheiden/vikojen hinta ) Ensimmäinen askel on arvioida, onko riittävä pohja olemassa testien suunnittelulle Esimerkiksi - onko tietty vaatimus kuvattu niin, että sen perusteella tiedetään, mikä on ohjelmiston odotettu käyttäytyminen/tuottama tulos ao. tilanteessa? 14 March 2013 11 Testaustarpeiden analysointi ja testien suunnittelu Vaatimusten lisäksi myös testattavan ohjelmiston eli testin kohteen (test object) ominaisuuksilla on vaikutusta testien suunnitteluun Ohjelmiston testattavuus (testability) tarkoittaa Miten hyvin ohjelmisto on jaettavissa erikseen testattavissa oleviin osiin Miten hyvin testien tarvitsemat ohjelmalliset rajapinnat (toiminnot ja data) ovat olemassa ja käytettävissä Testattavuuden tarpeet onkin syytä ottaa huomioon ohjelmiston kehityksessä alusta lähtien 14 March 2013 12 6

Testien suunnittelu Jäljitettävyys (traceability) vaatimusten/määrittelyjen ja konkreettisten testien välillä on tärkeää Tiedetään mitkä testitapaukset (test case) liittyvät minkäkin vaaditun ominaisuuden testaamiseen 14 March 2013 13 Testien suunnittelu Valittu testausstrategia määrittelee, mitä testaustekniikoita käytetään Turvallisuuskriittisen ohjelmiston testaaminen täytyy tehdä erittäin systemaattisesti, huolellisesti ja kattavasti Myös testattavan ohjelman kompleksisuus vaikuttaa testaustekniikoiden valintaan Käytettävät testaustekniikat vaikuttavat luonnollisesti testien ja testitapausten suunnitteluun 14 March 2013 14 7

Testaustermien määritelmiä Testiobjekti, testin kohde (test object) Ohjelma tai ohjelman osa, jota varten testi suunnitellaan Testiajo (test run, test suite) Yhden tai useamman testitapauksen suoritus koottuna yhteen ajoon Testiskenaario (test scenario) Ketjuttaa yhteen useita testitapauksia siten, että edellisen tapauksen tuottamat tulokset toimivat seuraavan tapauksen lähtötilanteena 14 March 2013 15 Testaustermien määritelmiä Testitapaus (test case) Määrittelee lähtötilanteen eli alkuehdot testitapauksen suoritukselle (test conditions) Määrittelee syötteet ja odotetut tulokset / testiobjektin odotetun käyttäytymisen Hyvällä testitapauksella on suuri todennäköisyys paljastaa aiemmin tuntemattomia vikoja 14 March 2013 16 8

Testaustermien määritelmiä Testioraakkeli (test oracle) Testitapauksen odotetun/oikean tuloksen kertova ( ennustava ) lähde Esimerkiksi ohjelman toimintaa kuvaava käyttötapaus (use-case) tai sen vaatimusmäärittelyssä annettu laskentakaava Testitapauksen suunnittelija tarvitsee oraakkelia johtaakseen testitapauksen odotetun tuloksen, johon testiobjektin testin suorituksen aikana tuottamaa tulosta verrataan 14 March 2013 17 Testitapausten suunnittelusta Suunnittelu etenee yleensä yleisemmistä tapauksista (logical test case) yksityiskohtaisempiin, konkreettisiin tapauksiin (concrete test case) Ensiksi määritetään kullekin testitapaukselle vain arvoalueet, joista syötteet valitaan (looginen testitapaus, ei voida sellaisenaan suorittaa) Myöhemmin kirjoitetaan konkreettiset suoritettavat testitapaukset, joihin valitaan tietyt syötearvot 14 March 2013 18 9

Testitapausten suunnittelusta Testitapauksia voidaan määritellä projektin monessa eri vaiheessa Käyttötapauksiin pohjautuvia toiminnallisia testitapauksia voidaan alkaa määritellä heti kun käyttötapaukset ovat selvillä Ohjelman sisäiseen rakenteeseen perustuvat whitebox testitapaukset voidaan määritellä vasta kun testattava koodi on olemassa 14 March 2013 19 Testitapausten suunnittelusta Testitapauksia on kahta perustyyppiä Testiobjektin toimintaa ja käyttäytymistä odotetuissa käyttötilanteissa ja odotetuilla syötteillä testaavat tapaukset Testiobjektin toimintaa ja käyttäytymistä odottamattomilla ja virheellisillä syötteillä testaavat tapaukset Spesifioitujen virhetilanteiden ja poikkeusten käsittelyn testitapaukset kuuluvat ensimmäiseen kategoriaan Ne ovat osa järjestelmän määrittelyä ne kuvaavat odotettua käyttäytymistä tietyissä erikoistilanteissa 14 March 2013 20 10

Testien implementointi ja suoritus Akitiviteetit Luodaan konkreettiset testitapaukset Testausympäristö valmistellaan käyttöön Testit suoritetaan, ja Tulokset kirjataan ylös 14 March 2013 21 Testien suorituksen valmistelu Testitapauksiin voi olla syytä liittää selkeät ohjeet, kuinka ne suoritetaan Jos kehittäjä itse ajaa testit, hän todennäköisesti jo tietää mitä tehdä Testitapausten priorisointi on tärkeää, jotta varmistetaan tärkeimpien testien suorittaminen viivästysten sattuessa (ajan puutteen tai teknisten ongelmien vuoksi) Yksittäiset testitapaukset on syytä koota testiajoihin (test suite) testauksen tehostamiseksi 14 March 2013 22 11

Testien suorituksen valmistelu Usein testauksessa tarvitaan testikehikkoja (test harness), -ajureita tai simulaattoreita testien suorittamista varten Varsinkin kun testataan osatoimintoja/alijärjestelmiä ohjelmiston kehitysversioissa Testikehikkojenkin toiminta on testattava 14 March 2013 23 Testien suoritus Testiobjekti asennetaan testausympäristöön ja varmistutaan, että kaikki tarvittavat osat ovat mukana ja ne latautuvat/käynnistyvät On suositeltavaa aloittaa testin suoritus aivan perustoimintoja testaavista tapauksista (smoke test) Jos savu nousee, testausta ei ole mielekästä jatkaa, ennen kuin pahimmat virheet on korjattu Jos yksinkertaiset perustapaukset menevät läpi, voidaan suorittaa loputkin testistä 14 March 2013 24 12

Testauksen kirjanpito Jokaisen testitapauksen suorituksen tulos täytyy kirjata testilogiin Testilogin perusteella pitää voida nähdä, että testausstrategian mukaiset testit on tehty Kuka on testannut minkäkin osan, milloin, kuinka intensiivisesti ja millaisin tuloksin Testilogin avulla voidaan perustella asiakkaille ja johdolle, että ohjelmisto on testattu vaaditulla kattavuudella 14 March 2013 25 Virheen löytyessä Testien toistettavuus on tärkeää, joten kaikki testien suoritukseen liittyvät oleelliset parametrit on kirjattava ylös (ohjelmistoversio, suoritusympäristön kokoonpano jne.) Testitapauksen epäonnistuessa (saatu tulos ei vastaa odotettua fail ) on ensiksi tutkittava, onko kyseessä todella virhe testiobjektissa vai testin suorituksessa Jos kyseessä todella on virhe, löydös on dokumentoitava (incident handling) korjaustoimenpiteitä varten 14 March 2013 26 13

Virheen korjauksen jälkeen Jos löydetty virhe todettiin korjausta vaativaksi, siihen johtanut vika aikanaan korjataan Korjauksen jälkeen on suoritettava uudelleen testit, joiden tuloksena virhe löytyi, ja varmistettava, että virhe on poistunut Riippuen vian laadusta ja laajuudesta, on joskus myös varmistettava, että vian/vikojen korjaus ei ole aiheuttanut uusia virheitä (regression test) Voidaan joutua suorittamaan uudelleen isokin joukko testejä 14 March 2013 27 Virheen korjauksen jälkeen Käytännössä jokaisen yksittäisen virheen korjauksen jälkeen ei tehdä heti uudelleentestausta, vaan testaus tehdään testiobjektin seuraavan kehitysversion julkaisulle Testiobjektin kehitysversiot sisältävät yleensä monien virheiden korjauksia Korjauksilla voi olla ennalta arvaamattomia yhteisvaikutuksia, jotka johtavat kokonaan uusiin virheisiin tai aikaisemmin paljastumatta jääneiden vikojen paljastumiseen Uutta koodia varten voidaan joutua määrittelemään uusia testitapauksia 14 March 2013 28 14

Testauksen päättäminen Osana testauksen suunnittelua päätettiin testauksen päättävistä lopetusehdoista (exit criteria) Yksinkertaistaen: kun kaikki testit on suoritettu ja lopetusehdot täyttyvät (testien tulosten suhteen) testaus voidaan lopettaa Jos tavoitteet eivät kuitenkaan täysin täyty, on syytä arvioida pitääkö testausta jatkaa, vai voidaanko kriteerejä löysentää Saadaanko resurssien lisäkäytöstä sittenkään riittävää hyötyä? 14 March 2013 29 Testauksen päättäminen Muita käytettyjä kriteereitä Failure rate (kurssikirja kuva 2-5) eli uusien virheiden löytymisen tahti putoaa tietyn kynnysarvon alapuolelle Virheiden vakavuus otettava kuitenkin huomioon Ajan ja loppuminen ja kustannusten nousu! Valitettava mutta yleinen peruste lopettaa testaus 14 March 2013 30 15

Lopetustoimet Lessons learned eli Mitä tästä opittiin? Poikkeamat suunnitelmista ja niiden syyt Koko testausprosessin tulosten evaluointi Parannusehdotusten kerääminen Testitapausten, -datan ja työkalujen ym. (testware) arkistointi tai luovutus ylläpitoa varten 14 March 2013 31 Testauksen psykologiaa Testaajan tehtävä on löytää virheitä Missio: Keksi mahdollisimman monta tapaa rikkoa tämä softa Testausta pidetään helposti destruktiivisena toimintana, vaikka se vaatii luovuutta ja älyä Erityisesti tutkiva testaus (exploratory testing) korostaa testaajan omaa panosta ja asiantuntemusta testauksen onnistumisessa 14 March 2013 32 16

Testaava kehittäjä? Useimmat kehittäjät haluavat mieluummin näyttää, että heidän koodinsa toimii kuin että se ei toimi Tehokkaan (= virheitä löytävän) testauksen kannalta kehittäjä ei ehkä pysty ottamaan riittävää etäisyyttä omaan koodiinsa Testitapauksista tulee helposti liian optimistisia ja todella ilkeät tapaukset jäävät testaamatta Perustavanlaatuiset vaatimusten väärinymmärrykset jäävät löytymättä! 14 March 2013 33 Erillisen testaustiimin käyttö Ohjelmistokehittäjistä riippumattoman testaustiimin käyttö yleensä parantaa testauksen laatua ja kattavuutta Ei ennakkoasenteita testiobjektia kohtaan Erityisosaamista ja kokemusta testauksesta Vaatii kuitenkin perehtymistä testattavaan ohjelmaan 14 March 2013 34 17

Testauksen löytämien virheiden raportointi Virheiden raportointi vaatii huolellisuutta ja asiallisuutta Vältettävä vastakkainasettelun syntymistä kommunikoinnissa Virheraporttien täytyy sisältää riittävät tiedot virheen toistamiseksi kehittäjien ympäristössä Täytyy sopia etukäteen siitä mikä katsotaan virheeksi ja mikä ei It s a feature Works as specified Tarvitaan molemminpuolista kunnioitusta ja ymmärrystä toisten työn luonteesta 14 March 2013 35 Testauksen seitsemän periaatetta 1. Testauksella voi vain osoittaa, että vikoja on, mutta sillä ei voi osoittaa, että niitä ei ole 2. Täydellinen (exhaustive) testaaminen ei ole mahdollista 3. Testausaktiviteetit tulisi aloittaa mahdollisimman aikaisin projektissa 4. Viat kerääntyvät usein yhteen 14 March 2013 36 18

Testauksen seitsemän periaatetta 5. Samanlaisina toistetut testit menettävät tehoaan ajan mittaan 6. Testaus on kontekstiriippuvaa 7. Virheettömyys ei välttämättä tarkoita sitä, että testattu järjestelmä on käyttäjilleen hyödyllinen 14 March 2013 37 Luennon oppimistavoitteet Testausprosessin perustoiminnot Testauksen psykologiaa Testauksen seitsemän periaatetta 14 March 2013 38 19