CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen (etu.suku@lut.fi) Kevät 2015



Samankaltaiset tiedostot
CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

Tapahtuipa Testaajalle...

58160 Ohjelmoinnin harjoitustyö

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

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

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

Kuopio Testausraportti Asiakkaat-osakokonaisuus

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

KEYAQUA-VERKKOTIETOJÄRJESTELMÄN TESTAUS

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

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

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

Testausautomaation mahdollisuudet käyttöliittymän testauksessa. Anssi Pekkarinen

Testiautomaatio tietovarastossa. Automaattisen regressiotestauksen periaate ja hyödyt

UCOT-Sovellusprojekti. Testausraportti

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

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

Convergence of messaging

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

Ohjelmistotestaus -09

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

Harjoitustyön testaus. Juha Taina

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

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

KÄYTETTÄVYYSTESTAUS OSANA KETTERÄÄ KEHITYSTÄ

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

TESTAUKSEN AUTOMATISOINTI ROBOT FRAMEWORKILLA Case 2M-IT Oy

Kuopio Testausraportti Kalenterimoduulin integraatio

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

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

Ohjelmistotestauksen perusteita II

@Tampereen Testauspäivät ( )

Suorituskyvyn varmistaminen sovelluskehityksen eri vaiheissa Paavo Häkkinen, Presales Teamleader Compuware Finland

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmiston testaus ja laatu. Testaustasot

Testauksen hallintaa teekkareille (ja muille kiinnostuneille) Arto Stenberg

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

Lohtu-projekti. Testaussuunnitelma

Project-TOP QUALITY GATE

Good Minton QA Raportti Iteraatio 1 Sulkapalloliiton Kilpailujärjestelmä

T Testiraportti - järjestelmätestaus

Testi generaattori. Testien ajotyökalu. Kuva 1. Offline mallipohjainen testaus

Suorituskyky- ja tietoturvatestaus Kelassa

Sopisiko testiautomaatio yritykseesi juuri nyt? Testiautomaation soveltuvuuden arviointiopas

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

Sähköinen äänestämisen testaus

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

9. Luento: Ohjelmistotyö. Tommi Mikkonen,

Siimasta toteutettu keinolihas

Kontrollipolkujen määrä

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

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

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

Suomi.fi - Tietoturvallisuus sovelluskehityksessä. VAHTI sähköisen asioinnin tietoturvaseminaari

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

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

T Testiraportti - integraatiotestaus

Ohjelmiston testaussuunnitelma

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

Dynaaminen analyysi IV

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

Onnistunut SAP-projekti laadunvarmistuksen keinoin

HYVÄKSYMISTESTAUS- RAPORTTI - HAKEUTUJAN PALVELUT JA TODENNETUN OSAAMISEN REKISTERI

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen

Automaattinen yksikkötestaus

Fiksumpi käyttöliittymä kuntaan. Miten kuntien tietojärjestelmät saadaan palvelemaan kuntalaisia? LapIT-päivät 2015

Johdantoluento. Ohjelmien ylläpito

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

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

L models. Testisuunnitelma. Ryhmä Rajoitteiset

Ohjelmistotuotantoprojekti

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

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

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

S11-09 Control System for an. Autonomous Household Robot Platform

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

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

Testaussuunnitelma. Polku versio 1.0. Projektiryhmä. Janne Pihlajaniemi. Antti Jämsén.

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

Noin 80 ajatusta testiautomaatiosta

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

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

Julkaisemattomia koulutusmateriaaleja

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

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

Dynaaminen analyysi I

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

Teemu Saarinen, Niko Viinikanoja TESTAUS JA SEN AUTOMATISOINTI

TESTIRAPORTTI - XMLREADER LUOKKA Virtuaaliyhteisöjen muodostaminen Versio 1.0

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

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

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

TESTAUSPROSESSIN KEHITTÄMINEN

Advanced Test Automation for Complex Software-Intensive Systems

Onnistunut Vaatimuspohjainen Testaus

Testausraportti v1.0. HOHTO - Henkilöstön osaamisen hallinnan työkalu

