Testaus ohjelmistokehityksen osana Maaret Pyhjrvi ja Erkki Pyhnen
- Slides: 71
Testaus ohjelmistokehityksen osana Maaret Pyhäjärvi ja Erkki Pöyhönen Julkaisuversio 1. 0 2005 -01 -06 tekijä mainittava http: //creativecommons. org/licenses/by/1. 0/fi/ Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Tiedoksi lukijalle • Tämä materiaali on edelleen työn alla – Varsinainen julkaisu tapahtuu testauskirjan julkaisun yhteydessä tai jälkeen • Materiaalin hyödyntäminen on vapaata – Erityisesti haluamme tukea yleishyödyllisen ohjelmistotestauksen opetuksen jäsentymistä tarjoamalla materiaalimme vapaasti muokattavaksi pohjamateriaaliksi • Uskomme että kirjallinen materiaali on noin 20 % vastaavasta koulutuksesta puhuttuna – Lisää materiaalia löytyy pään sisältä • Kysyttävää? – Ota yhteyttä maaret. pyhajarvi@iki. fi ja erkki. poyhonen@nokia. com Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
2 – Testaus ohjelmistokehityksen osana Tehokas ohjelmistotestaus Testaustekniikat Testaus ohjelmistokehityksen osana Testauksen suunnittelu ja hallinta Virheraportointi ja virheasian ajaminen Testausvälineet ja testauksen automatisointi Katselmoinnit testaustoimintana Testausprosessin muuttaminen Testitapaukset ja testien suorittaminen Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Oppimistavoitteet • Tiedät mitä testausprosessi on suhteessa ohjelmistoprosessiin • Tunnet suunnitelmaohjatun ja ketterän ohjelmistokehityksen sekä testauksen ja ymmärrät tasapainottelun niiden välillä • Osaat välttää perinteisimmät sudenkuopat testausprosessin määrittelyssä ja toteuttamisessa • Tunnet ohjelmistokehityksen dokumenttihierarkian ja ymmärrät että testaus ei perustu vain dokumentteihin • Osaat tehdä vaatimusanalyysin testausprosessissa tuotettavalle testauksen dokumentaatiolle • Tiedät mikä on testaustaso ja testaustyyppi ja osaat käyttää niitä suunnittelussa • Tiedät mitä testattavuus on ja kuinka sitä arvioidaan ja kehitetään • Ymmärrät että riskit riippuvat monista tekijöistä ja muuttuvat sekä ohjelmiston että projektin elinkaaren aikana Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
2 – Testaus ohjelmistokehityksen osana Käsiteltävät asiat Testauksen Vmalli Suunnittelua elinkaaressa Testausprosessi Testattavuus ja laatu Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
2 – Testaus ohjelmistokehityksen osana Käsiteltävät asiat V-malli ja testaustyypit Suunnittelua elinkaaressa Testausprosessi Testattavuus ja laatu Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testaustasot ja vaiheet • Testaustaso – Jatkuvaa testaustoimintaa tietyn tyyppisen testaustavoitteen ja testauskohteen ympärillä. – Testaustoiminnasta tekee oleellisesti jatkuvaa vaatimus uusintatestauksesta muutoksen osalta. – Taso ei ole välttämättä sama asia kuin vaihe. • Testausvaihe - Testaustason sisäinen tai useiden testaustasojen yhteinen tehtäväkokonaisuus, joka on tyypiltään kertaluonteinen eikä jatkuva. Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
V-malli – testauksen tasot Hyväksymistestaus Vaatimukset Määrittely Tekninen suunnittelu Ohjelmointi Järjestelmätestaus Integrointitestaus Yksikkötestaus Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Tyypilliset testauksen tasot [Craig&Jaskiel 2002] Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testaustasojen tyypilliset merkitykset Tyypillinen organisointi kokonaisuus Hyväksymistestaus Testauksen kohteena olevan kokoonpanon laajuus osa Järjestelmätestaus Integrointitestaus Yksikkötestaus osa Ympäristöjen edustavuus Asiakas/ käyttäjä Testaaja Toteuttajat yhdessä Kukin toteuttaja kaikki Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Yksikkötestaus • Yksikkötestauksella tarkoitetaan koodin toteutukseen kohdistuvaa teknistä testausta – Keskittyy virheisiin, jotka tyypillisesti syntyvät koodia kirjoittaessa • Yksikkö voi olla: – Tehtävänanto: ”Koodaan ja testaan tämän ominaisuuden” – Komponentti, moduuli, luokka: ”toteutan kaikki toiminnallisuuden näihin kooditiedostoihin” • Laajuuden tulkinnassa paljon vaihtelua – Usein näkee suurissa hankkeissa jaettavan yksikkötestaustaso kahteen osaan, yksikkö- ja komponenttitestaukseen – Tällöin yksikkötestaus kohdistuu kooditiedostolaajuuteen ja komponenttitestaus vastaa kehittäjän omalle komponentilleen tekemää osajärjestelmätestausta ennen integrointia kokonaisjärjestelmään Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Integrointitestaus • Integrointitestauksella tarkoitetaan kaiken tasoisten osajärjestelmien yhdistämiseen kohdistuvaa teknistä testausta • Integrointitestaus usein vaikea erottaa yksikkötestauksesta, koska integrointi voi sisältää ohjelmointitehtäviä – Usein toimiva perussääntö: enemmän kuin yksi toteuttaja integrointitestaustarve – Arkkitehtuuri apuna integrointitestaustarpeiden tunnistamisessa • Testaus kohdistuu integroitavaksi valittujen osajärjestelmien laajuuteen – Integrointitestauksessa osajärjestelmien liittymän näkökulma Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Järjestelmätestaus • Järjestelmätestauksella tarkoitetaan kokonaisjärjestelmän laajuuteen kohdistuvaa testausta – Voi sisältää sekä teknisen että käyttäjän näkökulman • Testaus kohdistuu kulloinkin olemassa olevaan kokonaisjärjestelmän laajuuteen – Laajuus kasvaa uusien integrointien myötä – Järjestelmätestauksessa kokonaisjärjestelmän näkökulma Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Hyväksymistestaus • Hyväksymistestauksella tarkoitetaan testausnäkökulmaa, jossa tarkastellaan järjestelmää sen todelliseen ympäristöönsä soveltuvuuden kannalta • Sopimuspohjainen hyväksymistestaus – Voi olla juuri ennen tuotantoon siirtoa tai keskellä järjestelmätestausta – Etenkin monitoimittajaympäristössä hyväksymistestaus liittyy laskunmaksuun eikä voida odottaa tuotantoon siirtoa – Voi toistua jokaisen uuden alijärjestelmän versioasennuksen jälkeen • Alpha- ja betatestaus, pilotointitestaus – Virhetilanteiden löytäminen, joita on vaikeaa tai kallista löytää laboratorio-olosuhteissa – todellisten ympäristöjen monimuotoisuuden toistaminen haaste Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
V-malli – testauksen tasot Hyväksymistestaus Vaatimukset Määrittely Tekninen suunnittelu Testien suunnittelu Ohjelmointi Järjestelmätestaus Integrointitestaus Yksikkötestaus Testien ajaminen ja korjaustyö Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
V-mallin ydin 1. Pienempien osien testaaminen ennen järjestelmään liittämistä on hyvä lähestymistapa. 2. Testaukselle on useita eri näkökulmia. 3. Testaus voi alkaa suunnittelulla heti kun korkeimman tason vaatimukset on tunnistettu. Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Erityisesti huomioi (1/2) • Suunnittele testit perustuen jokaisen suunnitteluvaiheen tuotokseen, mutta suorita testit siinä järjestyksessä joka on kaikkein järkevin – Testauksen vaiheistus voi olla erilainen kuin tasot peräkkäisinä vaiheina – Pyri saamaan oikea näkökulma, jolla löydetään tärkeät virheet, mukaan suoritukseen mahdollisimman aikaisin • Uusintatestauksella entistä suurempi painoarvo kun lisätään uusia ominaisuuksia olemassa oleviin järjestelmiin – Selvitä minkä testaustason näkökulmasta uusintatestausriski on taloudellisinta hallita Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Erityisesti huomioi (2/2) • Suunnitteluvaiheen tuotos ei välttämättä ole dokumentti – Dokumentti on vain yleinen viestinnän väline • V-mallia käytetään usein perusteluna sellaisten tehtävien tekemisen puuttumiselle, jotka ”olisi pitänyt jo tehdä”’ – Jos näet jonkun muun valmistelevan samoja testejä kuin sinun oletetaan tekevän, miksi tekisit? • Hyväksymistestauksen suunnittelun vaatiminen ennen muita aiheuttaa vaihtelevia reaktioita – ”He testaavat vain nämä, joten emme mekään muuta testaa” – ”He testaavat nämä joten meidän ei tarvitse tehdä sitä” Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Riski: V-mallin aikatauluvaikutus Katselmoi, mieluummin kuin määrittele testitapauksia virheellisiin vaatimuksiin pohjaten. Vertaiskatselmointien virheenpoistoteho 60 % Perspektiivipohjaisesti suunnattujen teho 35 % enemmän. parhailla katselmoijilla 20 % virheistä menee läpi testaukseen saakka. Virheet eivät ole tasaarvoisia. 80 % vältettävissä olevasta korjaustyöstä tulee 20 %: sta koodia. Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
2 – Testaus ohjelmistokehityksen osana Käsiteltävät asiat Testauksen Vmalli Suunnittelua elinkaaressa Testausprosessi Testattavuus ja laatu Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testauksen suunnittelu Testauksen missio ja korkean tason tavoitteet Organisaation odotukset testaustoiminnalle Laatupainotukset sovellusalueella • • Järjestelmä / tuote / palvelukohtainen Useita projekteja saman järjestelmän elinkaaressa • Testausstrategia • Projektikohtainen Projektin lähestymistapa, strategian räätälöinti • Yleistestaussuunnitelma Testitapaukset • Tarkentavat suunnitelmat ryhmittäin • • Testauksen yksityiskohdat Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testauksen tilannemalli Muokattu [Kaner et al. 2002] Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Annettujen määrittelyt • Missio - Täytettävät tavoitteet, jotta testaus olisi sidosryhmiensä näkökulmasta onnistunutta. • Vaatimukset - Onnistuneen järjestelmän kriteerit. • Toteutus ja integrointi - Järjestely, joka tuottaa testattavan järjestelmän. • Testausryhmä - Testaukseen käytössä olevat ihmiset. • Testausympäristöt ja -välineet - Testauksen järjestelmät, työkalut ja materiaalit. Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Annetut tarkemmin Testausympäristöt ja välineet Missio • Testauksen sidosryhmät • Testausympäristöt • Odotukset • Tavoitteet Kehitys ja integrointi • Sovellusarkkitehtuuri ja -rakenteet • Testikirjasto Vaatimukset • Testiaineistot • Laatu-aika-ominaisuus painotukset • Testausvälineet • Järjestelmän riskit • Havaintojen seurantajärjestelmä • Laatuominaisuuksien painotukset • Toimistotilat • Järjestelmän tavoitteet (ratkaistava ongelma) Testausryhmä • Kokoonpanonhallinta • Järjestelmän sidosryhmät • Osaaminen • Julkaisunhallinta • Vaatimusdokumentaatio • Virheiden estäminen • Epäsuorien vaatimusten viestintä • Projektin elinkaarimalli ja rytmitys • Projektinhallinta • Kehitysryhmä • Resurssointi • Johtaminen • Työn jakaminen • Motivaatio Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Valinnat • Lähestymistapa Kokoelma ajatuksia, jotka ohjaavat testien ja testauksen suunnittelua. • Käytännöt - Kokoelma ajatuksia, jotka ohjaavat voimavarojen kohdistamista lähestymistapaa toteutettaessa. Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testauskäsitteiden kohteita Testauskäsite Vastaa kysymyksiin Testauksen missio Mitä? Miksi? Testausstrategia Testaustekniikat Testauskäytännöt Testausorganisaatio Testausympäristö ja – välineet Mitä? Miksi? Miten? Entä jos? Miten? Kuka? Millä? Testausprosessi Mitä? Kuka? Missä? Milloin? Miten? Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testaustyyppi • Testaustyyppi – Ryhmä testausaktiviteettejä, joilla on yhteisiä ominaisuuksia joiden perusteella ne voidaan tunnistaa omana luokkanaan, ja jotka on ryhmitelty arvioimaan yhtä tai useampaa toisiinsa liittyvää laatuominaisuutta. – Voi sijoittua yhdelle tai useammalle testaustasolle ja testausvaiheeseen. – Kaikki eivät aina tarpeellisia - käytännössä testaustyypit muodostavat tarkastuslistan mahdollisesti katettavista asioista • Testaustyypit jakaantuvat toiminnallisiin ja eitoiminnallisiin Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Toiminnallisen testauksen testaustyyppejä • Toiminnallisuustestaus • Poikkeustilannetestaus (functionality testing, feature testing) • Yhtäaikaisuustestaus (concurrency testing) • Lokalisointitestaus testing) (localization testing) • Asennustestaus (installation testing) • Alustatestaus (platform testing) • Aloitustestaus (build verification testing, • Dokumentaation testaus (documentation testing) • Aineiston laadun testaus smoke testing) • Konfiguraatiotestaus (recovery (data quality testing) (configuration testing) • Yhteensopivuustestaus (compatibility testing) • Rinnakkaistestaus (end-to-end testing) • Rajapintatestaus (interface testing) • • Alfatestaus (alpha testing) Betatestaus (beta testing) Muuntotestaus (conversion testing) Tuotantotestaus (production testing, operational testing) • Standardien testaus (standards testing) Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Ei-toiminnallisen testauksen testaustyyppejä • Luotettavuustestaus (reliability testing) • Suorituskykytestaus (performance Kuormitustestaus (load testing) Rasitustestaus (stress testing) Paljoustestaus (volume testing) Kestävyystestaus (endurance testing) Tietoturvatestaus (security testing) Käyttöturvallisuuden testaus (safety testing) • Käytettävyystestaus (accessibility testing) • • Esteettömyystestaus • Palautettavuustestaus (recoverability testing) • Tuettavuustestaus (supportability testing) • Ylläpidettävyystestaus (maintainability testing) • Siirrettävyystestaus (portability testing) • Koodin laadun testaus (code quality testing) (usability testing) Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Tasot, vaiheet ja tyypit Hyväksymistestaus Järjestelmätestaus Integrointitestaus Yksikkötestaus uusinta Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testausaktiviteettien rytmitys (1/2) • Testien suoritus tarvitsee version ohjelmistosta • Testausryhmä saa ohjelmiston testaukselle tehtyjen julkaisujen kautta (koonnit ja julkaisut) • Ohjelmistoversion sisältö ohjaa ja rajaa tehtävää testausta – Riskien toteutumisen arviointi vaatii pääsyn sopivaan toiminnallisuuteen – Tärkeimmät löydettävissä olevat virheet riippuvat toteutuksen vaiheesta ja kypsyydestä – Testauksen syvyyden pitäisi peilata riskejä, joiden selviämisajankohtaa ei voi määrittää projektin alussa Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testausaktiviteettien rytmitys (2/2) • Joissain asioissa ajoissa valmistelu ja suunnittelu voi olla liian ajoissa – Muutos mitätöi suunnitelman – Muutoksen aiheuttama lisätyö luo haluttomuuttaa testauksen suuntaa • Tavoitteena oikea-aikainen suunnittelu: Tee testauksen suunnittelu juuri ajoissa ilman, että hukkaat aikaisen työn avainhyödyt. Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
In-synch vs. off-synch testaus • Tarvittavien valmistelujen kesto asettaa aktiviteettien rytmin – In-synch testaus koostuu testaustehtävistä jotka voidaan tehdä samassa rytmissä kuin jossa kehitys etenee, jatkuvaan tyyliin. – Off-synch testaus tarkoittaa tyypillistä näkymää suunniteltuun ja valmisteltuun testaukseen, jonka valmistelu ja suorittaminen vie liikaa aikaa ollakseen luonnollisesti integroitu kehityksen päivittäiseen/viikottaiseen rytmiin. • Rytmin huomioiminen – Tuo rakennetta lyhyen aikavälin suunnitteluun muistuttaen eri aikaväleistä joilla asioita tehdään testauksessa – Tuo joustoa pitkän aikavälin suunnitteluun ottaen kantaa tehtäviin joita ei kannata suunnitella erillisinä. Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Palautteen ajoitus Järjestelmä 1 Järjestelmä 2 Testaus on mekanismi, jolla huomataan jos osa ei toimi. Kuinka saavuttaa nopea palaute? Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
2 – Testaus ohjelmistokehityksen osana Käsiteltävät asiat Testauksen Vmalli Suunnittelua elinkaaressa Testausprosessi Testattavuus ja laatu Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Ohjelmistokehitystoiminnan jäsentäminen Järjestelmän elinkaari Järjestelmäkehityksen elinkaari Hanke Projekti Uuskehitys Jatkokehitys Ylläpito Hankinta Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Kehitys- vs. hankkijaorganisaatio • Kehitysorganisaatio – järjestelmän luominen – toteutus ja testaus • Hankkijaorganisaatio – järjestelmän ostamisen, integroinnin ja/tai käyttöönoton miettiminen • Eroja liiketoimintamallissa: – Tuoteliiketoiminta: myytävä kokonaisuus on tuote – Projektiliiketoiminta: myytävä kokonaisuus on asiakastilausprojekti – Erona: onko hankkijaorganisaatio asiakas (projektiliiketoiminta) vai käyttäjä (tuoteliiketoiminta) Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Ohjelmistokehityksen elinkaarimallit • Ohjelmistokehityksen elinkaarimallit (käytetään myös nimeä ohjelmistoprosessimalli) kuvaavat hankkeen/projektin kehityksen organisointia – Aktiviteetteja ja vaiheita • Oleellisesti kolme hyvin erilaista perusrakennetta: – Vesiputousmalli – ”tarvittava kokonaisuus kerralla vaiheistetussa toteutuksessa” – Iteratiivinen ja inkrementaalinen – ”tarvittava kokonaisuus toteutuserissä” – Ketterä – ”inkrementaalinen muutos- ja ihmiskeskeisin arvoin” Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testausprosessi ja sidosryhmät Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testausprosessi Muokattu: Pol & Van Veenendaal. TMap. Testitapaukset Valmistelu Määrittely Suoritus Lopetus Suunnittelu ja hallinta (projektinäkökulma) Strateginen suunnittelu ja hallinta (elinkaarinäkökulma) Testausstrategia Yleistestaussuunnitelma Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Strateginen suunnittelu ja hallinta • Missio ja strategia • Organisaation yhteinen toimintatapa • Projektin ulkopuolinen testaustoiminta – – – Alustan versioiden hyväksymistestaus Automaatioarkkitehtuurin ylläpito Välinetuki ja hyötyjen arviointi Koulutus Testausprojektin vertailu Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Suunnittelu ja hallinta • Testaussuunnittelu – – Tavoitteet ja laaturiskit Aikatauluraamit Lähestymistapa Resurssointi • Hallinta – – – Seuranta Korjaustoimenpiteet Eskalointi ja ongelmanratkaisu Testauksen laadun arviointi Viestintä sidosryhmille Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Valmistelu • • • Vaatimuskatselmointi Testattavuuskatselmointi Testausvaatimusten tunnistaminen Ympäristöjen valmistelu Aineistojen valmistelu Tiedon kerääminen Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Määrittely • • • Riskien tunnistaminen Testitapausten määrittely Testitapausten priorisointi Testiaineiston määrittely Ympäristöjen pystyttäminen Testien automatisointi Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Suoritus • • • Julkaisut testaukseen Aloitustestit Testiaineistojen alustaminen Testien suoritus Uusintatestaus Uudelleentestaus Testitapausten ja automaation ylläpito Testauksen tulosten kirjaaminen Havaintojen käsittely Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Lopetus • • • Testattavuusyhteenveto Testauksen tulosten yhteenveto Testauksen kokemusten yhteenveto Testauksen materiaalien päivitys ja paketointi Testausryhmän purkaminen Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Suunnitelmaohjattu vs. tutkiva testaus • Suunnitelmaohjatussa testauksessa testitapaukset suunnitellaan ennen testien suoritusta – Skriptaus tuottaa yksityiskohtaisen suunnitelman – Askel-askeleelta prosessi – testausprosessi koostuu vaiheista – ”Mitä testejä pitäisi ajaa? ” • Tutkivassa testauksessa testitapauksia suunnitellaan testejä suoritettaessa – Etukäteen ei voida ennustaa testien yksityiskohtia, jotka riippuvat ohjelmiston tilasta – Usein pohjaa korkeamman tason jäsennykseen – Eteen-taakse prosessi – testausprosessi ei vaiheita, vaan toistettavia tehtäviä – ”Mikä on paras testi, jonka voin suorittaa juuri nyt? ” Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testauslähestymistapojen vastakkainasettelu • Skriptatussa testauksessa testitapaukset suunnitellaan ja dokumentoidaan ensin. Myöhemmissä vaiheissa ne voidaan suorittaa saman tai eri henkilön toimesta. Testit vs. • Tutkivassa testauksessa testit suunnitellaan ja suoritetaan yhtäaikaisesti ja niitä ei yleensä dokumentoida yksityiskohtaisesti. Testi t Ohjelmisto Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Tutkiva vs. valmistelematon testaus • Valmistelematon testaus (ad hoc testing): Testaustoimintaa, jossa virheiden etsiminen on valmistelematonta. Testausta ei suunnitella, tavoite testaamiselle ei ole selvillä, tuloksille ei ole odotuksia ja tekemistä ohjaa satunnaisuus. • Joskus jaetaan suunnattuun ja suuntaamattomaan valmistelemattomaan testaukseen, jossa suunnattu valmistelematon testaus on tutkivaa testausta eikä itse asiassa valmistelematonta. Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Tutkiva testaus prosessina Tutkiva Täydentäjä - Suunniteltujen testien laajentajana Sessio - rajatulla ajalla Ryhmä - rajatulla ryhmällä Suunnitelmaohjattu Projekti - Koko toiminnan prosessina Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Vaihtoehtojen punnitsemista testausprosessia suunnitellessa Soveltuvin prosessimuoto Rytmitys in-synch off-synch päivittäinen kehittäjän tekemä testaus testaajakehittäjäparit työnjakona inkrementaalinen integraatio inkrementaalinen järjestelmätestaus, jossa toteutuserä voi olla projektin sisäinen tai koko projekti tekninen näkökulma käyttäjänäkökulma Tutkivaa testausta Suunnitelmaohjattua testausta Testauksen fokus Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
2 – Testaus ohjelmistokehityksen osana Käsiteltävät asiat Testauksen Vmalli Suunnittelua elinkaaressa Testausprosessi Testattavuus ja laatu Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testattavuuden määritelmä • Testattavuudella tarkoitetaan – kykyä suorittaa kustannustehokasta testausta (Gelperin) – ominaisuuksia jotka vaikuttavat muutetun ohjelmiston varmistamisen työmäärään (ISO 9126) – mahdollisuuksia, jotka muut osapuolet antavat testaaville osapuolille • Testattavuus voi kohdistua: – testattavaan järjestelmään – testauksen pohjana oleviin vaatimuksiin, määrittelyihin ja dokumentaatioon Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Järjestelmän testattavuuden riskitilanne Liiketoimintasuunnittelija Ohjelmistosuunnittelija Testisuunnittelija Ohjelmistokehittäjä Testien kehittäjä Testattava järjestelmä Testausjärjestelmä Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Tavoiteltava testattavuus Liiketoimintasuunnittelija Ohjelmistosuunnittelija Testisuunnittelija Ohjelmistokehittäjä Testien kehittäjä Testattava järjestelmä Testausjärjestelmä Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Järjestelmän testattavuuden keskeisimmät tekijät • Hallinta – Helppo testata – Liittymä, jota kautta käyttö mahdollista – Kyky käyttää järjestelmän osia hallitusti (syötteet, tapahtumien käynnistys, metodikutsut, GUI-elementtien käyttö, rajapinnat, dedikoitu testausliittymä) – Kyky tuottaa syötteitä ja saavuttaa ohjelmiston tiloja. • Näkyvyys – Helppo tulkita tuloksia – Kyky seurata testattavan ohjelmiston tiloja ja syötteistä seuraavia tuloksia. – Virhetilanteen syiden jäljittäminen helppoa, tapahtumien suhteet selvät – Lasilaatikko, jonka sisälle nähdään (tulokset, tilat, ominaisuudet, järjestelmän vuorovaikutus, resurssien käyttö, virheet) Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Järjestelmän testattavuuden muita tekijöitä • Vakaus – Muutosten laajuus ja muutostapahtumien tiheys – Vaikuttaa testien ylläpitotarpeeseen • Yhdenmukaisuus – Samanlaiset osat käyttäytyvät samalla tavalla – Mahdollistaa testien uudelleenkäytön eri osissa • Luotettavuus – Järjestelmä tekee mitä oli tarkoituskin – Testien toistaminen samoissa tilanteissa tuottaa samat tulokset, eli saman tilanteet voidaan saada aikaan • Dokumentaatio – Tieto siitä kuinka järjestelmän piti toimia Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Vaatimus vs. Testausvaatimus Vaatimusten testatattavuus: - Kyky nähdä ja ymmärtää vaatimus konkreettisesti toteutettuna -Kyky mitata vaatimuksen toteutumista Vaatimukset ja testausvaatimukset eivät ole 1: 1 tai varsinkaan samat! Vaatimus Näiden välinen yhteensopivuus on vaatimusten testattavuus Vaatimusten testattavuudesta seuraa pienempi kustannus testausta valmistellessa Testausvaatimus Testitapaus Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Vaatimukset testauksessa Lähde: Kaner, Bach, Pettichord. 2002. Lessons Learned in Software Testing. • Vaatimus on ominaisuus tai asia joka merkitsee jollekulle joka merkitsee • Määritelmä toimii hyvin testaajalle • Osalliset – Eri osapuolilla eri tarpeita – Eivät välttämättä tiedä mitä haluavat – Mitä haluavat muuttuu ajan myötä • Monia muotoja ja lähteitä Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Mistä testaus saa vaatimukset? Lähde: Kaner, Bach, Pettichord. 2002. Lessons Learned in Software Testing. • ”Jos odotat saavasi vaatimukset paperinippuna joka on leimattu yleispätevän totuuden leimalla, etsi toinen työ” – Parhaissa tapauksissa dokumentaatio on epätäydellistä ja moniselitteistä, mutta silti valaisevaa ja avuksi • Kolme keskeistä tapaa saada vaatimuksia – Keskustelu: Puhu jonkun kanssa jolla on merkitystä siitä millä on merkitystä – Päätelmä: Johda vaatimukset siitä mitä tiedät projektista ja tuotteesta – Maininta: Suorat ja epäsuorat määrittelyt Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Käyttäjätoiveet, vaatimukset, määrittelyt ja tekniset määrittelyt Vaatimukset Käyttäjätoiveet Testausvaatimus Testitapausarkkitehtuuri Liiketoimintavaatimus Testausvaatimus Käyttäjävaatimukset Tekniset määrittelyt (vaatimusmäärittely) (arkkitehtuuri, komponentit) Testausvaatimus Testien uudelleenkäyttö eri tasoilla Testitapaus Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Vaatimukset vs. Testausnäkökulma vaatimuksiin Dokumentoimaton ”näin sovittiin suullisesti” ”yleiset pelisäännöt ja kikat” ”tekijät eri mieltä, mutta tekstistä ei huomaa” Dokumentoitu Suora Epäsuora Vaatimusnäkökulma keskittyy tarkkojen vaatimusten dokumentointiin Testaus keskittyy kaikkiin näkökulmiin; toteutus tarvitsee yksinkertaisuutta! Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Laadun ymmärtäminen • Laatua on pyritty jäsentämään laatumalleihin – Mm. ISO 9126 • Laatua pitää tarkastella eri sidosryhmien näkökulmasta – Käyttäjä ja asiakas – Kehitysorganisaatio • Usein haastavimpia asioita on päättää kenellä on oikeastaan väliä. – Testaajan pitäisi tuoda esiin havaitsemiaan riskejä loppullisen laatukokemuksen suhteen. Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Laatuodotukset vs. Laatukokemukset • Odotus – Käyttäjien ja asiakkaiden uskomukset järjestelmän tarjoaman laadun tasosta – Kohtuuttomat odotukset ovat tyypillisesti oire vaatimusten keräämisen, liiketoiminta-analyysin tai muutostenhallintaaktiviteettien epäonnistumisesta – Testaus ei voi suoraan vaikuttaa kohtuuttomiin vaatimuksiin testausprosessissa • Kokemus – Mielipiteet yhdistettynä käyttäjien ja asiakkaiden järjestelmän kanssa saadun kokemuksen myötä syntyneisiin yleisiin tyytyväisyyden ja tyytymättömyyden tasoihin • Odotusten ja kokemusten yhdistäminen tyytyväinen asiakas Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
ISO 9126 -1 laatuominaisuudet Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Erilaisten laatuominaisuuksien painottuminen • Perinteisesti paino toiminnallisuudella • Kasvanut paino käytettävyydellä – Ohjelmistot tulossa yleisemmiksi – Käytettävyys pitää olla sisäänrakennettuna kuten kaikki laatu – Käytettävyys = Käyttöliittymä + toiminnallisuuden logiikka • Kasvanut paino suorituskyvyllä – Erityisesti käyttäjämäärien skaalaamisessa • Tietoturvan paino lisääntymässä – Uusi ”vuosi 2000” onkin ”puskuriylivuoto” Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Laatumalli ei kokonaiskuva • Vertaa lentosimulaattori – Pelitarkoituksiin - oleellista on pelattavuus, hauskuus ja opettavaisuus sellaiselle, joka ei oikeaa konetta ole lentänyt. – Opetussimulaattori - realismi on keskeistä ja simulaattorin pitää hallita erilaiset lentokoneen ohjaajan mahdollisesti kohtaamat tilanteet. • Molemmissa kovat, mutta erilaiset laatuvaatimukset • Miten peilaisit tämän ISO 9126 -jakoon? Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Maailma muuttuu – vaatimukset muuttuvat Ennen Nykyään Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Käyttäjän näkökulma eroaa omastasi • Kaikilla sidosryhmillä on erilaiset näkökulmansa – – – Asiakas Käyttäjä Ohjelmoija Projektipäällikkö Testaaja • Huomaa: virheetön tuote ei välttämättä kelpaa käyttäjälle – – – Käyttäjäskenaariot (käyttötapaukset) pitäisi kelpuuttaa Vaatimukset pitäisi kelpuuttaa Käytettävyystarpeet pitää ottaa huomioon Dokumentaatio pitää testata Asiakaspalautteen prosessin pitää toimia ”Absence of errors fallacy” - Weinberg Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Yhteenveto • Testausprosessia on ajateltava useista näkökulmista: V-malli ja testaustasot, tason sisäinen prosessi, testaus suhteessa sidosryhmiin, elinkaari ja projekti • Testaustasot ja testaustyypit kuvaavat perusrakenteen tarvittaville näkökulmille, mutta eivät kiinnitä tehtävien suoritusjärjestystä • Testattavuus laajentaa testauksen roolia pelkästä vastaanottajasta aktiivisemmaksi toimijaksi Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Linkkejä ja vinkkejä • Kirjoja: – Craig&Jaskiel. • Hyvä perusteos testauksesta. Etenkin V-mallin kuvaus ansiokas. • Artikkeleita: – Pyhäjärvi, M. , & K. Rautiainen "Integrating Testing and Implementation into Development", Engineering Management Journal, June 2004. • Täydentävät jatkokurssit: – Riskiperusteinen testaus • Syventävät jatkokurssit: – – – Testauksen opit vaatimusten määrittelyyn ja hallintaan Tutkiva testaus Tietoturvatestaus Suorituskykytestaus Käytettävyystestaus Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen