Ohjelmistotestaus Testaustyökalut ja
Transcription
Ohjelmistotestaus Testaustyökalut ja
Ohjelmistotestaus Testaustyökalut- ja automaatio Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 1 Testaustyön vaiheet • Testaustyön yleiset vaiheet 1. 2. 3. 4. 5. • • Kohdenna ja rajaa testit Suunnittele testitapaukset Toteuta testitapaukset Suorita testit Analysoi tulokset Pätevät sekä manuaalisiin että automaattisiin testeihin Mitä tahansa vaihetta voidaan automatisoida Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Mitä kannattaa automatisoida? Rajaus Suunnittelu Testien laatu älyllistä toimintaa Toteutus Suoritus Analysointi Ohjelmistotestaus -09 Toistettavuus rutiinia © Antero Järvi, Tuomas Mäkilä It-laitos / TY 2 Testausautomaation anatomia - testien suorittamisen automatisointi Testiskripti: Testiskripti: -Syöte -testikuvaukset -Vertailusäännöt SUT Testilogi Testaustyökalu Testien syötteet Testien tulokset Odotetut tulokset Ohjelmistotestaus -09 vertailu © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 3 Mitä ongelmia on automatisoinnissa? • Automatisointi ei korvaa manuaalista testausta. Automatisointi ei ehkä kannata kun... • • • • • Manuaaliset testit löytävät enemmän virheitä • • • Testaus suoritetaan harvoin Ohjelmisto muuttuu jatkuvasti ja paljon Testituloksen tulkinta on vaikea automatisoida mutta helppo ihmiselle havaita Testit jotka vaativat fyysistä vuorovaikutusta 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 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Mitä ongelmia on automatisoinnissa? • Automatisointi voi parantaa ainoastaan testauksen tehokkuutta, ei vaikuttavuutta – • Testien automatisointi voi rajoittaa kehitystyötä • • • Tosin malliperustainen testaus, MBT, parantaa myös vaikuttavuutta 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. Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 4 Eri työvaiheiden suhteelliset työmäärät Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Testitapauksen ”hyvyys” automaatisoitu vs. manuaalinen Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 5 Testaustyökalut kehityksen eri vaiheissa Vaatimusmäärittely Testisuunnittelun työkalut: testitapaustai datageneraattorit Testien Suorituskyky Hyväksyntätestaus suoritus Simulaatio ja vertailu työkalut Järjestelmätestaus Arkkitehtuurisuunnittelu Moduulisuunnittelu Dynaaminen analyysi Integrointitestaus Debuggerit Staattinen analyysi Ohjelmointi Yksikkötestaus Kattavuusanalyysi Testauksen hallinnan työkalut Lähde: Fewster & Graham: Software Test Automation. 1999. Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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ä Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Suorituskykyanalyysi- ja simulaatiotyökalut • Kuormittavat järjestelmää ja simuloivat todellisessa elämässä harvinaisia syötteitä • Esim. webbisovellusten testaamisessa yleisiä Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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/ Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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/ Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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)); } Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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” Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 11 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 12 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Case: Testien suoritus ja vertailu JUnit ja FitNesse Vaatimusmäärittely Hyväksyntätestaus FitNesse Arkkitehtuurisuunnittelu Järjestelmätestaus Moduulisuunnittelu Ohjelmointi Ohjelmistotestaus -09 JUnit Integrointitestaus Yksikkötestaus © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Case: Staattinen analyysi Checkstyle - Esimerkki Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 15 Case: Staattinen analyysi Checkstyle - Esimerkki Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Case: Staattinen analyysi Checkstyle - Esimerkki Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 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 Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Case: Testauksen hallinta Flyspray - Esimerkki • Demosivusto – http://demo.flyspray.org/ – Tunnus: super / Salasana: super • • • • Uuden bugin lisäys Bugien väliset riippuvuudet Raportin tilan muuttaminen Historia ja kommentit Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 17