Transkriptio:

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET Jussi Kasurinen (etu.suku@lut.fi) Kevät 2015

JATKUU VIIME KERRASTA

OHJELMISTOTUOTANTO JA OHJELMISTOTESTAUS Ohjelmistotuotannon prosessi Suunnittelu Määrittely Toteutus Tarkastus Käyttöönotto Ohjelmistotestauksen prosessi Esitestaus Testauksen suunnittelu, testattavuuden arviointi Testaus eri tasoissa, regressiotestaus Käyttöönotto / hyväksymistestaus / Betatestaus Hotfixien, laajennusten testaus

MENETELMIÄ Musta laatikko Valkea laatikko Harmaa laatikko Regressio Automaatio Rasitus (kuormitus) Prototyypit Käytettävyystestaus A/B Raja-arvoanalyysit Tutkiva testaaminen Ad Hoc, Savutestit Mallipohjainen testaus Suorituskyky

A/B-TESTAUS Käytettävyystestauksen muoto, jossa kaksi tai useampi verrokkiryhmä testattavana. Kumpi on parempi, A vai B? Tavoitteena löytää paras toteutus käyttöliittymälle tutkimalla asiakkaiden käyttäytymistä eri varianttien kanssa. Esimerkiksi painikkeiden sijoittelu, erilaiset sivustolayoutit jne 1000 käyttäjää, 500 käyttää A:ta ja 500 käyttää B:tä viikon, katsotaan kumpi asiakasryhmä on tyytyväisempi.

KUORMITUSTESTAUS Kuormitustestaus (load testing, myös stress testing) on testaustoiminnan muoto, jossa ohjelma laitetaan toimimaan suunnitellulla käyttäjämäärällä ja tarkastetaan että kaikki toimii edelleen oikein. Esimerkiksi verkkokauppa, joka on suunniteltu palvelemaan 250 yhtäaikaista käyttäjää. 250 automatisoitua virtuaalikäyttäjää, jotka laitetaan tekemään normaaleja verkkokaupan toimintoja 50 selailemaan tuotekatalogia 50 ostamaan ja tilaamaan tuotteita 50 tekemään muutoksia jo tehtyihin tilauksiin 50 muuttamaan henkilötietojaan 50 toistuvasti avaamaan ja sulkemaan verkkosivun, simuloiden satunnaista kävijävirtaa.

KUORMITUSTESTAUS Kuormitustestauksella on kolme keskeistä tehtävää Tunnistaa järjestelmän pullonkaulat Selvittää millaiseen maksimikapasiteettiin järjestelmä pystyy Tarkastella sitä, miten testattava laite selviytyy normaaleista käyttöolosuhteista. Pullonkauloilla taas tarkoitetaan mahdollisesti ongelmia aiheuttavia kohtia Palvelimien välisten yhteyksien kykyä selvitä raskaasta ja jatkuvasta liikenteestä Tapahtumien vasteaikoja suorittimen ja muistin ollessa kuormitettuna Levyjen luku- ja kirjoitusnopeuksien riittävyyttä. Tarkastellaan ja todennetaan palvelunlaatuvaatimuksia (Quality of Service, QOS). Tapa löytää deadlockit ja muistivuodot sekä ongelmat, joita ei tyhjäkäynnillä ilmene.

RASITUSTESTAUS Jos kuormitustestaus viedään vielä pidemmälle, voidaan puhua rasitustestauksesta (stress testing). Tässä tapauksessa kuormitustestaus viedään astetta pidemmälle, laittaen järjestelmä palvelemaan suurempaa käyttäjämäärää tai raskaampaa kuormitusta kuin mihin se on normaaleissa olosuhteissa suunniteltu. Tässä tapauksessa tavoitteena on löytää ehdoton yläraja normaalin toiminnan jatkumiselle. Esimerkiksi testataan miten palvelinverkko osaa suojautua palvelunestohyökkäyksiltä.

