Ohjelmistotestauksen perusteita I Luento 1 Antti-Pekka Tuovinen



Samankaltaiset tiedostot
Ohjelmistotestauksen perusteita Luento 1 Antti-Pekka Tuovinen

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

Harjoitustyön testaus. Juha Taina

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

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

Ohjelmistotestauksen perusteita II

Testaaminen ohjelmiston kehitysprosessin aikana

Dynaaminen analyysi IV

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

Dynaaminen analyysi III

58160 Ohjelmoinnin harjoitustyö

Ohjelmiston testaus ja laatu. Testaustasot

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

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

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

Ohjelmiston toteutussuunnitelma

Dynaaminen analyysi II

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

Dynaaminen analyysi I

811312A Tietorakenteet ja algoritmit I Johdanto

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Dynaaminen analyysi II Luento 4 Antti-Pekka Tuovinen

Staattinen testaus. Luento 5 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Ohjelmistojen testaus

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

1 Tehtävän kuvaus ja analysointi

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

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

Onnistunut Vaatimuspohjainen Testaus

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

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

Tapahtuipa Testaajalle...

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

Laatu tietojärjestelmähankkeissa. Tietohallinnon kokemuksia Juha-Pekka Leskinen Atk-päällikkö Eduskunnan kanslia

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

Kontrollipolkujen määrä

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

ITKP102 Ohjelmointi 1 (6 op)

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

JUnit ja EasyMock (TilaustenKäsittely)

Onnistunut SAP-projekti laadunvarmistuksen keinoin

Convergence of messaging

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

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

Ohjelmistotuotanto s

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

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

Versio Päiväys Tekijä Kuvaus Tikkanen varsinainen versio

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

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

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

L models. Testisuunnitelma. Ryhmä Rajoitteiset

Olet vastuussa osaamisestasi

7. Verifiointi ja validointi

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

Testaus teoriassa ja käytännössä. Jukka Paakki Helsingin yliopisto Tietojenkäsittelytieteen laitos

Laadunvarmistustekniikat

11. Javan toistorakenteet 11.1

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

@Tampereen Testauspäivät ( )

58131 Tietorakenteet ja algoritmit (syksy 2015)

Kokonaisvaltainen mittaaminen ohjelmistokehityksen tukena

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure

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

Sisällys. 16. Lohkot. Lohkot. Lohkot

Automaattinen yksikkötestaus

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

ITK130 Ohjelmistojen luonne

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

13. Loogiset operaatiot 13.1

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

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

Sisällys. 15. Lohkot. Lohkot. Lohkot

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Testaus osana ohjelmistojen elinkaarta II

MS-C2103 Koesuunnittelu ja tilastolliset mallit (5 op)

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

Laadukas vaatimustenhallinta. Pekka Mäkinen Copyright SoftQA Oy

UCOT-Sovellusprojekti. Testausraportti

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

Specifica(on by Example Vaa(mukset ja testaus ke9erissä projekteissa. Marko Taipale

MS-C2103 Koesuunnittelu ja tilastolliset mallit (5 op)

Ohjelmiston testaus ja laatu. Testaus yleistä

Hirviö Vertaistestausraportti

Ohjelmistotestaus -09

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

Koekysymyksiä. Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistojen suorituskyky

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

Testauspäällikön tarinoita Arto Stenberg

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

SEPA-päiväkirja: Käytettävyystestaus & Heuristinen testaus

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

Työkalujen merkitys mittaamisessa

Transkriptio:

Ohjelmistotestauksen perusteita I Luento 1 Antti-Pekka Tuovinen 12 March 2013 1

Luennon oppimistavoitteet Mitä ohjelmistojen testaaminen on? Mitä tarkoittavat virhetoiminto, vika ja erehdys? Mikä on testauksen suhde ohjelmiston laatuun? Mitkä ovat testattavuuden rajat? 12 March 2013 2

Testi testi jnk. kunnon, kelvollisuuden, soveltuvuuden tms. selville saamiseksi suoritettu koe; testata tutkia, koetella testejä käyttäen. Nykysuomen sanakirja, WSOY, 1990 test: 1. The means by which the presence, quality, or genuiness of anything is determined. 2. The trial of the quality of something. Webster s Encyclopedic Unabridged Dictionary of the English Language 12 March 2013 3

Ohjelmistot Ohjelmisto on ei-materiaalinen tuote, jonka ominaisuudet eivät ole fysikaalisten mittausten kautta määritettävissä Staattinen ja dynaaminen muoto Ohjelmakoodin automaattisella (algoritmisella) analysoinnilla ja ominaisuuksien päättelyllä on teoreettiset ja käytännölliset rajoitteensa Ohjelma on siis suoritettava, jotta sen ominaisuuksia ja todellista ajonaikaista käyttäytymistä voidaan tutkia ja kokeilla 12 March 2013 4

Ohjelmiston testaaminen on Ohjelman suorittamista tietokoneella ja sen käyttäytymisen vertaamista ohjelman vaatimuksiin 12 March 2013 5

IEEE:n määritelmiä testing [2] : An activity in which a system or component is executed under specified conditions, the results are observed or recorded, and an evaluation is made of some aspect of the system or component. [2] IEEE Standard for Software and System Test Documentation. IEEE Std 829-2008, http://ieeexplore.ieee.org/servlet/opac?punumber=4578271 12 March 2013 6

IEEE:n määritelmiä testing process [2] : provides objective evidence that the software-based system and its associated products: a) Satisfy the allocated system requirements b) Solve the right problem (e.g., correctly model physical laws, implement business rules, and use the proper system assumptions) c) Satisfy its intended use and user needs 12 March 2013 7

