CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET Jussi Kasurinen (etu.suku@lut.fi) Kevät 2016
VIIME KERRALLA
MENETELMIÄ Musta laatikko Valkea laatikko Harmaa laatikko Regressio Automaatio Rasitus (kuormitus) Prototyypit Käytettävyystestaus A/B Raja-arvoanalyysit Tutkiva testaaminen Ad Hoc, Savutestit Mallipohjainen testaus Suorituskyky
TESTAUKSEN TYÖKALUT CT60A4150 Ohjelmistotestauksen perusteet
T YÖKALUISTA YLEISESTI Kuten 1. luennolla sanottiin, tällä kurssilla keskitytään puhumaan testauksen organisoinnista ja yleisestä tekemisestä. Työkalut, menetelmät, tavat vaihtelee yritysten välillä. Ei järkevää esim. alkaa käymään jotain Bugzillatyökalun asentamista ja lomakkeiden täyttämistä luennoilla läpi. Lisätietoa työkaluista prujussa.
RE: TESTAUKSEN TYÖKALUISTA (OTANTA 31 YRIT YSTÄ) Testitapausten hallinta 15 Yksikkötestaus 12 Testausautomaatio 9 Suorituskykytestaus 8 Virhetietokanta Testauksen suunnittelu 7 7 Laadunvalvonta 6 Muut 10
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
ERILAISIA T YÖKALUT YYPPEJÄ Katsotaan mitä esimerkiksi TMMi-malli sanoo erilaisista testaustyökaluista. Sivu 71 Tai vaikka SWEBOK, jonka mallissa työkaluistakin mainitaan. Sivut 13-14
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
T YÖKALUT YYPPEJÄ Unohtamatta testauksen hallinnan välineitä: Projektinhallintatyökalut/ Laadunvalvontatyökalut Katselmoinnit, arvioinnit, tarkastukset Tiketti-järjestelmät Viestintävälineet
KEHITYSYMPÄRISTÖ TESTAUKSEN TYÖKALUNA Kehitysympäristöllä tarkoitetaan siis samaa työkalua, kuin millä itse ohjelman kehitys on tehty. Esimerkiksi vaikkapa Eclipse, Visual Studio tai Netbeans. Miksei tietysti IDLEkin. Esimerkiksi yksikkötestaus ja staattinen testaus (katselmoinnit, arvioinnit) tehdään monesti työvälineillä jotka ovat täysin samoja kuin ne, joilla kehittäjät tekevät itse komponentteja. Esimerkiksi xunit, joka on tavallinen yksikkötestauksen ohjelmistokehys. xunit-kehys noudattaa aina samaa rakenteellista kaavaa, ja se on saataville useimmille kaupallisessa käytössä oleville ohjelmointikielille. Tavalliset editoritoiminnot; syntaksin täydennys, väritykset, muotoilut jne. oikeasti vähentävät virheitä.
TESTAUSAUTOMAATIO Testausautomaation työkalut ovat monissa organisaatioissa täysin itse rakennettuja testaustyökaluja. Joissain kehitysympäristöissä tulee mukana jonkin tarkkuustason automaatiota yksikkötestien ajamiseen. Testausautomaatio jossa käytetään nauhoitettuja toimintoja on tähän normaalisti olemassa erilliset nauhoitus- ja toistotyökalut. Jos rahaa, HP, IBM Rational ja Microsoft tarjoavat omia ratkaisujaan; Myös avoimen lähdekoodin FitNesse tai Robot Framework
TIETOKANTAT YÖKALUT Vikatietokanta on paikka, jonne jokainen kehittäjä, koekäyttäjä tai testaaja voi raportoida löytämänsä virheet. Tästä tietokannasta tiedot voidaan kerätä talteen testauksen etenemisen seuraamista varten tai suunniteltaessa seuraavaan ohjelmistoversioon tehtäviä korjauksia. Mittarit, ohjaamiseen tarvittavat tukitiedot Ticket-pohjainen tehtävänjako myös tavallinen ominaisuus. Esimerkkityökaluja: Mantis Bug Tracker Esimerkkidemo https://www.mantisbt.org/bugs/my_view_page.php Bugzilla Launchpad
ANALYSAATTORIT Yleisnimi erilaisille työvälineille, joilla voidaan seurata mitä ohjelma ja sen käyttöympäristö tarkalleen tekee. Tai valvoa että ohjelmointikäytäntöjä on noudatettu, tai että järjestelmään ei yritetä lisätä kommentoimatonta koodia. Tai analysoida lähdekoodin kompleksisuusastetta, testitapausten kattavuutta, rinnakkaisten prosessien deadlockeja, käsin hallitun muistinvarauksen toimivuutta
TESTIPEDIT, TESTAUSYMPÄRISTÖT, EMULAATTORIT Ohjelmia ei testata käyttöympäristössä. Ympäristö, joka simuloi käyttöympäristöä tai emuloi rautaa johon ohjelma tarkoitus laittaa. Tavallisesti testipedin ideana mahdollistaa tiedon kerääminen samalla kun testataan. Valvotut ja hallittavissa olevat olosuhteet. Ideaaliympäristö tai kontrolloidulla tavalla mukaan tuotua epävarmuutta. Muistikorttivirheet, rautatason ongelmat, nettiyhteyden katkeamiset jne.
DOKUMENTTIPOHJAT, TIETOKANTAPALVELUT Milloin testi on suoritettu, mille ohjelman versionumerolle, ja kenen toimesta. Miten testin tehnyt henkilö on mahdollista tavoittaa? Mitä laitteita testauksessa käytettiin, mitä kehitysympäristön ja mahdollisten lisäkirjastojen versionumeroita, miten laitteet oli kytketty toisiinsa? Miten testattava ohjelma oli alustettu tai valmisteltu testitapausta varten? Mitä syötteitä testattiin, mitä työvaiheita testausta tehdessä tehtiin? Mitä testatuilla syötteillä tapahtui, onnistuiko kaikki testatut tapaukset? Mitkä testitapaukset epäonnistuivat, mitä niissä tapahtui, sisältäen kaikki virheilmoitukset ja kuvankaappaukset jotka testauksen aikana ilmenivät? Jätettiinkö jotain kokeilematta, ja jos jätettiin niin mitä ja miksi? Esimerkki siitä mitä dokumentit voivat sisältää.
KATSELMOINNIT Ohjelma-arvioinnit tarkastukset ja koodikatselmoinnit ovat testauksen hallinnassa tapahtumia, joiden yhteydessä tarkastetaan että Ohjelman komponentit on rakennettu oikein ohjelmointikielen näkökulmasta järkeviä ratkaisuja käyttäen siten, että koodin yleinen rakenne vastaa yleisesti hyväksyttyjä ja sovittuja ohjelmointikäytäntöjä (coding convention). Yksittäisten komponenttien tai koodikokonaisuuksien katselmoinnin lisäksi voidaan katselmoida myös Vaatimuksia Käyttöliittymän toimintaa Ohjelman toimintaa yleisemmällä tasolla. Yleisesti kaikilla arvioinneilla, tarkastuksilla ja katselmoinneilla pyritään madaltamaan ohjelman kehittämiseen liittyviä riskejä. Varmistetaan, että kaikki kehitystyötä tekevät tahot toimivat sovitulla tavalla, seuraavat ohjeita ja ymmärtävät mitä ovat tekemässä.
TESTAUKSEN JOHTAMISEN T YÖKALUT Mitkä testitapaukset on toteutettu? Miten toteutetut testitapaukset ovat onnistuneet? Miten paljon virheitä rakennettavan järjestelmän uusimmassa versiossa on? Minkä tyyppisiä tai miten vakavia uusimmassa versiossa olevat virheet ovat? Kuka hoitaa mitäkin testitapausta, miten paljon työtehtäviä projektin eri testaajilla on?
MUUT VÄLINEET Monesti yksinkertaisin projektin onnistumisen mahdollistava asia kuitenkin unohtuu, ihmisten välinen kommunikaatio. Viestintävälineet, kuten sähköposti, puhelin tai pikaviestipalvelu kuten Skype, WhatsApp tai vaikkapa kestoklassikko IRC. Testaus on työtehtävä, jossa testaustyön ammattilaiset läpikäyvät muiden toteuttamia ohjelmia, ja tämän vuoksi olisikin tärkeää, että testaajat pystyvät tarvittaessa keskustelemaan ohjelmassa olevista toiminnoista tai ongelmista itse ohjelman tehneen henkilön kanssa. Tapauksissa joissa ohjelmaan sisällytetään kehitystiimin ulkopuolella tehtyjä komponentteja, nousevat viestintävälineet erityisen tärkeään arvoon. Esimerkiksi kehitystiimin kaikkien jäsenten ei ole pakko olla jatkuvasti samoissa toimitiloissa, jos ryhmän sisällä voidaan vaihtaa ajatuksia, pieniä yksityiskohtia koskevaa tietoa tai mielipiteitä helposti. Kommunikointi on testauksen tärkein työkalu.
MITÄ TÄSTÄ LUENNOSTA PITÄÄ MUISTAA? Testaajan työkalut eivät aina poikkea kehittäjän työkaluista. Testauksen omat työkalut tavallisesti automatisointia, vikatiedonhallintaa, datan keräämistä tai erikoistyökaluja. Kommunikointi on testauksen tärkein työkalu.
PERIODIN VAIHTUESSA
RE: SISÄLTÖ Testauksen työvaiheet Testaustasot Tavallisimmat testausmenetelmät Testauksen työkalut Tavallisimmat testauksen dokumentit Testaus organisaation toimintana Testaustoiminnan kehittäminen Testauksen prosessit Testaus käytännössä
KURSSI ON NY T PUOLIVÄLISSÄ! Luennot jatkuvat normaalisti Harjoituksissa siirrytään ohjelmointityöstä suunnittelutyöhön. 1. Harjoitustyön deadline lähestyy.