SUORITUSKYKY TESTAUS Suorituskykytestaus (performance testing) on rasitustestauksen kevennetty muoto. Testauksen tavoitteena on osoittaa, että järjestelmä suoriutuu sille annetuista tehtävissä määrittelyjen mukaisesti. Käytännössä tämä voi tarkoittaa esimerkiksi Järjestelmän vasteajat Maksimikäyttäjämäärät Käsittelykapasiteetti on vähintään sitä luokkaa, mitä vaatimusmäärittelyssä on määritelty.

VIRHEIDEN KYLVÄMINEN Virheiden kylväminen (fault seeding, bebugging) tarkoittaa tarkoituksellista virheiden lisäämistä lähdekoodiin. Virheiden kylvämisellä on kaksi keskeistä käyttötarkoitusta; Testata sitä miten hyvin käytössä oleva testaussuunnitelma ja tapaukset löytää virheitä Tilastollisesti arvioida ohjelmassa vielä olevien virheiden määrää.

VIRHEIDEN KYLVÄMINEN V o tarkoittaa koodissa olevien oikeiden virheiden määrää. V k koodiin tarkoituksella lisättyjen, eli kylvettyjen, virheiden määrää. Testien jälkeen merkitään löydettyjen kylvettyjen virheiden määrää arvolla V kl Löydettyjen oikeiden virheiden määrää arvolla V ol. Jos oletetaan, että testien löytämien kylvettyjen virheiden ja oikeiden virheiden suhde on sama, silloin V o / V ol = V k / V kl Koska yllä olevasta kaavasta tiedetään kaikki muut arvot paitsi V o, voidaan se laskea.

VIRHEIDEN KYLVÄMINEN Esimerkiksi jos kylvämme koodiin sata virhettä joista löydämme 65, ja samalla löydämme 125 muuta virhettä, saadaan kokonaisvirheiden määräksi V o / 125 = 100 / 65 V o = ( 100 / 65 ) * 125 V o = 192 koska 125 virhettä löydetty (V ol ), on testatussa koodissa arviolta vielä ~70 virhettä. Ongelma: Saatiinko kaikki kylvetyt virheet otettua pois korjatusta koodista? Mitkä olivat kylvetyn virheen aiheuttamia eikylvettyjä vikoja?

MUTAATIOTESTAUS Virheiden kylvämiseen perustuva malli, jossa luodaan erilaisia satunnaisesti viallisia versioita moduulista. Mahdollistaa testitapausten laadukkuuden arvioinnin: kuinka monta mutanttia otettiin kiinni? Myös vakaustestausta, kyky toipua virheistä, mahdollisuus havainnoida miten ohjelma käyttäytyy vikatiloissa.

TESTAUSAUTOMAATIO

TESTAUSAUTOMAATIO Testausautomaatio tarkoittaa testaustoiminnan muotoa, jossa ohjelman testaamista varten rakennetaan automaattityövälineitä testien tekemistä varten. Testausautomaation tavoitteena on ottaa joukko toistuvasti tehtäviä testitapauksia, ja rakentaa niiden nopeaa tarkastamista varten erillinen laite. Pohjimmaisena ajatuksena testausautomaation rakentamisessa on vapauttaa testaajat muihin tehtäviin etsimään vikoja uusista osista; testaajien ajankäytön kannalta ole järkevää käyttää joka päivä tuntia samojen perustestien tekemiseen. Toisaalta taas automaattitestit voivat olla tarkastuksia, jotka tietokone jätetään yön aikana tekemään, ja kehittäjät voivat aloittaa työpäivänsä läpikäymällä tarkastuksen tulokset ja korjaamalla moduulit joissa havaittiin ongelmia

TESTAUSAUTOMAATIO Ohjaamatonta, täysin satunnaisuuteen perustuvaa testausautomaatiota kutsutaan apinatestaukseksi. Työkalu antaa satunnaisia syötteitä käytössä olevalle järjestelmälle ja mikäli järjestelmä kaatuu, tallentaa virheen aiheuttaneen syötesarjan. Testausautomaatiolle kaikille otollisimpia kohteita ovat esimerkiksi moduulien rajapinnat tai verkkoprotokollan tarkastukset. Näissä tapauksissa testausautomaatti voidaan rakentaa lähettämään esimerkiksi joukko kutsuja moduuliin ja tarkastaa, että testattavan moduulin uusi versio reagoi käskyihin oikein. Toinen perinteinen käyttökohde testausautomaatiolle on ollut käyttöliittymä.

