Testaus osana ohjelmistojen elinkaarta I

Samankaltaiset tiedostot
Testaus osana ohjelmistojen elinkaarta Luento 2 Antti-Pekka Tuovinen

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmiston testaus ja laatu. Testaustasot

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

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

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

UCOT-Sovellusprojekti. Testausraportti

Ohjelmistotuotantoprojekti

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

Testaaminen ohjelmiston kehitysprosessin aikana

Dynaaminen analyysi IV

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen

Convergence of messaging

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

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

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

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

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

Testauksen hallintaa teekkareille (ja muille kiinnostuneille) Arto Stenberg

Testaus elinkaaressa

Testaus elinkaaressa. Testaustasot ja vaiheet

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

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

Testaussuunnitelma Labra

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

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

Ohjelmiston testaussuunnitelma

Dynaaminen analyysi II Luento 4 Antti-Pekka Tuovinen

Dynaaminen analyysi I

L models. Testisuunnitelma. Ryhmä Rajoitteiset

Kontrollipolkujen määrä

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

Test-Driven Development

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

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

Dynaaminen analyysi II

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

Test-Driven Development

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

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

Hirviö Laadunvarmistussuunnitelma

T Testiraportti - järjestelmätestaus

Rinnakkaisten ohjelmien testaus Keskeisiä periaatteita ja strategioita

10. Tarkastukset. Tarkastusten rakenne

Tarkastusten rakenne. 10. Tarkastukset. Tuotoksen tekijän rooli. Tarkastustiimi. Tarkastusprosessin vaiheet. Tarkastusprosessi

Tapahtuipa Testaajalle...

Ohjelmistotestauksen perusteita II

Testaus osana ohjelmistojen elinkaarta II

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

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

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

7. Verifiointi ja validointi

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

Sisältö. Integrointitestaus. Yleinen teoreettinen pohja. Integrointitestaus prosessina. Skooppi, focus ja locus

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

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

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

2. Ohjelmistotuotantoprosessi

Testataanko huomenna?

Testauksen hallinta ja johtaminen

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Harjoitustyön testaus. Juha Taina

Ohjelmien testaustyökalut

Prosessimalli. 2. Ohjelmistotuotantoprosessi. Prosessimallin vaihejako. Prosessimallien perustehtävät. Ohjelmiston suunnittelu. Vaatimusmäärittely

Hirviö Laadunvarmistussuunnitelma

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

Onnistunut SAP-projekti laadunvarmistuksen keinoin

Testaussuunnitelma. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

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

Ohjelmistotestaus -09

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

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Käyttötapausanalyysi ja testaus tsoft

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

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

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

Dynaaminen analyysi III

MOBIILISOVELLUKSEN TESTAUS- MENETELMÄT

58160 Ohjelmoinnin harjoitustyö

Verifiointi ja validointi

Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita

T Testiraportti - integraatiotestaus

Testilähtöinen ohjelmistokehitys. Testilähtöinen ohjelmistokehitys. TDD Testilähtöinen ohjelmistokehitys. Testi! Testi

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

Standardin IEC testaustekniikoista. V-malli vai ketterämpi prosessi?

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

Ohjelmistotekniikka - Luento 2

COTOOL dokumentaatio Testausdokumentit

Testausoppeja toimialavaihdoksesta

Good Minton QA Raportti Iteraatio 1 Sulkapalloliiton Kilpailujärjestelmä

Sähköinen äänestämisen testaus

Hyväksymistestauksen tarkistuslista järjestelmän hankkijalle

SOPIMUS ASIAKAS- JA POTILASTIETOJÄRJESTELMÄSTÄ

Laadunvarmistusdokumentti

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ohjelmistotestauksen perusteita I Luento 1 Antti-Pekka Tuovinen

Lohtu-projekti. Testaussuunnitelma

Järjestelmäintegroinnin. lähitulevaisuus. Senkun asennetaan osajärjestelmät yhteen ja se on siinä? Tampereen Testauspäivä , TTY

Transkriptio:

Testaus osana ohjelmistojen elinkaarta I Luento 3 Antti-Pekka Tuovinen www.cs.helsinki.fi 19 March 2013 1 Oppimistavoitteet Ohjelmistokehityksen V-malli Testauksen tasot Komponenttitestaus Integrointitestaus Järjestelmätestaus Hyväksyntätestaus www.cs.helsinki.fi 19 March 2013 2 1

Ohjelmistokehityksen V-malli Kurssikirjan kuva 3-1 General V-model s. 40 Nostaa testauksen muitten kehitysaktiviteettien rinnalle Korostaa testauksen suunnitelmallisuutta Malli tunnistaa ohjelmiston eri rakennetasot, jotka vaativat omanlaisensa testauksen Tavoitteet, tekniikat, osaaminen www.cs.helsinki.fi 19 March 2013 3 V-mallin Veet Validointi soveltuuko ohjelma ajateltuun käyttöönsä? Verifiointi onko ohjelman osa toteutettu määrittelynsä mukaisesti? Validoinnin rooli korostuu V-mallin ylemmillä testaustasoilla www.cs.helsinki.fi 19 March 2013 4 2

Testaustasot - Komponenttitestaus A.k.a Yksikkötestaus Ohjelman pienimpien toiminnallisten rakenneosien testausta Luokka, moduuli, funktio, skripti, www.cs.helsinki.fi 19 March 2013 5 Komponenttitestauksen lähtökohdat Komponentit testataan yksitellen ja erillään muista komponenteista Löydetyt virheet johtuvat testattavassa komponentissa olevista vioista Testataan komponentin sisäistä toimintaa ja käyttäytymistä White-box testauksen rooli korostuu www.cs.helsinki.fi 19 March 2013 6 3

Komponenttitestauksen ympäristö Testaus täytyy tehdä läheisessä yhteistyössä kehittäjien kanssa - usein kehittäjät tekevät yksikkötestauksen itse Tarvitaan testiajuri (test driver), joka Alustaa testitapausten suorituksen Kutsuu komponentin palveluja/toimintoja Vastaanottaa kutsujen tuottamat tulokset ja vertaa niitä odotettuihin arvoihin Kirjaa testien suorituksen ja tulokset (pass/fail) www.cs.helsinki.fi 19 March 2013 7 Komponenttitestauksen ympäristö Yksikkötestauskehikot (test framework, test fixture) xunit arkkitehtuuri JUnit Javalle (www.junit.org) Esimerkki JUnit:n käytöstä NetBeans kehitysympäristössä: https://wiki.helsinki.fi/display/ohma/junit www.cs.helsinki.fi 19 March 2013 8 4

Komponenttitestauksen tavoitteet Toiminnallisuuden verifiointi Varmistetaan oikea toiminta valituilla testitapauksilla eli syöte/tulos kombinaatioilla Vikasietoisuuden (robustness) testaus Testataan toimintaa virheellisillä (ja määrittelemättömillä) syötteillä Testataan toimintaa muissa poikkeustilanteissa Engl. negative tests www.cs.helsinki.fi 19 March 2013 9 Komponenttitestauksen tavoitteet Tehokkuustestit Laskentaresurssien käyttö, suoritusnopeus Vain kriittisille komponenteille (sulautetut ohjelmistot, tiukat aikavaatimukset) Ylläpidettävyyden testaaminen Käytetään staattista analyysiä, ei ohjelman suorittamista Koodin rakenne, modulaarisuus, kommentointi, koodauskonventioiden noudattaminen, ymmärrettävyys jne. www.cs.helsinki.fi 19 March 2013 10 5

Testilähtöinen kehitys Test Driven Development (TDD) Suosittu iteratiivisessa ja ketterässä kehityksessä Koodattavan moduulin/luokan yksikkötestit kirjoitetaan ensin Aluksi testi epäonnistuu, koska implementaatiota ei vielä ole Koodausta jatketaan, ja kun kaikki testit lopulta menevät läpi, implementaatio on valmis Testit automatisoidaan ja ne ajetaan koodin muuttuessa www.cs.helsinki.fi 19 March 2013 11 Testaustasot - Integrointitestaus Integrointi = komponenttien/yksiköiden koostaminen suuremmiksi rakenneyksiköiksi (alijärjestelmiksi) Integroitavat komponentit on jo testattu Tavoitteena on löytää virheitä yhdistettyjen komponenttien Rajapinnoista (interface) Vuorovaikutuksesta (interaction) www.cs.helsinki.fi 19 March 2013 12 6

