Ohjelmistotestaus -09

Samankaltaiset tiedostot
Ohjelmiston testaus ja laatu. Testaustasot

Ohjelmistojen mallintaminen. Luento 11, 7.12.

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

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

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

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

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

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

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

Työkalut ohjelmistokehityksen tukena

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

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

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

Työkalujen merkitys mittaamisessa

Convergence of messaging

Tapahtuipa Testaajalle...

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

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

Automaattinen yksikkötestaus

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

58160 Ohjelmoinnin harjoitustyö

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

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

Testiautomaatio tietovarastossa. Automaattisen regressiotestauksen periaate ja hyödyt

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

Turvakriittisen projektin menetelmät ja työkalut

Testaaminen ohjelmiston kehitysprosessin aikana

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

Test-Driven Development

Ohjelmien testaustyökalut

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

Sopisiko testiautomaatio yritykseesi juuri nyt? Testiautomaation soveltuvuuden arviointiopas

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

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

Testaussuunnitelma Labra

Good Minton QA Raportti Iteraatio 1 Sulkapalloliiton Kilpailujärjestelmä

UCOT-Sovellusprojekti. Testausraportti

Ohjelmistotuotantoprojekti

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

Advanced Test Automation for Complex Software-Intensive Systems

Harjoitustyön testaus. Juha Taina

L models. Testisuunnitelma. Ryhmä Rajoitteiset

Dynaaminen analyysi IV

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

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen

Onnistunut Vaatimuspohjainen Testaus

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Test-Driven Development

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

T SEPA - STAATTISET MENETELMÄT Tuomas Tolvanen, 55382U Timo Töyry, 58578B

JUnit ja EasyMock (TilaustenKäsittely)

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

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

Kontrollipolkujen määrä

Testaustyökalut Sini Mäkelä

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

Ohjelmistotuotanto s

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

TESTAUKSEN AUTOMATISOINTIPROSESSIN KEHITTÄMINEN TERVEYDENHUOLLON TIETOJÄRJESTELMÄÄN

Testaussuunnitelma. Dokumentti: Testaussuunnitelma.doc Päiväys: Projekti: AgileElephant Versio: V0.4

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

CASE Varma Testauksen haasteet moniuloitteisessa testiympäristössä Tuukka Vähäpassi

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

Ohjelmistotestauksen perusteita II

T SEPA päiväkirja

Hyväksymistestauksen tarkistuslista järjestelmän hankkijalle

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

Wipron Suomen toimipisteen ohjelmistotestauksen kehittäminen. Marko Isoaho

Laadunvarmistustekniikat

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

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

Noin 80 ajatusta testiautomaatiosta

TDD Käytännössä Todellinen työkalu vai lehmipoikien laukkaa? Harri Kulmala Solita Oy

Menetelmäraportti - Konfiguraationhallinta

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

T Testitapaukset TC-1

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

T Testiraportti - järjestelmätestaus

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

SEPA diary. Dokumentti: SEPA_diary_PK_RI.doc Päiväys: Projekti : AgileElephant Versio: V0.2

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

Laaturaportti [iteraatio 2] Ryhmä 14

Ohjelmistotekniikka - Luento 2

Testivetoinen ohjelmistokehitys

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

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

Testauksen hallintaa teekkareille (ja muille kiinnostuneille) Arto Stenberg

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

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Automaatiotestaus. Murtosalo, Jessica Laurea

Testaussuunnitelma. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

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

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

KÄYTETTÄVYYSTESTAUS OSANA KETTERÄÄ KEHITYSTÄ

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

COTOOL dokumentaatio Testausdokumentit

Ohjelmiston testaus ja laatu. Testaus yleistä

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

Ohjelmistotuotteen hallinnasta

Transkriptio:

Ohjelmistotestaus Testaustyökalut- ja automaatio Testaustyökalut ja -automaatio Testaustyökaluilla tuetaan testaustyötä sen eri vaiheissa Oikea työkalu oikeaan tarkoitukseen Testausautomaatio perustuu työkalujen käyttöön Pyritään automatisoimaan rutiininomaisia tai hankalia testausvaiheita Kaikki testaukseen liittyvät työkalut eivät kuitenkaan pyri automatisoimaan testausta 1

Testaustyön vaiheet Testaustyön yleiset vaiheet 1. Kohdenna ja rajaa testit 2. Suunnittele testitapaukset 3. Toteuta testitapaukset 4. Suorita testit 5. Analysoi tulokset Pätevät sekä manuaalisiin että automaattisiin testeihin Mitä tahansa vaihetta voidaan automatisoida Mitä kannattaa automatisoida? Rajaus Suunnittelu Testien laatu - älyllistä toimintaa Toteutus Suoritus Analysointi Toistettavuus - rutiinia 2