ORAAKKELIONGELMA Miten tietokoneohjelmalle opetetaan, että ohjelma jota se tarkastelee toimii väärin? Entä miten se tehdään kustannustehokkaasti? Ihminenkin on erehtyväinen; näyttää toimivan oikein!= toimii oikein Yleisesti: mitä kaikkea voidaan automatisoida siten, että ihmistä ei tarvita tarkastamaan tuloksia?

TESTAUSAUTOMAATIO Ensimmäisen sukupolven ja samalla pohjatason laitteet ovat nauhoittamiseen ja toistamiseen perustuvia laitteita, joissa tapahtuma tallennetaan skriptiksi. Joskus skripti tukee yksinkertaista virhetilanteiden havainnointia ja hallintaa. Toisen sukupolven toisen tason testausautomaatiossa testaus toteutetaan skripteinä, jotka reagoivat syötteidensä tuottamiin tuloksiin. Tasoina ajateltuna skriptien tärkein ero on uudelleenkäytettävyydessä ja kehittyneisyydessä. Sama testitapahtuma voidaan siirtää uudelle alustalle tai muokata toteuttamaan useita eri testejä.

TESTAUSAUTOMAATIO Kolmannen sukupolven automaatiotyökalut mahdollistavat korkeamman abstraktiotason toiminnan. Automaationhallintatyökalut eivät enää ole sovellusriippuvaisia. Testiskenaarioita, jotka osaavat itsenäisesti käyttää testattavan laiteen käyttöliittymää. Tällä tasolla voidaan eriyttää testisuunnittelut ja automaatiotestauksen toteutus toisistaan. Neljäs testaussukupolvi on mallipohjainen ympäristö. Tämä laajentaa kolmannen sukupolven konseptia luomalla pelkän ohjelman käytön ympärille kokonaisen ympäristömallin, jonka avulla voidaan testata järjestelmän ulkoista käyttäytymistä. High-end -testaustutkimuksen osa-alue.

KÄYTÄNNÖN ASIOITA TESTAUSAUTOMAATIOSTA Käyttöönotetaan testausautomaatio organisaatiossa, joka ei ole riittävän järjestäytynyt pystyäkseen tukemaan sitä. Laajennetaan automaatiota liian nopeasti, jolloin kaikkia ongelmia ei ehditä korjaamaan. Luodaan automaatiota huonoilla tai väärin perustein valituilla työkaluilla. Yritetään laajentaa automaatiota liian useaan käyttökohteeseen. Iteratiivinen kehitysmalli tekee liian suuria hyppyjä versioiden välillä, automaation rakentaminen ei onnistu. Testaustyökalujen käyttämiseen ei anneta riittävästi resursseja tai niiden käyttörajapintoja ei implementoida riittävällä tarkkuudella. Käyttäjille ei anneta tarpeeksi opetusta työkalujen käyttöön.

MILLOIN AUTOMATISOIDAAN? Yleinen ohje: silloin kun toistettavia testitapauksia on paljon ja testien ylläpitotarpeet vähäisiä. Käsin aina sama työmäärä. Automaatti on kallis rakentaa, toistot halpoja.

TESTAUSAUTOMAATIOSTA Kustannukset huomioidaan mutta säästöt työmäärässä tai erityisesti testauskattavuuden kasvussa jätetään huomioimatta. Automaatiotestauksen tuloksia ja sen löytämiä virheitä verrataan käsin suoritettavaan testaukseen. Testausta ei priorisoida, jolloin automaatiotestaukseen sidotut testitapaukset joutuvat epäreiluun vertailuun. Testausautomaation rakentamiseen projektin ympärille ei anneta riittävää budjettia. Ylimääräisiä kustannuksia kuten ylläpitoa ei huomioida kustannuksissa. Automatisoidulla testauksella ei etsitä uusia virheitä, vaan estetään vanhojen virheiden uudelleenesiintyminen!