CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET Jussi Kasurinen (etu.suku@lut.fi) Kevät 2015
EDELLISELLÄ KERRALLA TAPAHTUNUTTA Täydellinen testaus on mahdotonta. Testataan, koska virheiden löytyminen ajoissa säästää rahaa. Tehdäänkö oikeaa tuotetta? Tehdäänkö tuotte oikein?
UUTTA! Facebook-ryhmä jossa voi kysellä juttuja tai jättää kommentteja: https://www.facebook.com/groups/1539146573006726/ Vastaillaan sitä mukaa kun ennätetään, myös muut kuin laitoksen väki saa vastailla ja kommentoida mikäli tietää vastauksen.
TESTAUS JA OHJELMISTOTUOTANTO CT60A4150 Ohjelmistotestauksen perusteet
JOHDANTO Ohjelmistotuotannolla tarkoitetaan asiakkaan kohtuulliset odotukset täyttävän tietokoneohjelman tuottamista siten, että kehityskustannukset ja aikataulu on ennustettavissa riittävällä tarkkuudella. (Haikala & Mikkonen) Myös järkevien insinööritaidon periaatteiden määrittelyä ja käyttöä tavoitteena aikaansaada kustannustehokkaasti ohjelmia jotka ovat luotettavia ja jotka toimivat tehokkaasti oikeissa käyttöympäristöissään. (Naur & Randell)
OHJELMISTOTUOTANTO Eli siis ohjelmistotuotanto vastaa kaikista työvaiheista ensimmäisestä ideasta tuotteen valmistumiseen. ja mikäli puhutaan ohjelmiston elinkaaresta, myös valmistumisesta ylläpidon kautta alasajoon. Vesiputousmalli ja Scrum tavallisimpia esimerkkejä ohjelmistotuotannon malleista:
VESIPUTOUSMALLI
VESIPUTOUSMALLI
HUOMIOITA JA LUKUJA OHJELMISTOKEHIT YKSESTÄ Ylläpito ja alasajo unohdetaan melkein aina, vaikka ylläpidon lopettaminen keskeinen asia budjettisuunnittelussa. Karkeasti koko elinkaaren aikana: 1e suunnitteluun 10e tekemiseen ja tarkastamiseen 100e ylläpitoon (sisältää tosin ylläpidonaikaisen kehityksen) 20% osista sisältää 80% ongelmista. 90% ajasta käytetään 10% rakentamiseen.
SCRUM-MALLI
SCRUM-MALLI
OHJELMISTOTUOTANTO Elinkaaren vaiheet yleisellä tasolla: Suunnittelu, tehdään konsepti Määrittely, miten idea muutetaan tuotteeksi Rakentaminen, tehdään tuote Tarkastaminen (Testaaminen), katsotaan että kaikki toimii oikein. Toimittaminen, laitetaan tuote myyntiin. Ylläpito, päivitetään ja mahdollisesti jatkokehitetään tuotetta. Alasajo, hankkiudutaan hiljalleen eroon tuotteesta jota ei enää kannata ylläpitää tai jatkokehittää.
OHJELMISTON SUUNNITTELU, 4+1- MALLISTA Class diagram, Communication diagram, sequence diagram, state machine diagram, object diagram. Logical View Component diagram, package diagram. Development View Object model; what components will be made, how will they behave. Concurrency, synchronized aspects. Process View Use case diagrams Use-Case View / Scenarios How system interacts with the world and systems around it. Organization of the assets during the development work. (Which belongs to what) How software and hardware are related; what system looks like when finished. Physical View Activity diagram, timing diagram. Deployment diagram
LUOKKAKAAVIOT
KÄY TTÖTAPAUKSET
SEKVENSSIKAAVIO
AKTIVITEETTIKAAVIO
TOTEUTUSKAAVIO
OHJELMISTON SUUNNITTELU, 4+1- MALLISTA Class diagram, Communication diagram, sequence diagram, state machine diagram, object diagram. Logical View Component diagram, package diagram. Development View Object model; what components will be made, how will they behave. Concurrency, synchronized aspects. Process View Use case diagrams Use-Case View / Scenarios How system interacts with the world and systems around it. Organization of the assets during the development work. (Which belongs to what) How software and hardware are related; what system looks like when finished. Physical View Activity diagram, timing diagram. Deployment diagram
OHJELMISTO
OHJELMISTOTESTAUS OK, no mitä ohjelmistotestaus sitten on? Kaikki, mitä tehdään sen eteen että tuote olisi Oikein suunniteltu Oikein rakennettu Täyttäisi sille asetetut tavoitteet
MITÄ ON TESTAUS? Ohjelmistoprosessi Määrittely Suunnittelu Toteutus Testaus Ylläpito
MITÄ ON TESTAUS? Määrittely Perinteinen mielikuva: Ohjelmistoprosessi Suunnittelu Toteutus Testaus aloitetaan jossain täällämain Varsinaisesti testaus on tuo vaihe tuossa Testaus Ylläpito Testaus on lopetettu tässä vaiheessa
MITÄ ON TESTAUS? Määrittely Perinteinen Oikeasti testaustoiminta mielikuva: Suunnittelu Ohjelmistoprosessi On kaikki toimenpiteet alkaen määrittelystä päättyen tuotteen lopettamiseen, joilla vaikutetaan lopputuotteen laatuun. Toteutus Testaus Testausta varten määritellään mitä, missä, kuka, miksi, miten ja millä välineillä, organisaation ja projektien tasolla. Eli kaikki mitä tälle välille mahtuu Ylläpito
TERMIEN TARKOITUKSIA Esitestaus (pre-testing): Testaustyö, joka tehdään tuotteen osalle joka ei päädy lopulliseen versioon tai jonka tuloksia käytetään varsinaisen tuote- ja projektisuunnittelun apuna. Staattinen testaus (static testing): testaustyö, jossa testattavaa ohjelmistoa arvioidaan ilman että sitä suoritetaan. Esimerkiksi katselmoinnit ja kompleksisuuslaskelmat. Dynaaminen testaus (dynamic testing): testaustyö, jossa testattava ohjelmisto suoritetaan ja sen käyttäytymistä arvioidaan.
VERIFIOINTI, VALIDOINTI JA TESTAUS Verifiointi, todentaminen Validointi, kelpuutus Staattinen testaus Dynaaminen testaus Staattinen testaus Dynaaminen testaus Verifiointi (kirjakielessä todentaminen) == tuote on tehty oikein Validointi (kirjakielessä kelpuutus) == on tehty oikea tuote
TERMIEN TARKOITUKSISTA Laadunvarmistus (Quality Assurance): Kaikki mitä tehdään sen eteen että tuotteen laatu saadaan pysymään korkealla. Laadunvalvonta (Quality Control): Työ, jossa tehdään laadunvarmistusta. Testaus (Testing): Englanninkielisessä ammattikirjallisuudessa tarkoittaa monesti mekaanista työtä jolla ohjelman rakenne verifioidaan. Suomeksi, ja monesti ei-amerikkalaisessa kirjallisuudessa laadunvarmistuksen synonyymi mekaanisen testaustyön lisäksi. V&V, eli verifiointi ja validointi: toinen yleisnimi työlle, jolla valvotaan että tuote vastaa suunnitelmia ja että suunniteltu järjestelmä ratkaisee sen ongelman mitä siltä halutaan.
VIKA, VIRHE, HÄIRIÖ, BUGI Rakkaalla lapsella on monta nimeä. Virhe tai erehdys: Ihmisen toiminnan tuottama vika ohjelmistossa. Vika tai bugi: Ohjelmistosta tai dokumentaatiosta löytyvä poikkeama, jonka takia ohjelmisto ei toimi oikein joutuen häiriötilaan. Näiden etsiminen on se ohjelmistotestauksen *juttu*. Häiriö: Tila, jossa ohjelma ei toimi niin kuin sen pitäisi. Syy häiriöön voi olla bugi, virhe, käytetty laitteisto, viallinen mittari, sähkökenttä, magneettikenttä, Pohjois-Korea, huonepöly, Saturnuksen asento
OHJELMISTOTESTAUS
TESTAUSTASOT Testaustasot tarkoittavat sitä kokoluokkaa, missä ohjelmistoa testataan. Yksi moduuli Moduulien yhdistäminen Koko järjestelmä Koko järjestelmä ja oikea käyttöympäristö Tästä lisää ensi viikolla
TESTAUKSEN V-MALLI
TESTAUSMENETELMÄT Testausmenetelmät kuvaavat erilaisia tapoja tehdä testaustyötä. Musta laatikko Lasilaatikko Automaatiotestaus Tutkiva testaus Rasitustestaus Tietoturvatestaus Alfa- ja Beta-testaus Mallipohjainen testaus
OHJELMISTOTESTAUS
TESTAUKSEN MITTARIT Mittarit on työvälineitä joiden avulla voidaan arvioida sitä, miten projekti etenee ja/tai sitä miten paljon työtä on vielä tekemättä: Raakadatamittarit Työnsuunnitteluun perustuvat Projektin tilaan perustuvat Kattavuuteen perustuvat Tuloksiin liittyvät mittarit Luotettavuuteen ja tehokkuuteen perustuvat mittarit Esimerkiksi: Miten suuren %-osuuden kaikesta ohjelman lähdekoodista nykyiset testitapaukset suorittavat ainakin kerran?
TESTAUSPROSESSI Miten testausta Suunnitellaan? Tehdään? Määritellään? Kuka, miten, missä, millä, miksi, milloin? Miten organisaatiot tekevät ohjelmistotestausta? Mitä voimme oppia muiden virheistä? Entä omistamme? Mitkä on ohjelmistotestauksen best practicet? Esimerkiksi Kanerin 293 ohjetta ohjelmistotestaukseen.
TESTAUST YÖKALUT Millaisilla työvälineillä organisaatio tekee testausta? Mihin työvaiheeseen käytetään mitäkin? Mihin tieto tallennetaan ja mistä sitä löytyy? Miten työ organisoidaan? Miten esimerkiksi automaatiotestien caset määritellään? Kuinka testaan käyttöliittymän toimivuutta kun meillä ei ole mitään käyntiin lähtevää?
OHJELMISTOTUOTANTO JA OHJELMISTOTESTAUS Ohjelmistotuotannon prosessi Suunnittelu Määrittely Toteutus Tarkastus Käyttöönotto Ohjelmistotestauksen prosessi Esitestaus Testauksen suunnittelu, testattavuuden arviointi Testaus eri tasoissa, regressiotestaus Käyttöönotto / hyväksymistestaus / Betatestaus Hotfixien, laajennusten testaus
OHJELMISTOTUOTANTO JA OHJELMISTOTESTAUS Ohjelmistotuotannon prosessi Suunnittelu Määrittely Toteutus Tarkastus Käyttöönotto Ohjelmistotestauksen prosessi Esitestaus Testauksen suunnittelu, testattavuuden arviointi Testaus eri tasoissa, regressiotestaus Käyttöönotto / hyväksymistestaus / Betatestaus Hotfixien, laajennusten testaus
TESTAUS HYVIN LYHYESTI Miten normaali testaajan arki ohjelmistoprojektissa sitten rullaa? Käytännössä testauksessa on aina kolme tahoa: Testauksesta vastaava esimies (projektipäällikkö, testipäällikkö tjs.) Testaaja Kehittäjät Lisäksi testauksessa on aina kolme asiakokonaisuutta: Testaussuunnitelma (miten testataan) Testitapaukset (asiat joita pitää kokeilla) Testiraportti (yhteenveto siitä miten asiat sujui sekä siitä mitä tehtiin.)
TESTAUS HYVIN LYHYESTI 1. Testipäällikkö, kehittäjät ja testaajat luovat testaussuunnitelman ja ensimmäiset testitapaukset teknisten suunnitelmien pohjalta jotta työt päästään aloittamaan. 2. Kehittäjät toteuttavat järjestelmään komponentteja, sekä tekevät niiden yksikkötestauksen. 3. Testaajat ja kehittäjät suunnittelevat järjestelmään täydentäviä testitapauksia sen pohjalta miten tuote lähtee toteutumaan. 4. Testaajat kokeilevat komponentteja tehdyillä testitapauksilla, ja jos jokin ei toimi, kirjoittavat niistä ilmoituksen kehittäjille. 5. Kehittäjät ottavat saadut ilmoitukset työn alle ja korjaavat viat kriittisimmistä ja riskialttiimmista aloittaen. 6. Kehittäjät tuottavat samaan aikaan lisää uusia komponentteja. 7. Sitä mukaa kun komponentteja valmistuu, niitä liitetään projektiin samalla integrointitestausta tehden. Jos jokin ei toimi, siitä tehdään uusi testitapaus.
TESTAUS HYVIN LYHYESTI 8. Kun kaikki komponentit on tehty ja integroitu, siirrytään testaamaan järjestelmää kokonaisuutena. Jos vikoja löytyy, siitä tehdään testitapauksia jatkoa varten. 9. Kun kaikki merkittävät viat on korjattu, siirrytään hyväksymistestaukseen. 10. Jos hyväksymistestauksessa löytyy ongelmia, niistä tehdään testitapaukset ja ne korjataan. 11. Kun asiakas, hyväksyjä tai vastaanottaja on tyytyväinen järjestelmään, se on valmistunut. 12. Laaditaan loppuraportti; dokumentit, lähdekoodi ja muut osat talletetaan ylläpitoa, korjauksia sekä jatkoprojekteja varten. 13. Jos tuotteeseen tehdään päivityksiä, lisäyksiä tai korjauksia, tapahtuu samat asiat mutta pienemmässä mittakaavassa; alkuperäiset testitapaukset säilytetään osana regressiotestejä.
MITÄ TÄSTÄ LUENNOSTA PITÄÄ MUISTAA? Ohjelmistoja voidaan tuottaa eri tavoilla; testauksen menetelmät samoja eri prosessimallien välillä. Testaus ei käytännössä ole pelkästään mekaaninen vaihe kehitystyön yhteydessä, vaikka termi teoriassa sitä tarkoittaisikin. Puhuttaessa testauksesta puhutaan yleisemmin laadunvarmennuksesta ja ylipäänsä suunnitteluvirheiden tapahtumisen estämisestä. Verifiointi (kirjakielessä todentaminen) == tuote on tehty oikein Validointi (kirjakielessä kelpuutus) == on tehty oikea tuote Mitä tästä kurssista pitää muistaa? :: Jos ei muuta, niin TESTAUS HYVIN LYHYESTI kalvot.
ENSI KERRALLA Testaustasot Harjoituksissa tehtäviä liittyen yksikkötasolla testaamiseen ja testaamisen tekemiseen yleisesti. Harjoitusryhmät Tiistai klo 12-14 luokka 4405 Keskiviikko klo 12-14 luokka 4405 Ei erillistä ilmoittautumista, sama sisältö molemmissa ryhmissä.