Testaustasot - Integrointitestaus Eri tiimien toteuttamien komponenttien vuorovaikutus/yhteistoiminta on altis puutteellisen määrittelyn, väärinymmärrysten ja heikon kommunikaation aiheuttamille vioille Eri tahtiin etenevä kehitystyö asettaa haasteensa komponenttien yhteistoiminnan toteutttamiselle Erityisen hankalia ovat tapaukset, joissa vieraan komponentit käyttävät sisäisiksi (eijulkiksi) tarkoitettuja rajapintoja, jotka voivat muuttua odottamatta www.cs.helsinki.fi 19 March 2013 13 Integrointitestauksen lähtökohdat Testitapausten pohjana käytetään arkkitehtuurisuunnittelua Arkkitehtuuri / järjestelmäarkkitehtuuri Käyttötapaukset Työnkulkujen kuvaukset (workflow) Valmisohjelmistojen/komponenttien (COTS) vuorovaikutus itse kehitettyjen komponenttien kanssa kuuluu integraatiotestauksen piiriin www.cs.helsinki.fi 19 March 2013 14 7

Integrointitestauksen ympäristö Pyritään käyttämään hyväksi komponenttitestauksen testiajureita Komponentit tarjoavat palvelunsa rajapintojen kautta, joita komponenttitestauksenkin ajurit käyttävät Integroitujen komponenttien yhteistoiminnan seurantaa varten tarvitaan monitoreita (monitor) Komponenttien välisen dataliikenteen lukeminen ja kirjaaminen lokiin www.cs.helsinki.fi 19 March 2013 15 Integrointitestauksen tavoitteet Integroitavien komponenttien yhteistoiminnan virheiden ja ristiriitojen löytäminen Käännösaikaiset (staattiset) rajapintamäärittelyjen ristiriidat löytyvät yleensä koostamisen (build) aikana Suoritusaikaiset (protokolla-) viat löytyvät vain testaamalla www.cs.helsinki.fi 19 March 2013 16 8

Integrointitestauksen tavoitteet Tyypillisiä kommunikaatioon liittyviä vikoja Syntaktisesti vääränmuotoisen datan lähettäminen tai datan lähettämättä jättäminen aiheuttaa poikkeuksen vastaanottavassa komponentissa Datan välitys toimii, mutta komponentit tulkitsevat datan merkityksen eri tavoin Tiedonsiirrossa on ajoitusongelmia Väärään aikaan, liian myöhään, liian tiheään www.cs.helsinki.fi 19 March 2013 17 Integrointitestauksen tavoitteet K: Voisiko komponenttitestauksen jättää pois, ja ajaa kaikki testit vasta integroinnin jälkeen? V: Ei ole järkevää. Perusteluita mietitään tarkemmin seuraavissa laskareissa. www.cs.helsinki.fi 19 March 2013 18 9

Integrointistrategioista Komponentit valmistuvat usein eri tahtiin, jolloin voi olla vaikea etukäteen tietää, milloin integraatiotestausta päästään tekemään Testauspäällikön (test manager) on tehtävä integrointitestausta varten suunnitelma, joka ottaa huomioon ohjelmiston testausstrategian, arkkitehtuurin ja projektisuunnitelman Parhaassa tapauksessa testaustarpeet otetaan jo huomioon projektisuunnitelmassa ja komponenttien implementointijärjestyksessä www.cs.helsinki.fi 19 March 2013 19 Yleisiä integrointistrategioita Top-down Bottom-up Ad hoc Backbone / skeleton ja tietysti viimeiseen asti vältettävä, eiinkrementaalinen Big Bang Lähinnä seurausta integrointistrategian puuttumisesta! www.cs.helsinki.fi 19 March 2013 20 10