Ohjelmistojen testauksen erityispiirteitä Tarkastellaan vertailun vuoksi fyysisten eli materiaalisten tuotteiden ja toisaalta digitaalisten, ei-materiaalisten ohjelmistojen tuotekehitystä ja valmistusta 12 March 2013 8

Materiaalisen tuotteen kehitys ja (massa-) tuotanto 12 March 2013 9

Ohjelmistotuotteen kehittäminen 12 March 2013 10

Huomioita Ohjelmiston valmistus (engl. manufacturing, mass production) on pelkkää mallikappaleen digitaalista kopiointia, jossa virheiden mahdollisuus on käytännössä hyvin pieni Valmistusprosesseista ja materiaaleista johtuvat viat jäävät pois Tuotevalvontaa ei tehdä [ Ehkä olisi syytä esimerkiksi tietoturvan vuoksi? ] Applikaatiokauppapaikkojen tekemät testit (Google Play, App Store) 12 March 2013 11

Huomioita Kaikki ohjelmiston viat syntyvät tuotekehityksen aikana tosin myös ohjelmiston käyttö-ympäristössä tapahtuvat muutokset voivat aiheuttaa ohjelmiston vikaantumisen sen käyttöaikana (toiminnallisten riippuvuuksien kautta) 12 March 2013 12

Huomioita Ohjelmiston kehitysversioiden testaaminen voi olla vaikeaa, koska tuote on vain osittain implementoitu Ohjelmiston kehitys- ja kokoonpanojärjestys määrää milloin mitäkin toimintoja päästään testaamaan Ohjelmiston arkkitehtuuri voi tukea komponenttien ja toimintojen osittaista testausta tai jopa estää sen Yksittäin testatuista osista ei välttämättä synny toimivaa kokonaisuutta 12 March 2013 13

Mistä viat tulevat? 12 March 2013 14

Entä vikojen korjaaminen eli debuggaus? Testaus ei ole sama asia kuin debuggaus Debuggaus tarkoittaa vikojen jäljitystä ja korjaamista ohjelmakoodissa Testaajan tehtävä on löytää virheitä ohjelman toiminnassa ja raportoida virheet sekä testiolosuhteet niin selkeästi, että varsinaisia vikoja voidaan alkaa etsiä ja korjata Usein kehittäjä itse sekä testaa että korjaa 12 March 2013 15

Ohjelmistojen testaamisella on monia tavoitteita (goal) Ohjelman suorittaminen virheiden löytämiseksi Ohjelman suorittaminen laadun mittaamiseksi Ohjelman suorittaminen luottamuksen lisäämiseksi Ohjelman tai sen dokumentaation analysointi vikojen ennaltaehkäisemiseksi Myös ohjelmiston rakenteiden ja koodin staattinen analyysi voi olla osa testausta Ohjelman suoritus tapahtuu analysoijan mielessä 12 March 2013 16

Ohjelmistojen laatu ja testaus Ohjelmiston laatu on monisyinen asia Sisäinen laatu Ulkoinen laatu Käytössä ilmenevä laatu Laatumalli määrittelee joukon laatupiirteitä (characteristics, quality attributes) joiden suhteen laatua mitataan ISO 9126 laatumalli 12 March 2013 17

Ohjelmistojen laatu ja testaus Tietyn ohjelmiston (vaadittu) laatu määritellään Valitsemalla joukko ohjelman tarkoituksen ja käytön kannalta aiheellisia laatupiirteitä Antamalla mitta-asteikot ja tavoitearvot laatupiirteille Määrittelemällä miten laatupiirteiden arvojen mittaus tehdään 12 March 2013 18

Ohjelmistojen laatu ja testaus Virheiden määrällä on suora yhteys ohjelmiston laatuun Käyttäjän kokema laatu on huono, jos ohjelma Ei tee kaikkea mitä sen pitäisi Toimii liian hitaasti On liian vaikea käyttää Virheiden löytämiseksi tehtävä testaus onkin oleellinen osa ohjelmiston kokonaistavaltaista laadunvarmistusta (Quality Assurance) 12 March 2013 19

Ohjelmistojen laatu ja testaus Ohjelmiston laatutavoitteiden edellä kuvattu määritteleminen mahdollistaa myös laadun suoran testaamisen (non-functional testing) Jos testissä saavutetaan testattavalle piirteelle annettu tavoitearvo, tulos on pass muuten fail Vakioidut testiaineistot (test data), testiolosuhteet (test conditions) ja testin suoritustapa (test execution) tekevät mittaustuloksista ajallisesti vertailukelpoisia Esimerkki Smartphone UI performance testing (case Nokia) 12 March 2013 20

Testattavuuden rajat formaalit menetelmät Ohjelmien virheettömyyden täydellinen automaattinen (algoritminen) varmistaminen eli verifiointi on teoreettisestikin mahdotonta Kts. halting problem (pysähtymisongelma, tuttu Laskennan mallit -kurssilta) Voidaan tehdä joidenkin ominaisuuksien suhteen Vaatii yleensä ohjelman formaalin spesifikaation erikoiskielellä Soveltuu työläytensä vuoksi vain erikoistapauksiin Lopullinen implementaatio pitää joka tapauksessa testata suorittamalla Tosin kevyemmin kuin ilman formaalia verifiointia 12 March 2013 21

Testattavuuden rajat testaus suorittamalla Entä sitten ohjelman testaaminen suorittamalla voidaanko siinä päästä täydelliseen kattavuuteen? Halutaan testata ohjelman/ohjelman osan toiminta kaikilla teknisesti mahdollisilla (myös odottamattomilla) syötteillä (black-box testing) Halutaan testata kaikki mahdolliset eri suorituspolut ohjelmarakenteen läpi (whitebox testing) Täydellinen testaus löytäisi kaikki virheet 12 March 2013 22

Black-box -esimerkki Testattava metodi: public class BMICalculator { } public static double computebmi( Integer body_weight_in_kg, Integer height_in_cm) { // formula: // 1.3 * body_weight / pow( height, 2.5 )... } 12 March 2013 23

Black-box -esimerkki Silmukka kaikkien syötearvoparien läpikäymiseksi: for (int w=integer.min_value;w<integer.max_value;w++) { for (int h=integer.min_value;h<integer.max_value;h++) { BMICalculator.computeBMI(w,h); } } (Huom: tämä ei ole testi miksi?) 12 March 2013 24

Black-box -esimerkki Silmukan suoritusaika tehokkaalla PC:llä ~ 122 000 vuotta Käytännössä eri testitapauksiakin voi olla ääretön määrä (esim. käyttäjän antamat erilaiset syötteet interaktiivisessa sovelluksessa) 12 March 2013 25

White-box -esimerkki <stmt A> Do{ if (<cond 1>) { if (<cond 2>) { if (<cond 3>){ <stmt B> }else{ <stmt C> } }else{ if (<cond 4>) { <stmt D> }else{ <stmt E> } } }else{ <stmt F> } } While (<cond 5>) <stmt G> A 1 2 3 4 B C D E F 5 G 12 March 2013 26

White-box -esimerkki Olkoon niin, että Do-While -silmukka suoritetaan vähintään kerran mutta enintään 20 kertaa Silmukan suoritukset ovat toisistaan riippumattomia Silmukan edellinen suoritus ei vaikuta siihen, mikä kontrollivuoverkon haara käydään läpi seuraavalla kerralla 12 March 2013 27

White-box -esimerkki Halutaan käydä läpi jokainen erilainen silmukan suorituksen sisältävä suorituspolku (= eri pituinen ja eri suoritushaarat sisältävä polku) Suorituskertojen yhteenlaskettu lukumäärä on: 5 + 5 2 + + 5 19 + 5 20 ~ 10 14 Jos testaus voidaan automatisoida niin, että yhden polun suoritukseen kuluva aika on 5 µs, koko testin suoritukseen kuluu n. 19 vuotta 12 March 2013 28

Testattavuuden rajat Täydellinen (exhaustive) eli kaikki mahdolliset (järkevät ja järjettömät) syötearvot ja suorituspolut kattava testaaminen ei ole siis yleensä mahdollista Käytännössä voidaan testata vain murto-osa kaikista mahdollisuuksista Hyvin valituilla testitapauksilla voidaan kuitenkin paljastaa merkittävä määrä vikoja ja saavuttaa tyydyttävä testauksen kattavuus 12 March 2013 29

Testauksen suunnittelu Jokaisen ohjelmiston testauksen kattavuus ja intensiteetti täytyy päättää erikseen Päätöksenteon perusteet Riskianalyysi Testaukseen käytettävissä olevat resurssit (henkilöstö, työkalut, osaaminen) Testaukseen käytettävissä oleva aika Tavoitteena hyvä hyötysuhde Testaamisen kustannukset vs. saavutettu hyöty Testaukseen 20 50% kokonaisbudjetista 12 March 2013 30

Luennon oppimistavoitteet Mitä ohjelmistojen testaaminen on? Mitä tarkoittavat virhetoiminto, vika ja erehdys? Mikä on testauksen suhde ohjelmiston laatuun? Mitkä ovat testattavuuden rajat? 12 March 2013 31