Testausautomaation anatomia - testien suorittamisen automatisointi Testiskripti: Testiskripti: -Syöte -testikuvaukset -Vertailusäännöt SUT Testaustyökalu Testilogi Testien syötteet Testien tulokset Odotetut tulokset vertailu Miksi automatisoida testausta? 1. Testien ajaminen ohjelman uusissa versioissa Regressiotestaus, yleisin ja ilmeisin automatisoinnin syy 2. Säännöllinen, jatkuva testaus Edellytys keteträlle kehittämiselle 3. Oikeassa elämässä mahdottomien testien ajaminen 200 käyttäjän simulointi Näkymättömän toiminnallisuuden testaus 4. Resurssien tehokkaampi käyttö Ihmistyö voidaan kohdentaa vaativiin tehtäviin Koneet jaksavat testata myös öisin ja viikonloppuisin 5. Testien yhdenmukaisuus ja luotettavuus 6. Testien uudelleenkäyttö 7. Tuotantoaikojen lyhentäminen Automaattisten testien kirjoittaminen vie aikaa, mutta suoritus on nopeaa 3

Mitä ongelmia on automatisoinnissa? Automatisointi ei korvaa manuaalista testausta. Automatisointi ei ehkä kannata kun... Testaus suoritetaan harvoin Ohjelmisto muuttuu jatkuvasti ja paljon Testituloksen tulkinta on vaikea automatisoida mutta helppo ihmiselle havaita Testit jotka vaativat fyysistä vuorovaikutusta Manuaaliset testit löytävät enemmän virheitä Bach: Automaattiset 15%, manuaaliset 85% Testi löytää virheen todennäköisemmin ensimmäisellä kerralla kun se ajetaan --> regressiotestausta Testitapausten laatu korostuu Automaattisessa testauksessa ei ole laatukontrollia, testeissä itsessään olevat virheet jäävät huomaamatta Ihminen pystyy kompensoimaan testitapausten heikkouksia Mitä ongelmia on automatisoinnissa? Automatisointi voi parantaa ainoastaan testauksen tehokkuutta, ei vaikuttavuutta Tosin malliperustainen testaus, MBT, parantaa myös vaikuttavuutta Testien automatisointi voi rajoittaa kehitystyötä Automatisoidut testit eivät kestä ohjelmiston muutoksia vaan menevät rikki Jäykistää kehitystä, tuo muutokselle ylimääräisen kustannuksen Työkaluilla ei ole mielikuvitusta Automatisoitu testaus voi käyttää hyväksi vain sitä tietoa ohjelmistosta ja sen tavoitteista mitä on suunniteltu ja formalisoitavissa. Ihmisellä on käytössä luovuus ja mielikuvitus joilla testausta voidaan mukauttaa sen aikana. 4

Eri työvaiheiden suhteelliset työmäärät Testitapauksen hyvyys automaatisoitu vs. manuaalinen 5

Testaustyökalut kehityksen eri vaiheissa Testisuunnittelun työkalut: testitapaustai datageneraattorit Testien suoritus ja vertailu työkalut Suorituskyky Simulaatio Dynaaminen analyysi Debuggerit Staattinen analyysi Testauksen hallinnan työkalut Ohjelmointi Vaatimusmäärittely Arkkitehtuurisuunnittelu Moduulisuunnittelu Hyväksyntätestaus Järjestelmätestaus Integrointitestaus Yksikkötestaus Kattavuusanalyysi Lähde: Fewster & Graham: Software Test Automation. 1999. Testisuunnittelutyökalut Loogiset testisuunnittelutyökalut Generoivat testisyötteitä automaattisesti Kutsutaan myös testitapausgeneraattoreiksi Koodiperustaiset, käyttöliittymäperustaiset tai spesifikaatioperustaiset testitapausgeneraattorit Malliperustainen testaus, MBT Fyysiset testisuunnittelutyökalut Generoivat testidataa tai muokkaavat olemassaolevaa dataa 6

Staattiset analysointityökalut Analysoivat koodia suorittamatta sitä Laskevat erilaisia mittareita Liittyvät yleensä itse lähdekoodin laatuun Esim. tyyliohjeiden noudattaminen, LOC, syklomaattinen kompleksisuus, luokkakoheesio Kattavuusanalyysityökalut Arvioivat testauksen kattavuutta perustuen ajonaikaiseen dataan Kertovat mikäli testaus on ollut riittämätöntä Eivät kerro, milloin on testattu tarpeeksi! Kattavuusmittarit käydään läpi testauksen metriikoiden yhteydessä 7

Dynaamiset analyysityökalut Etsivät ajonaikaisia ongelmia kuten muistivuotoja Debuggerit voidaan laskea tähän kategoriaan Eivät ole varsinaisia testaustyökaluja Voidaan käyttää virheen eristämiseen testauksessa Suorituskykyanalyysi- ja simulaatiotyökalut Kuormittavat järjestelmää ja simuloivat todellisessa elämässä harvinaisia syötteitä Esim. webbisovellusten testaamisessa yleisiä 8