Testaustasot Järjestelmätestaus Tuo mukaan asiakkaan ja käyttäjän näkökulman teknisten vaatimusten rinnalle Monien toimintojen suorittaminen ja järjestelmän piirteiden havainnointi vaativat kaikkien komponenttien yhteistoimintaa Niitä voidaan testata vain järjestelmätasolla www.cs.helsinki.fi 19 March 2013 21 Järjestelmätestauksen lähtökohdat Järjestelmä- ja ohjelmistovaatimukset, määrittelyt, käyttöoppaat, asennusohjeet, ylläpito-ohjeet jne. Testit suoritetaan mahdollisimman samanlaisessa laitteisto- ja ohjelmistoympäristössä kuin lopullinen käyttöympäristö Ohjelmiston eri konfiguraatiot ja suorituskyky eri tilanteissa on myös testattava www.cs.helsinki.fi 19 March 2013 22 11

Järjestelmätestauksen lähtökohdat Datan laatu on entistä tärkeämpää nykyisissä ohjelmistoissa Järjestelmän käyttämän datan eheys, täydellisyys ja ajantasaisuus on varmistettava www.cs.helsinki.fi 19 March 2013 23 Järjestelmätestauksen lähtökohdat Järjestelmätestaus on syytä tehdä erillisessä testausympäristössä ei asiakkaan tuotantoympäristössä Vältetään testattavan ohjelmiston vioista tuotantoympäristöön aiheutuvat vahingot Testausolosuhteita (test condition) voi olla vaikeaa hallita tuotantoympäristössä Testien toistettavuus on parempi www.cs.helsinki.fi 19 March 2013 24 12

Järjestelmätestauksen tavoitteet Vaatimusten väärästä, epätäydellisestä tai epäyhtenäisestä implementoinnista johtuvien virheiden löytäminen Puuttuvien tai unohdettujen vaatimusten huomaaminen ja tunnistaminen www.cs.helsinki.fi 19 March 2013 25 Järjestelmätestauksen ongelmia Jos vaatimuksia ei ole kirjattu ylös, järjestelmätestien suunnittelijoiden vaikeana tehtävänä on haalia tarvittava informaatio hajallaan olevista lähteistä Tässä tilanteessa paljastuu yleensä myös erilaisia tulkintoja samoista vaatimuksista, jolloin testaajien täytyy ottaa aloite yhteisen näkemyksen muodostamiseksi (testitapausten tuottamiseksi) Näissä olosuhteissa voi olla parasta turvautua tutkivaan testaukseen (exploratory testing) www.cs.helsinki.fi 19 March 2013 26 13

Testaustasot - Hyväksyntätestaus Edellä kuvatut testit tekee ohjelmiston toimittaja Ennen ohjelmiston ottamista käyttöön asiakkaankin on osallistuttava validointiin Asiakkaan/käyttäjän näkökulma ja evaluointi Erityisen tärkeää räätälöidyille ohjelmistoille Vakiintuneen valmisohjelmiston (COTS) hankinnan yhteydessä tehtävät hyväksyntätestaus voi olla kevyempi www.cs.helsinki.fi 19 March 2013 27 Hyväksyntätestauksen lähtökohdat Mikä tahansa järjestelmää käyttäjän/asiakkaan näkökulmasta kuvaava dokumentaatio Käyttötapaukset, liiketoimintaprosessit, lait ja säännökset, tietohallinnon ja ylläpidon säännöt ja prosessit www.cs.helsinki.fi 19 March 2013 28 14

