Luennon 7 kalvot
Transcription
Luennon 7 kalvot
CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET Jussi Kasurinen ([email protected]) Kevät 2015 NOPEA KERTAUS VIIME KERROISTA ERILAISIA T YÖKALUT YYPPEJÄ Millä työkaluilla testausta sitten tehdään? Suurin osa ohjelmistojen testauksesta tehdään täysin samoilla työvälineillä kuin itse ohjelmistokehitys. Poislukien jotkin toimialakohtaiset työvälineet, kuten protokollayhteensopivuuksien tarkastamiseen tarkoitetut testerit. Testaajien tärkeimmät työkalut ovat kehitysympäristö, sekä kommunikointivälineet joilla ilmoittaa havaituista ongelmista eteenpäin. Erilaisia – nimenomaan testausta varten – kehiteltyjä työkaluja: Testausautomaatiotyökalut Vikatietokannat Tyngät (stub), tynkägeneraattorit Analysaattorit, debuggerit Dokumenttipohjat, dokumentointityökalut Testausympäristöjen tukityökalut SWEBOKIN T YÖKALUT Testiympäristöt, testipedit Testigeneraattorit Kaappaus/Toistotyökalut Testioraakkelit/vertailutyökalut Kattavuudenarviointi ja kattavuuden määrittely Jäljittimet Regressiotestaustyökalut Luotettavuuden arvioinnin työvälineet CT60A4150 Ohjelmistotestauksen perusteet TESTAUKSEN SUUNNITTELU JA DOKUMENTOINTI TESTAUKSEN SUUNNITTELUSTA Testaustyöhön liittyy siis kaikenlaista, kuten Työkalut Menetelmät Tehtävät eri työvaiheissa … ja kaikki pitäisi koordinoida yhdessä varsinaisen ohjelmistokehityksen kanssa. SUUNNITTELU JA DOKUMENTOINTI Aiemmassa ”testaus hyvin lyhyesti”-esimerkissä sivuttiin tavallisimpia testaukseen liittyviä asioita: 3 tahoa; esimiehet, testausta tekevät ja kehittäjät. 3 dokumenttia tai tietolähdettä; testaussuunnitelma, testitapaukset ja yhteenveto eli testiraportti. Tutkimustiedon mukaan kaikilla on jonkinlainen yleinen suunnitelma (testausstrategia) ja projektikohtainen suunnitelma (testaussuunnitelma). Lisäksi kaikki seuraa ainakin jotain mittaria, oli se sitten jäljellä oleva aika, raha tai koodinkattavuus tai mikä tahansa. SUUNNITTELU JA DOKUMENTOINTI YLEISESTI Yleisellä tasolla testauksen ohjaamista ja johtamista varten dokumentoidaan seuraavia asioita: Miksi testausta tehdään Miten testausta tehdään projektin eri vaiheissa Kuinka testausta johdetaan Kuka testausta johtaa Millä työvälineillä testaus tapahtuu Kuka tekee testaustyön Miten testausta seurataan ja varmennetaan että kaikki tehtiin oikein Miten toimintaa kehitetään DOKUMENTOINNISTA Kuten ohjelmistotuotannossa yleensä, dokumentoinnilla on merkittävä osuus testauksessa Dokumentteja syntyy paljon Niiden kirjoittamiseen kuluu huomattavan paljon aikaa Dokumenttien ja varsinaisten testien synkronointi voi muodostua ongelmaksi Dokumentoinnin tarkoituksena on saada tieto suunnittelijoiden/testaajien korvien välistä muotoon, jota muutkin voivat käyttää vrt. UML, jolla suunnittelijan korvien välistä viedään tietoa kehittäjille. Osa dokumenteista voi olla myös asiakkaan vaatimia. Kun asiat kirjataan ylös, huomataan yleensä puutteita ja väärinkäsityksiä, lisäksi projektin edetessä dokumentit vanhenee. Dilemma: miten dokumentoida kaikki tarpeelliset asiat, mutta ei mitään turhaa? Miten paljon aikaa dokumenttien hallitsemiseen pitäisi käyttää? DOKUMENTTIEN YLEINEN JÄRJEST YS TESTAUSPOLITIIKAN SISÄLTÖÄ Testauksen tavoitteet, eli yleisesti määrittely mitä testaustoiminnalla oikeasti halutaan saavuttaa ja mitä periaatteita testauksessa tulee noudattaa. Testausorganisaation rakenne, eli kuka tekee testausta, kuka vastaa testauspolitiikan laatimisesta, kenellä on päätösvalta testausta koskevissa asioissa. Testausprosessi, eli lyhyt kuvaus siitä miten testausta tehdään tai kuka päättää prosessin määrittelemisestä. Testaajia koskevat koulutusvaatimukset , eli mitä organisaatio vaatii testausta tekevien ihmisten koulutustaustaksi, ja miten koulutus tai sitä vastaavien tietojen hankkiminen on organisoitu. TESTAUSPOLITIIKAN SISÄLTÖÄ Standardit ja seurattavat määritelmät, eli mitä standardeja tai muita tuotetta tai toimitapoja koskevia määritelmiä testaustyössä pitää noudattaa. Testauksen laadun mittaustapa, eli määritelmä sille, miten testauksen laatu tai kustannustehokkuus mitataan tai todennetaan organisaatiossa. Testauksen kehittämistapa, eli miten organisaatiossa tehdään testauksen toimitapoja kehittävää toimintaa. TESTAUSSTRATEGIA Yleisten riskien hallintaan tarvittavat toimenpiteet ja menetelmät, joilla tiedossa olevia ongelmia tai projektin riskejä voidaan välttää. Aloitusehto testaukselle, eli yleisellä tasolla asettaa raja sille, missä vaiheessa testaus aloitetaan ja millä ehdoilla testattava ohjelman voidaan palauttaa takaisin korjattavaksi. Testausryhmän itsenäisyysaste, eli määrätä se, mistä asioista testausta tekevät henkilöt saavat päättää itse ja missä asioissa heidän mielipiteensä ohittaa esimerkiksi muun organisaation päätösvallan. TESTAUSSTRATEGIA Testausorganisaation rakenne, eli todeta ketkä kaikki kuuluvat testausorganisaatioon ja kuka on kenenkin esimies, erityisesti silloin jos organisaatio poikkeaa siitä, joka on määritelty testauspolitiikassa. Dokumentointimenettely, eli mitä kaikkia dokumentteja testaukseen liittyen tehdään, kuka niitä ylläpitää ja mitä niihin tulisi vähintään merkitä. Testivaiheet, eli mitä kaikkia työvaiheita testauksen aikana tapahtuu. TESTAUSSTRATEGIAN SISÄLTÖÄ Testaustekniikat, eli millaisia testausmenetelmiä testaamisessa tulisi käyttää Testitapausten valinta- ja priorisointikriteerit, eli millä perusteella kaikkien testitapausten joukosta valitaan kaikista tärkeimmät tapaukset, mikäli käy niin että kaikkia suunniteltuja testitapauksia ei ole mahdollista toteuttaa. Kustannustehokkuus tai kokonaishinta tavallisimmat optimoitavat asiat, rajoitteet aika tai raha. Testiympäristö, eli millainen järjestelmä testausta varten rakennetaan, kuka sen rakentaa, kuka sitä ylläpitää ja mitä testaustekniikoita käytetään missäkin järjestelmässä. TESTAUSSTRATEGIAN SISÄLTÖÄ Uudelleentestaus, määritellä ne kriteerit joiden pohjalta aiemmin onnistuneiksi todetut testitapaukset pitää lähettää uudelleentestattavaksi. Testauksen lopetusehdot, eli määritelmä sille millä ehdoilla voidaan todeta, että testattava kokonaisuus toimii oikein, täyttää kaikki vaatimukset ja on valmis käyttöönottoa varten. Suunnitelma poikkeamien hallintaan, eli määritellä menettely, jolla voidaan raportoida ja hoitaa ennalta-arvaamattomia ongelmia. TESTAUSSTRATEGIASTA Testausstrategioita voi olla useita! Esim. “uusi versio päätuotteesta” “Lisätään uusi ominaisuus olemassa olevaan” “Poistetaan vikoja myynnissä olevasta tuotteesta.” “Räätälöinti uudelle asiakkaalle” …jne. Testauspolitiikka on koko organisaatiolle sama. ORGANISAATION TESTAUSTAPOIHIN VAIKUTTAVIA ASIOITA Testaustyötä tekevien ja sitä johtavien henkilöiden tietotaito ja näkemykset nykytilaan Nykyiset tavat tehdä testausta ja niiden toimivuudesta aiemmin kerätty tieto. Organisaatiolle määritellyt tavoitteet, visiot ja missio Tietoturvakäytännöt Projektinhallintakäytännöt Laatuvaatimukset, laatukäytännöt Aiemmat testausstrategiat Aiemmin kerätty palaute tuotteista ja projekteista Aiemmin tuotetut testaussuunnitelmat TESTAUSSUUNNITELMA Päätestaussuunnitelmasta puhutaan kun suunnitelma koskee koko projektia. Vaihe- tai osatestaussuunnitelma koskee yhtä tasoa tai menetelmää. TESTAUSSUUNNITELMAN SISÄLTÄMIÄ ASIOITA Projektin kuvaus. Yleiset tiedot projektista, testausta koskevista päivämääristä sekä tarvittavat yleistiedot siitä mitä projektissa olisi tarkoitus tehdä. Kuvaus testattavasta tuotteesta. Kuvaus siitä mitä projektissa on tarkoitus testata, kuvaus testattavan tuotteen pääkomponenteista ja komponenttien välisistä yhteyksistä. Kuvaus siitä mitä komponentit tekevät, ja mitä koko laitteen itsessään olisi tarkoitus tehdä (tai olla tekemättä) sekä ohjeet siitä, mistä eri komponentteja koskevaa lisätietoa on saatavilla. Testien laajuus. Kuvaus siitä, mitkä osat tuotteesta testataan, sekä lista niistä testausta koskevista rajoitteista tai ongelmista, jotka jo etukäteen tiedetään. TESTAUSSUUNNITELMAN SISÄLTÄMIÄ ASIOITA Käytetty testausstrategia . Testaussuunnitelmassa tulisi joko mainita se, mitä lähestymistapaa käytetään tai määritellä projektia varten testausstrategian mukaisesti kuka, milloin, missä ja miten tuotetta olisi tarkoitus testata . Aikataulu ja työnjako. Aikataulu testaustoiminnalle, sisältäen kaikki asetetut deadline-päivämäärät, sovitut katselmoinnit ja välitavoitteet. Riskikartoitus, toimintasuunnitelma . Jos tuotteeseen liittyy jotain merkittäviä riskejä, tai tuotteelle on olemassa erillinen vaatimusmääritelmä, niin lista niistä asioista, joilla eri vaatimukset on tarkoitus todentaa tai riskit välttää, tulisi liittää mukaan. Tätä suunnitelmaa voidaan jatkossa käyttää pohjana testitapauksia suunnitellessa ja valittaessa. Henkilöstölistaus. Kuvaus siitä, ketä kaikkia testaustiimiin kuuluu, ja kuka vastaa minkäkin osan testaamisesta, ja mitä taustatietoja testaajien pitäisi tietää ennen testaamaan ryhtymistä. TESTAUSSUUNNITELMA, SPACEDIRTMALLI S Scope = Laajuus, eli määritelmä siitä mitä kohteita testataan ja mitä osia ei testata. P People = Ihmiset, eli millaista koulutusta testaajilta vaaditaan, mitkä ovat testaajien vastuut ja millä aikataululla testausta tehdään. A Approach = Lähestymistapa, eli mitä testausmenetelmiä käytetään mihinkin työvaiheeseen. C Criteria = Kriteerit, eli mitkä ovat testauksen aloitus-, lopetus-, keskeytys- ja jatkamiskriteerit. E Environment = Ympäristö, eli millainen testausympäristö testausta varten tulee rakentaa. TESTAUSSUUNNITELMA, SPACEDIRTMALLI D Deliverables = Tuotokset, eli mitä testausprosessi tuottaa kehitysprosessien käyttöön. I Incidentals = Satunnaiset, eli mitä erikoisominaisuuksia tai poikkeuksia testaukseen liittyy, ja kenellä on auktoriteetti muuttaa testaussuunnitelmaa. R Risks = Riskit (riskit ja torjunta) T Tasks = Tehtävät (testauksen tehtävät, jotka kuuluvat testausprosessiin) TESTITAPAUKSET, MISSÄ VIAT OVAT? Uusi koodi: Uusi koodi sisältää todennäköisemmin virheitä kuin aikaisemmin käytetty ja testattu koodi. Uudet ominaisuudet: Osat joihin on lisätty uusia ominaisuuksia voivat olla tehtyjen muutosten vuoksi nyt viallisia. Uusi teknologia: Uuden tai huonosti tunnetun teknologian tuominen ohjelmaan voi aiheuttaa virheitä. Muutettu koodi: Osat joihin on tehty muutoksia, oli ne miten pintapuolisia tahansa, voivat muutosten vuoksi olla rikkoutuneita ja ne pitää testata kuin uusi koodi. TESTITAPAUKSET, MISSÄ VIAT OVAT? Viime hetken korjaukset: Eli ns. ”purkkapatentit” pitää tarkastaa ja mikäli projektilla on edelleen resursseja käytettävänä, poistaa ja korvata hyviä ohjelmointitapoja noudattavalla ratkaisulla. Vältetään teknistä velkaa Ulkopuolelta tuotu koodi: Osat jotka on valmistettu kehitystiimin ulkopuolella voivat toimia eri tavalla kuin alun perin odotettiin ja aiheuttaa ohjelmassa sisäisiä ongelmia. Uusi asiakas tai markkina-alue: Vaikka tuote on edellisellä asiakkaalla tai edellisellä käyttäjäkunnalla toiminut ongelmitta, ei uusi käyttäjäkunta automaattisesti ole samaa mieltä. Uudet työntekijät: Ohjelmointikokemuksen määrä tai kokemus osana ryhmää työskentelemisestä voi johtaa järjestelmänsisäisiin yhteensopivuusongelmiin. TESTITAPAUKSEN LAATIMINEN Mihin osiin järjestelmää testitapaus vaikuttaa. Kuka testitapauksen on suunnitellut. Mistä testitapausta koskien löytyy lisätietoa. Kuka voi päättää testitapauksen muuttamisesta tai hylkäämisestä. Konteksti, miten testitapaus liittyy järjestelmään yleisesti. Tavoite, mitä testitapauksella halutaan tarkastaa ja saavuttaa. Syötteet ja työvaiheet; mitä järjestelmään tulee antaa syötteinä ja miten järjestelmän pitäisi tähän reagoida. TESTITAPAUKSEN LAATIMINEN Lopputulos; miten järjestelmän pitäisi olla muuttunut, mitä tietoja on tallennettu, minne, ja miltä tulostietojen pitäisi näyttää. Ympäristön vaatimukset; millaisessa testausympäristössä testitapaus pitää suorittaa, mitä testausympäristöä testitapauksessa käytetään. Erikoisehdot; jos testitapaukseen liittyy jotain erikoisehtoja kuten esimerkiksi poikkeus - tai virhetilan mallinnusta, mitä ne ovat. Riippuvuudet; mihin testitapauksiin tai mistä testitapauksista tämä testitapaus on riippuvainen. Laatuehdot; millä ehdoilla tapausta voidaan pitää onnistuneena. Rajoitteet; missä tapauksissa tapaus voidaan sivuuttaa mikäli se ei toteudu onnistuneesti, missä tapauksissa tätä testitapausta ei huomioida ongelmaksi. TESTIRAPORTTI Yhteenveto tehdyistä testeistä, eli kootusti tiedot kaikista projektissa käytetyistä testausmenetelmistä projektin kaikissa vaiheissa. Muutokset alkuperäiseen suunnitelmaan, eli mitä kaikkea alkuperäisestä testaussuunnitelmasta jouduttiin muuttamaan, miksi näin tehtiin ja mitä tilalla tehtiin. Testauksen lopetuskriteerit, eli mitkä projektin testauksen lopetuskriteerit olivat, miten testausorganisaatio saavutti kyseiset kriteerit tai vaihtoehtoisesti miksi asetettuja kriteereitä ei saavutettu. Prosessia haitanneet tekijät, eli selitys sille mitkä asiat haittasivat testauksen toteuttamista siten kuten se oli alun perin määritelty, sekä lyhyt selitys miksi ne tekivät niin. Opitut asiat, eli mitä kaikkea organisaation voidaan sanoa oppineen tämän projektin toteutuksesta koskien testaustyötä, testausprosessia tai organisaation tapaa toimia. TESTIRAPORTTI Testausmetriikka, eli mitä kaikkea projektista mitattiin, sekä koko projektin ajalta relevantti mittausdata. Muutokset riskianalyysiin, eli miten riskianalyysi muuttui projektin aikana, mitä uusia riskejä havaittiin ja miten niihin reagoitiin. Testausympäristön tila, eli selvitys siitä mihin tilaan käytetty testiympäristö jäi, miten ympäristö toimi projektin aikana. TESTIRAPORTTI Testauksen lopputuotteet, eli mitä kaikkea testauksen toimenpiteillä tuotettiin, ja mistä ne ovat saatavilla. Uudelleenkäytettävät komponentit, eli lista kaikista niistä osista tai toiminnoista kuten testausautomaation sovelluksista, joita projektin tuottamasta testausmateriaalista voidaan käyttää muissa projekteissa. Suositukset muutoksille, eli kootusti lista kaikista asioista, joita nykyisestä toimintatavasta pitäisi muuttaa paremman testaustoiminnan mahdollistamiseksi. TESTAUKSEN DOKUMENTIT: CASE ISO/IEC 29110 Organizational Test Documentation Test Management Documentation Dynamic Test Documentation Test Completion Documents DOKUM E NTTI EN VÄ LI SET Y H T E YDE T, I SO/ I E C 2 91 1 9 - MALLI Organisaation dokumentit Test Policy Organizational Test Strategy Organizational Test Strategy Testauksen johdon dokumentit Test Plan (Sub-process) Organizational Test Strategy Test Plan (Project) Test Plan (Sub-process) Test Plan (Sub-process) D O K U M E N T T I E N V Ä L I S E T Y H T E Y D E T, I S O / I E C 2 91 1 9 - M A L L I Testauksen johdon dokumentit Testauksen tekemisen dokumentit Test Plan (Sub-process) Test Specification Test Environment Req. Test Data Requirement Test Env. Readiness Rep. Test Data Readiness rep. Perform dynamic Test Incident Report Test Execution Documentation Test Status Report D O K U M E N T T I E N V Ä L I S E T Y H T E Y D E T, I S O / I E C 2 91 1 9 - M A L L I Testauksen tekemisen dokumentit Test Status Report Testauksen hallinnan ja raportoinnin dokumentit Test Completion Report (subprocess) Test Completion Report (subprocess) Test Completion Report (project) KONSEPTIEN VÄLISET YHTEYDET, ISO/IEC 29119 MALLI KONSEPTIEN VÄLISET YHTEYDET, ISO/IEC 29119 MALLI ESIMERKKEJÄ DOKUMENTEISTÄ Katsotaan muutamia erilaisia perusdokumenttityyppejä ISO/IEC 29119 templaatit http://qtp.blogspot.fi/2009/06/softwaretesting-documentation.html --> erilaisia virallisia tai epävirallisia templaatteja DOKUMENTOINNISTA Tietysti käytetyt dokumentit pitää valita projektin koon ja käyttötarpeen mukaan. Tarpeeton dokumentti ei ole kuin hidaste. Virheellisestä tiedosta on enemmän haittaa kuin puuttuvasta dokumentista. ”Jos dokumentointikäytännöt on hidaste, ne ovat ensimmäinen asia joka tiukan paikan tullen hylätään.” … ja niiden dokumenttien piti auttaa vikojen jäljittämisessä ja laadunvarmennuksessa? MITÄ TÄSTÄ LUENNOSTA PITÄÄ MUISTAA? Päädokumentit Testisuunnitelma Testitapaukset Testausstrategia Dokumenttien yleinen malli