Testien suoritus- ja vertailutyökalut Suorittavat etukäteen määriteltyjä testitapauksia ja syötteitä ja vertaavat tuloksia odotettuihin tuloksiin Testausautomaatio vaatii kummatkin osat: automaattisen suorituksen ja automaattisen tulosten analysoinnin Yleisin testaustyökalutyyppi Mistä työkaluja löytää? Kaupalliset toimijat IBM, Microsoft, CA,... Conformiq, Codenomicom (Suomalaisia) Open source Mukana myös em. kaupallisia toimijoita Kattava valikoima työkaluja Huokea tapa tutustua työkalujen valikoimaan http://www.opensourcetesting.org/ 9

Case: Testien suoritus ja vertailu JUnit JUnit on ohjelmistokehys, joka on suunniteltu auttamaan moduulitason automaattisten regressiotestien kirjoittamisessa JUnit on keskeinen teknologia testilähtöisessä kehittämisessä Testit ohjaavat kehitystyötä Testit kirjoitetaan ennen ohjelmakoodia http://www.junit.org/ Case: Testien suoritus ja vertailu JUnit - Esimerkki http://junit.sourceforge.net/doc/cookbook/cookbook.htm Erilaiset assert-metodit ovat testauksen selkäranka Testiluokkaan voi koota useita testejä Testaavat yleensä samaa luokkaa / toiminnallisuutta SetUp() metodi suoritetaan jokaisen testimetodin aluksi Yhteenkuuluvat testit voidaan koota suiteen @Test public void simpleadd() { Money m12chf= new Money(12, "CHF"); Money m14chf= new Money(14, "CHF"); Money expected= new Money(26, "CHF"); Money result= m12chf.add(m14chf); asserttrue(expected.equals(result)); } 10

Case: Testien suoritus ja vertailu FitNesse http://fitnesse.org/ Hyväksyntätestaustyökalu ketterään ohjelmistokehitykseen Korkeamman tason JUnit Asiakas kirjoittaa testien avulla, mitä järjestelmän pitäisi tehdä Ohjelmoijat saavat suuntaviivat työlleen Etenemisen seuranta on suoraviivaista xunit: Building the code right / FitNesse: Building the right code 11

12

Case: Testien suoritus ja vertailu JUnit ja FitNesse FitNesse JUnit Ohjelmointi Vaatimusmäärittely Arkkitehtuurisuunnittelu Moduulisuunnittelu Hyväksyntätestaus Järjestelmätestaus Integrointitestaus Yksikkötestaus 13

Case: Testien suoritus ja vertailu Dogtail http://people.redhat.com/zcerza/dogtail/ Python-pohjainen työkalu käyttöliittymätestauksen automatisointiin Suunniteltu GNOME-ikkunointijärjestelmän testaukseen, mutta pitäisi toimia myös muilla alustoilla Case: Testien suoritus ja vertailu Dogtail - Esimerkki Esimerkkisivu Sisältää testien lähdekoodit sekä flashillä toteutetut käyttöanimaatiot http://people.redhat.com/zcerza/dogtail/media.html Skriptaus Tulosten vertailu 14

Case: Staattinen analyysi Checkstyle http://checkstyle.sourceforge.net/ Analysoi, noudattaako Java-lähdekoodi tyylisääntöjä Tyylisääntöjen noudattaminen lisää koodin ylläpidettävyyttä ja luettavuutta, sekä vähentää välillisesti virheitä Voidaan lisätä omia sääntöjä Sisältää Sunin tyylikonventiot: http://java.sun.com/docs/codeconv/ Komentoriviversion lisäksi monia muita Ant-task Eclipse-plugineja, esim. http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm Case: Staattinen analyysi Checkstyle - Esimerkki 15

Case: Staattinen analyysi Checkstyle - Esimerkki Case: Staattinen analyysi Checkstyle - Esimerkki 16

Case: Testauksen hallinta Flyspray http://www.flyspray.org/ Helppokäyttöinen tracker-ohjelmisto Webbipohjainen, monenkäyttäjän ympäristö Tarkoituksena helpottaa bugien dokumentointia Voidaan käyttää myös muiden asioiden, kuten vaatimusten dokumentointiin Tarkat historiatiedot ja tietojen seuranta Hyväksi havaitut kevyen ohjelmistokehityksen perustyökalut Wiki, tracker ja versionhallinta Demosivusto Case: Testauksen hallinta Flyspray - Esimerkki http://demo.flyspray.org/ Tunnus: super / Salasana: super Uuden bugin lisäys Bugien väliset riippuvuudet Raportin tilan muuttaminen Historia ja kommentit 17