Hyväksyntätestauksen lähtökohdat Hyväksyntätestejä voidaan tehdä osana muittenkin tasojen testausta Valmisohjelmistojen käyttöä voidaan testata jo integroinnin aikana Käyttöliittymään liittyvien komponenttien käytettävyyttä voidaan testata komponenttitestauksen yhteydessä Prototyyppejä voidaan käyttää uuden toiminnallisuuden testaamiseen jo ennen järjestelmätestausta Asiakkaan ja käyttäjän näkökulman saaminen mukaan projektin alkuvaiheessa on tavoiteltava asia Ketterien menetelmien yksi kulmakivi www.cs.helsinki.fi 19 March 2013 29 Hyväksyntätestauksen muodot 1. Sopimukseen kirjattujen hyväksymisehtojen täyttymisen testaus 2. Loppukäyttäjän hyväksyntätestaus 3. Tuotannon/operoinnin hyväksyntätestaus 4. Kenttätestaus www.cs.helsinki.fi 19 March 2013 30 15

Hyväksymisehtojen testaus Asiakas varmistaa, että ohjelmistossa ei ole (merkittäviä) puutteita ja että ohjelmisto muuten on tilaussopimuksen mukainen Toimittajan ja asiakkaan välisessä sopimuksessa on usein kirjattu erikseen hyväksymisehdot (acceptance criteria) Toimittajan pitäisi olla testannut ehtojen täyttyminen jo omissa järjestelmätesteissään Yleensä riittää hyväksynnän kannalta riittävien testien toistaminen yhdessä asiakkaan kanssa www.cs.helsinki.fi 19 March 2013 31 Hyväksymisehtojen testaus On tärkeää, että asiakas on itse määritellyt hyväksymistestauksen testitapaukset tai ainakin ne huolellisesti katselmoinut Toisin kuin järjestelmätestaus, hyväksyntätestaus tehdään nyt asiakkaan (tuotanto-)ympäristössä Myös ohjelmiston jakelu ja asennus testataan asiakkaan ympäristössä www.cs.helsinki.fi 19 March 2013 32 16

Loppukäyttäjän hyväksyntätestaus Asiakas ja loppukäyttäjät voivat olla eri henkilöitä Eri käyttäjäryhmillä on erilaisia tarpeita ja odotuksia Ohjelmistoa päivittäin työssään käyttävät Satunnaiset käyttäjät Ylläpidon ja tuotannon työntekijät, jotka vastaavat ohjelmiston saatavuudesta Johto, jolla on omia seuranta- ja raportointitarpeitaan Asiakkaan tehtävänä on usein valita testitapaukset kullekin käyttäjäryhmälle www.cs.helsinki.fi 19 March 2013 33 Loppukäyttäjän hyväksyntätestaus Tässä vaiheessa havaittujen merkittävien ongelmien tai virheiden korjaaminen voi olla hyvin kallista Siksi on syytä esimerkiksi prototyyppien ja käytettävyystestien kautta varmistua jo projektin aikaisessa vaiheessa, että kehitettävä ohjelmisto tulee täyttämään käyttäjäryhmien tarpeet Yleisimpien käyttäjän tehtävien pitää onnistua helposti ja intuitiivisesti; harvemmin tarvittavien toimintojen käyttämiseen voidaan edellyttää käyttöoppaiden lukemista www.cs.helsinki.fi 19 March 2013 34 17

Tuotannon/operoinnin hyväksyntätestaus Validoidaan ohjelmiston ominaisuudet ylläpidon (system administration) näkökulmasta Varmistukset Toipuminen vakavista häiriöistä (disaster recovery) Käyttäjien hallinta Turvaominaisuudet Jne. www.cs.helsinki.fi 19 March 2013 35 Kenttätestaus Ohjelmistoa voidaan käyttää hyvin monenlaisissa ympäristöissä Kenttätesteillä (field test) tavoitteena on tunnistaa eri käyttöympäristöjen mukanaan tuomat vaikutukset, joita on vaikea ennakoida Tärkeää erityisesti COTS ohjelmille Valituille käyttäjille toimitetaan esiversioita ohjelmistosta, jotka antavat siitä palautetta toimittajalle Alpha-, Beta-testaus www.cs.helsinki.fi 19 March 2013 36 18

Oppimistavoitteet Ohjelmistokehityksen V-malli Testauksen tasot Komponenttitestaus Integrointitestaus Järjestelmätestaus Hyväksyntätestaus www.cs.helsinki.fi 19 March 2013 37 19