Agile testaus on tänä päivänä kuuma aihe testauspuolella. Olen vetänyt yhden agile projektin ja käynyt useissa koulutuksissa, sekä lukenut aiheesta. Ajattelinkin kirjoittaa tähän pari tärkeintä ajatusta agile testausesta, siltävaralta että saataisiin keskustelua aikaan.
Dippatyön tilanne: 60 sivua, 16676 sanaa, valmis tämän kuun loppuun!
Agile prosessit määrittelevät testauksen suurin piirtein seuraavalla tavalla. Isot tehtävät kehityksessä jaetaan pieniin taskeihin, ja näin päästään koodaamaan pienempiä palasia. Taski on tehty vasta kuin sille on kirjoitettu myös testiajot. Testiajot pitää olla uudestaan suoritettavia positiivisia testejä. Testejä kootaan regressiotestikokoelmaksi joka ajetaan aina kun taski on tehty. Näin voidaan katsoa että ei rikottu mitään olemassa olevaa. Jos testit kirjoitetaan ennen koodia niin kyseessä on TDD (Test driven development)
Tuotteen laadun varmistamiseen ei riitä koodin testaaminen yksikkötasolla. Siksi täytyy testata lisää ja ylemmällä tasolla. Korkeamman tason testeihin agile ei ota kantaa, joten yleensä se tehdään aivan kuten v-mallin kanssa. Eli, agile prosessi tuottaa ulos koodin, testi tiimi ottaa sen vastaan ja alkaa testata. Agilessa kartetaan ylimääräisiä dokumentteja, sekä muutetaan kaikkee nopeaa. Tästä aiheutuu että testaajat eivät oikein tiedä mitä pitäisi testata, eivätkä voi alkaa kehittään testejä etukäteen koska rajapinnat voi vielä muuttua.
Rakaisuna voisi olla testaajan vieminen projektin sisälle. Tällöin testaajalla olisi aina tiedossa tuoreet muutokset ja hän voisi kehittää testejä siinä sivussa. Näin myös bugit tulisivat nopeaa kehittäjien tietoon, eivätkä he kehtaisi tehdä samaa virhettä uudestaan. Mielestäni voitaisiin mennä niin pitkälle testauksen tuomisessa prosessin sisään, että tuotaisiin laatu yhtenä ominaisuutena prosessin sisään. Käsiteltäisiin laatu-ominaisuutta aivan kuten muitakin ominaisuuksia. Jaettaisiin se eri testaustapoihin (manuaalinen testaus, Scriptien kirjoittelu, jne…). Sitten arvioitaisiin aika, ja katsottaisiin pysyttiinkö siinä vai mentiinkö yli. Näin myös testaaja oppisi arvioimaan aikaa ja saataisiin testaus pysymään paremmin projektin matkassa. Olen kokeillut vähän tämän tapaista ja se näytti toimivan.
Tässä on kuitenkin ongelmana, että montako testaajaa tuodaan kehitystiimin sisään ja kuinka raskaista testausprosesseja voidaan tuoda ketteryyden kärsimättä. Ei agile tiimin sisään kannata liian raskaitakaan prosesseja tuoda, koska silloin joutuu pidentämään iteraation aikaa ja menetelmä alkaa muistuttaan v-mallia. Näihin ei voi muuta sanoa kuin että: kokeile itse. Ei agile menetelmiä voi suoraan kopioida, niin ei myöskään agile testausmenetelmiä. Jokaisen pitää itse löytää se paras tapa tehdä. Isoja linjoja voi ja kannattaakin kopioida ainakin kokeilemalla.
Tämä on minun oma käsitys agile testauksesta. Kertokaa ihmeessä omanne, vaikka kommentoimalla tätä kirjoitusta.