TestaajanKommunikoin..
Transcription
TestaajanKommunikoin..
Virheraportointi Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY You Are What You Write • Bugiraportit ovat monen testaajan ensisijainen tuotos • Raporttien lukijat ja käyttäjät muodostavat näkemyksensä testaajasta pääasiassa niiden perusteella – Kehittäjät, managerit, laatuinsinöörit • Kehittäjät ovat riippuvaisia bugiraporttien informaatiosta – Hyvä raportointi auttaa ohjelmoijia työssään, heikot raportit lähinnä tuovat ajanhukkaa – Testaaja joka kirjoittaa heikkoja raportteja menettää uskottavuutensa eikä bugiraportteihin enää reagoida Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 1 VIRHERAPORTOINTI • Tavoiteita: – Toimiva kommunikaatio testaajien ja kehittäjien välillä (joskus itselleen kommunikointia, silti hoidettava järjestelmällisesti) – Näkyvyys etenemiseen • Alussa toiminnallisuuden seuranta, lopussa virheiden seuranta • Virhetrendit oleellisia julkaisupäätöksen tukena • Keinoja: – Virheraportti (bugiraportti) • Testaajan näkemys siitä mikä on tuotteessa on vialla ja mikä on sen merkitys • Laajuus vaihtelee tarpeen mukaan – Virheraporttien hallinta • Muodollisuuden ja järjestelmällisyyden tarve kasvaa hankkeen koon ja osapuolien määrän kasvaessa Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Bugiraportti - miksi? • Miksi – – – – – Virhettä ei ole olemassa jos raporttia ei kirjoiteta Virheen dokumentointi, ei vain muistinvarainen Virhetrendien muodostuminen Testauksen irroittaminen ajasta ja paikasta, joustavuus Testaajan arvokkaan osaamisen välittäminen intressiryhmille • Mitä – Ei spekuloi vian korjaamistavoilla tai vian syillä – Auttaa vian lokalisoinnissa – Motivoi kehittäjiä korjaamaan tärkeät bugit (testaajalla parempi ymmärrys virheiden vakavuudesta kuin kehittäjillä) • Kustannustehokkuus – Hyvän raportin kirjoittamisen työmäärä on yleensä selvästi pienempi vihreen korjauksen työmäärä Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 2 Bugiraportti - mitä sisältää (laaja versio) • • • • Yksiöivä tunniste, raportoija, luontipäivämäärä SUT (ohjelma tai komponentti) Versiointitieto, testikonfiguraatio Raportin tyyppi • • Toistettavuus Vakavuus – Ohjelmointivirhe, suunnitteluvirhe, dokumentointi ei vastaa toimintaa, ehdotus... – Testaajan näkemys virheen vakavuudesta tuotteen käytön tai liiketoiminnan näkökulmasta, virheen seuraus – Ei korjaamisen prioriteetti, vaan käsittelyn prioriteetti • Prioriteetti • Vaikutus asiakkaisiin • Ongelman kuvaus • Avainsanat – Projektipäälikkön / ohjelmoijan tärkeys virheen korjaamiselle – Tekninen tuki täydentää – Ytimekkäästi, yhdellä rivillä Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY ... bugiraportti - mitä sisältää • Ongelman kuvaus ja toistaminen askel askeleelta • • Suositeltu korjaus Vastuu selvittämisestä • Status • Päätös (projektipäälikkö) – Yksityiskohtaien – Projektipäälikkö allokoi – Avoin, suljettu, roskis – Odottaa, varmistettu, ei voida toistaa, korjattu, skeduloitu korjaukseen, lykätty korjausta, tarvitaan lisää tietoa, duplikaatti ... – Päätöstä vastaavan buildin versionumero • Päätöksen testaaja • • Bugiraportin versiohistoria Vapaamuotoiset kommentit – Yleensä sama joka löysi bugin Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 3 Bugiraportin elinkaari • Kun raportti luodaan järjestelmään, se on tilassa open • Kun kehittäjä ottaa raportin käsiteltäväkseen, sen tilaksi tulee assigned • Hyväksytysti korjattu (tai muuten tavoin käsittelystä pois siirretty) bugi siirretään tilaan closed • Alitiloja closed tilalle: fixed, ignored, dublicate, triage, NR... Ohjelmistotestaus -09 Open accept resolve reassign resolve Assigned © Antero Järvi, Tuomas Mäkilä Closed reopen It-laitos / TY Bugiraporttien käyttökohteet • Nostavat esiin vikoja ja auttavat kehittäjiä selvittämään vian syyt • Nostavat esiin ongelmia spesifikaatioissa ja dokumentaatiossa • Antavat yleiskuvan tuotteen valmiusasteesta ja laadusta kehityksen aikana • Toimivat lähtökohtana tuotteen seuraavan version kehitykselle • Taustatietoa käyttäjämanuaalien laatimiseen ja käyttäjäkoulutukseen • Tukevat teknista asiakastukea korjaamattomien bugien ilmentyessä asiakkaalla Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 4 ¬(Bugirapottien käyttö) • Älä käytä bugiraportteja ohjeilmoijien suoriutumisen mittaamiseen – Suuri määrä ohjelmoijalle osoitettuja korjaamattomia bugeja, hidas ohjelmoija ? – Seuraus mittaamisesta: kehittäjät puolustautuvat bugiraportteja vastaan • Design bugi ei ole bugi • Samankaltaiset bugit ovat dublikaatteja • Vaikeasti toistettavia bugeja ei saisi raportoida • Älä käytä bugiraportteja testaajien suoriutumisen mittaamiseen – Testaajien palkitseminen löydettyjen bugien määrällä johtaa väistämättä huonompaan testaukseen, kehittäjien kuormittamiseen turhilla bugeilla ja huonompilaatuiseen bugiraportointiin Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Bugiraportointityökalut, esim. Bugzilla • Käytetyin Open Source projekteissa, vastaavia työkaluja useita • www.bugzilla.org • Hyvästä bugiraportoinnista voi oppia paljon tutkimalla laadukkaiden Open Source hankkeiden raporttikantoja Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 5 Bugitrackerista issuetrackeriksi • Bugitrackeria voi käyttää myös laajemmin ohjelmistotyön tarpeisiin • Trackeriin voi tallentaa tiedot – Vaatimuksista – Työtehtävistä – Jne… • Myös testitapaukset voi kerätä trackeriin – Tapaukset voi kätevästi linkittää vaatimuksiin – Trackerit tarjoavat mekanismit tapausten kategorisointiin – Testitapauslistojen generoiminen on helppoa Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Kehittäjien motivointi • Kaikkia raportoituja bugeja ei koskaan korjata – Aikaa on rajallisesti ja priorisointi tapahtuu viimekädessä kehittäjien toimesta (toimeenpanovalta) – Testaaja voi vaikuttaa merkittävästi siihen mitkä bugit tulevat korjatuiksi • Testaajan on motivoitava kehittäjiä korjaamaan tärkeät bugit (myyntityötä) – Tutki bugi kunnolla ja raportoi selkeästi – Korkea vakavuusluokka – Esitä konkreettisesti mitä haittaa bugista on: miten tuotteen normaali käyttö häiriytyy, miten yleisesti häiriö esiintyy, mitä dataa se korruptoi ... – Tee bugin toistettavuudesta helppoa • Change contorl board, CCB:lle, kirjoitetaan erilaisia bugiraportteja kuin kehittäjille Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 6 Huonon suunnittelun raportointi • Ovatko ohjelman vaikeaselkoisuus, epäjohdonmukaisuus, kapea soveltuvuusalue, yhteentoimimattomuus jonkun sovelluksen kanssa jne. bugeja jotka pitäisi raportoida? • Usein katsotaan että sovelluksen design on tehty ja kiinnitetty aikaisemmassa vaiheessa, eikä testaajilla ole edes osaamista sen arviointiin. • Toisaalta monia asioita on vaikea ja ymmärtää ennen kuin sovellusta pääsee käyttämään, joten on yleistä että vasta testaajilla on mahdollisuus arvioida suunnittelupäätösten seurauksia • Testaajien ammattitaito ei ole suunnattu sovellusten suunnitteluun, mutta ei ole käyttäjienkään, ja testaajat katsovat sovellusta käyttäjien näkökulmasta. Mikä on testaajan mielestä huonoa suunnittelua on sitä myös käyttäjän mielestä. Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Bugit joita ei voi toistaa • ... ohjelma toimii väärin, muttet kykene toistamaan virhettä – Non-Reproducible bug (NR bug) • Monissa yrityksissä NR bugit jätetään käsittelemättä • NR bugit kannattaa silti raportoida, ja tehdä selväksi että kyseessä on NR bugi – Ohjelmoijalle tilanteen syy voi joskus olla helposti pääteltävissä, ja itse virhe löytyä koodista suoraan – Kun NR bugeja kertyy enemmän nähdään niistä yhdessä jokin säännönmukaisuus joka johtaa virheen lähteille • NR bugit ovat oikeasti toistettavia, testaaja ei vain tiedä miten – Viivästetty virheen näkyvyys (muistin ylivuoto, karannut pointteri...) – Bugi näkyy vain ensimmäisellä suorituskerralla asennuksen jälkeen – Bugi voi olla riippuvainen monimutkaisesta muiden tehtävien suoritusjärejestyksestä – Bugi voi olla riippuvainen syötteistä joita ei päästä kontrolloimaan Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 7 Kommunikoinnista kehittäjien kanssa Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Tavoitteena yhteispeli • Kehittäjien (ohjelmoijien) ja testaajien välille syntyy helposti jännitteitä – Ohjelmoijat näkevät testaajat työnsä kritisoijina – Testaajat näkevät ohjelmoijat koodauskoneina joiden tehtävä on reagoida bugiraportteihin välittömästi • Testaaja on kommunikoinnissa aloitteellinen joten vastuu hyvästä yhteispelistä on pääosin testaajalla Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 8 Miten kehittäjä ajattelee • Paras tapa testaajalle oppia miten ja mitä kehittäjä ajattelee on toimia kehittäjän työssä • Yleistyksiä kehittäjien ajattelutavasta – Kehittäjät erikoistuvat johonkin systeemin osaan ymmärtävät vain pinnallisesti muita. Testaaja on koko järjestelmän yleistuntija – Kehittäjät näkevät systeemin malliensa kautta: jäsentävät komponenttien riippuvuuksia, laatua, virheiden leviämistä. Testaaja jäsentää järjestelmää sen toiminnallisuuden kautta. • Bugiraportit testaavat kehittäjien käsitystä systeemistä – Ohjelmointityö on vaativaa ja monimutkaista, joten kehittäjät eivät halua tulla häirityiksi asioilla jotka he kokevat vähemmän tärkeiksi. – Kehittäjät painiskelevat vaikeiden tilanteiden kanssa: epämääräiset ja muuttuvat vaatimukset, bugiset työkalut ja komponentit • Testaajat ja kehittäjät ajattelevat eri tavalla Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Palvele kehittäjiä, rakenna luottamusta • Tee yhteistyötä kehittäjien kanssa alusta asti – Selvitä millaista palautetta kehittäjät tarvitsevat sunnitelmista, design dokumenteista, vaatimuksista – Ole selvillä siitä mitkä ovat kehittäjille vakavia ongelmia ja keskity auttamaan niiden ratkaisemisessa • Tuota palveluja – Testaa kolmannen osapuolen komponentteja jotta kehittäjät voivat tehdä informoidun päätöksen niiden käytöstä – Testaa prototyyppejä, sisäisiä julkaisuja – Rakenna testausympäristöjä kehittäjille omaan testaukseen – Katselmoi vaatimusdokumentteja testattavuuden näkökulmasta Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 9 Raportoi kehittäjiä kunnioittaen • • • • • • Säästä kehittäjien aikaa: raportoi vain oleellinen bugista ja sen oireista, miten se toistetaan. Raportoi siitä mitä havaitset, älä arvaile bugin syitä. Testaaja on ohjelman käytön asiantuntija, ei sen sisäisen rakenteen. NR bugin kyseessä ollessa raportoi miten yritit toistaa virhettä. Yritä kommunikoida että teit työn perinpohjaisesti mutta työssä tarvitaan sisäistä ohjelman tuntemusta ja kehitystyökaluja. Kerro huonot uutiset suoraan, mielellään ensin kehittäjille ja sitten laajemmin. Älä teeskentele että tiedät mitä et tiedä. Raportoi se minkä tiedät varmaksi. Älä liioittele tai vähättele asioita raportoinnissa. Shoot straight! Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY Julkinen vai yksityinen virheraportti? • Julkinen virheraportti näkyy kaikille, myös esimiehille, yksityinen vain toteuttajalle jonka kirjoittamaa koodia testataan. • Julkinen silloin kun – – – – Toteuttaja ei tiedossa tai virheen vaikutusalue usean toteuttajan koodi Virheen syy voi olla monimutkainen Virheraportteja käytetään edistymisen/laadun seurantaan Virhe liittyy julkseen tuoteversioon • Yksityinen raportointi kustannustehokkaampi silloin kun mahdollista – Pienet raportointikustannukset, suoraviivainen korjaus • Jos testaaja tekee liian herkästi julkisia virheraportteja nousee kehittäjien kynnys antaa varhaisia versioita testattavaksi. • Selvät kehittäjien tiedossa olevat pelisäännöt. Ohjelmistotestaus -09 © Antero Järvi, Tuomas Mäkilä It-laitos / TY 10