1 / 71

Testaus ohjelmistokehityksen osana

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/. Tiedoksi lukijalle. Tämä materiaali on edelleen työn alla

ernie
Download Presentation

Testaus ohjelmistokehityksen osana

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Testaus ohjelmistokehityksen osana Maaret Pyhäjärvi ja Erkki Pöyhönen Julkaisuversio 1.0 2005-01-06 tekijä mainittavahttp://creativecommons.org/licenses/by/1.0/fi/

  2. 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

  3. 2 – Testaus ohjelmistokehityksen osana Tehokas ohjelmistotestaus Testaustekniikat Testaus ohjelmisto-kehityksen osana Testauksen suunnittelu ja hallinta Virheraportointi ja virheasian ajaminen Testausvälineet ja testauksen automatisointi Katselmoinnit testaustoimintana Testausprosessin muuttaminen Testitapaukset ja testien suorittaminen

  4. 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

  5. Käsiteltävät asiat Testauksen V-malli Suunnittelua elinkaaressa Testaus-prosessi Testattavuus ja laatu 2 – Testaus ohjelmistokehityksen osana

  6. Käsiteltävät asiat V-malli ja testaustyypit Suunnittelua elinkaaressa Testaus-prosessi Testattavuus ja laatu 2 – Testaus ohjelmistokehityksen osana

  7. 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.

  8. V-malli – testauksen tasot Vaatimukset Hyväksymis-testaus Määrittely Järjestelmä-testaus Tekninen suunnittelu Integrointi-testaus Ohjelmointi Yksikkö-testaus

  9. Tyypilliset testauksen tasot [Craig&Jaskiel 2002]

  10. Testaustasojen tyypilliset merkitykset Tyypillinen organisointi kokonaisuus Hyväksymistestaus Asiakas/käyttäjä Testauksen kohteena olevan kokoonpanon laajuus Järjestelmätestaus Testaaja Integrointitestaus Toteuttajat yhdessä Yksikkötestaus Kukin toteuttaja osa Ympäristöjen edustavuus osa kaikki

  11. 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

  12. 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

  13. 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

  14. 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

  15. V-malli – testauksen tasot Vaatimukset Hyväksymis-testaus Määrittely Järjestelmä-testaus Tekninen suunnittelu Integrointi-testaus Ohjelmointi Yksikkö-testaus Testien ajaminen ja korjaustyö Testien suunnittelu

  16. V-mallin ydin • Pienempien osien testaaminen ennen järjestelmään liittämistä on hyvä lähestymistapa. • Testaukselle on useita eri näkökulmia. • Testaus voi alkaa suunnittelulla heti kun korkeimman tason vaatimukset on tunnistettu.

  17. 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

  18. 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ä”

  19. 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 tasa-arvoisia. 80 % vältettävissä olevasta korjaustyöstä tulee 20 %:sta koodia.

  20. Käsiteltävät asiat Testauksen V-malli Suunnitteluaelinkaaressa Testaus-prosessi Testattavuus ja laatu 2 – Testaus ohjelmistokehityksen osana

  21. Testauksen suunnittelu • Organisaation odotukset testaustoiminnalle • Laatupainotukset sovellusalueella Testauksen missio ja korkean tason tavoitteet Testausstrategia • Järjestelmä / tuote / palvelukohtainen • Useita projekteja saman järjestelmän elinkaaressa Yleistestaussuunnitelma • Projektikohtainen • Projektin lähestymistapa, strategian räätälöinti Testaussuunnitelma • Tarkentavat suunnitelmat ryhmittäin Testitapaukset • Testauksen yksityiskohdat

  22. Testauksen tilannemalli Muokattu [Kaner et al. 2002]

  23. 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.

  24. Annetut tarkemmin • Testausympäristöt ja välineet • Testausympäristöt • Testikirjasto • Testiaineistot • Testausvälineet • Havaintojen seurantajärjestelmä • Toimistotilat • Missio • Testauksen sidosryhmät • Odotukset • Tavoitteet • Vaatimukset • Laatu-aika-ominaisuuspainotukset • Järjestelmän riskit • Laatuominaisuuksien painotukset • Järjestelmän tavoitteet (ratkaistava ongelma) • Järjestelmänsidosryhmät • Vaatimusdokumentaatio • Epäsuorien vaatimusten viestintä • Kehitys ja integrointi • Sovellusarkkitehtuuri ja -rakenteet • Projektin elinkaarimalli ja rytmitys • Projektinhallinta • Kokoonpanonhallinta • Julkaisunhallinta • Virheiden estäminen • Kehitysryhmä • Testausryhmä • Resurssointi • Osaaminen • Johtaminen • Työn jakaminen • Motivaatio

  25. Valinnat • Lähestymistapa - Kokoelma ajatuksia, jotka ohjaavat testien ja testauksen suunnittelua. • Käytännöt - Kokoelma ajatuksia, jotka ohjaavat voimavarojen kohdistamista lähestymistapaa toteutettaessa.

  26. Testauskäsitteiden kohteita

  27. 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 ei-toiminnallisiin

  28. Toiminnallisuustestaus (functionality testing, feature testing) Yhtäaikaisuustestaus (concurrency testing) Asennustestaus (installation testing) Alustatestaus (platform testing) Aloitustestaus (build verification testing, smoke testing) Konfiguraatiotestaus (configuration testing) Yhteensopivuustestaus (compatibility testing) Rinnakkaistestaus (end-to-end testing) Rajapintatestaus (interface testing) Poikkeustilannetestaus (recovery testing) Lokalisointitestaus (localization testing) Dokumentaation testaus (documentation testing) Aineiston laadun testaus (data quality testing) Alfatestaus (alpha testing) Betatestaus (beta testing) Muuntotestaus (conversion testing) Tuotantotestaus (production testing, operational testing) Standardien testaus (standards testing) Toiminnallisen testauksen testaustyyppejä

  29. Luotettavuustestaus (reliability testing) Suorituskykytestaus (performance testing) 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 (usability testing) Esteettömyystestaus (accessibility testing) Palautettavuustestaus (recoverability testing) Tuettavuustestaus (supportability testing) Ylläpidettävyystestaus (maintainability testing) Siirrettävyystestaus (portability testing) Koodin laadun testaus (code quality testing) Ei-toiminnallisen testauksen testaustyyppejä

  30. Tasot, vaiheet ja tyypit Hyväksymistestaus Järjestelmätestaus Integrointitestaus uusinta Yksikkötestaus uusinta

  31. 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

  32. Testausaktiviteettien rytmitys (2/2) • Joissain asioissa ajoissa valmistelu ja suunnittelu voi olla liian ajoissa • Muutos mitätöi suunnitelman • Muutoksen aiheuttama lisätyö luo haluttomuutta muuttaa testauksen suuntaa • Tavoitteena oikea-aikainen suunnittelu: Tee testauksen suunnittelu juuri ajoissa ilman, että hukkaat aikaisen työn avainhyödyt.

  33. 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ä.

  34. Palautteen ajoitus Järjestelmä 1 Järjestelmä 2 Testaus on mekanismi, jolla huomataan jos osa ei toimi. Kuinka saavuttaa nopea palaute?

  35. Käsiteltävät asiat Testauksen V-malli Suunnittelua elinkaaressa Testaus-prosessi Testattavuus ja laatu 2 – Testaus ohjelmistokehityksen osana

  36. Ohjelmistokehitystoiminnan jäsentäminen Järjestelmän elinkaari Järjestelmäkehityksen elinkaari Hanke Projekti Uuskehitys Jatkokehitys Ylläpito Hankinta

  37. 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)

  38. 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”

  39. Testausprosessi ja sidosryhmät

  40. 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) Yleistestaussuunnitelma Testausstrategia

  41. 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

  42. Suunnittelu ja hallinta • Testaussuunnittelu • Tavoitteet ja laaturiskit • Aikatauluraamit • Lähestymistapa • Resurssointi • Hallinta • Seuranta • Korjaustoimenpiteet • Eskalointi ja ongelmanratkaisu • Testauksen laadun arviointi • Viestintä sidosryhmille

  43. Valmistelu • Vaatimuskatselmointi • Testattavuuskatselmointi • Testausvaatimusten tunnistaminen • Ympäristöjen valmistelu • Aineistojen valmistelu • Tiedon kerääminen

  44. Määrittely • Riskien tunnistaminen • Testitapausten määrittely • Testitapausten priorisointi • Testiaineiston määrittely • Ympäristöjen pystyttäminen • Testien automatisointi

  45. Suoritus • Julkaisut testaukseen • Aloitustestit • Testiaineistojen alustaminen • Testien suoritus • Uusintatestaus • Uudelleentestaus • Testitapausten ja automaation ylläpito • Testauksen tulosten kirjaaminen • Havaintojen käsittely

  46. Lopetus • Testattavuusyhteenveto • Testauksen tulosten yhteenveto • Testauksen kokemusten yhteenveto • Testauksen materiaalien päivitys ja paketointi • Testausryhmän purkaminen

  47. 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?”

  48. Testauslähestymistapojen vastakkainasettelu • Skriptatussa testauksessa testitapaukset suunnitellaan ja dokumentoidaan ensin. Myöhemmissä vaiheissa ne voidaan suorittaa saman tai eri henkilön toimesta. vs. • Tutkivassa testauksessa testit suunnitellaan ja suoritetaan yhtäaikaisesti ja niitä ei yleensä dokumentoida yksityiskohtaisesti. Testit Testit Ohjelmisto

  49. 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.

  50. Tutkiva testaus prosessina Tutkiva Täydentäjä - Suunnitel-tujen testien laajentajana Sessio - rajatulla ajalla Ryhmä - rajatulla ryhmällä Projekti - Koko toiminnan prosessina Suunnitelmaohjattu

More Related