Testaus aikataulupuristuksessa
Testausguru Amit on aloittanut työt yrityksessä, joka kehittää logistiikkajärjestelmiä teollisuusyrityksille. Järjestelmäkehitys on projektiluontoista, sillä tarpeet ovat vahvasti erilaiset jokaisen uuden asiakkaan kohdalla.
Työn tekoa leimaa jatkuva kiire ja repivyys tuotekehityksessä. Sovitun järjestelmätoimituksen lähestyessä työt kasaantuvat rankalla tavalla. Yleensä viimeinen kuukausi ennen toimitusta menee ylitöiksi koko tiimillä. Toimituksen jälkeen korjaillaan lisäksi jäännösvirheitä, joista asiakas on toimituksen jälkeen reklamoinut.
Amitin hypätessä puikkoihin yrityksellä ei ollut varsinaista testaustiimiä vaan työvoima testaukselle alihankittiin kylmästi kolmannelta osapuolelta. Testauksen toimintatapana oli, että tuotekehityksestä tehtiin testaustoimeksianto alihankkijalle aina kun siltä tuntui. Sopimus oli hinnoiteltu kiinteästi per testikierros.
Amit huomasi nopeasti, että koko järjestelmäkehitystä vaivaa ikävä pullonkaula: Amitin mielestä repivyys ja aikatauluongelmat johtuivat nimenomaan kehitystyön loppusuoralla löytyvien kriittisten virheiden määrästä. Virheiden korjaamiseen kului merkittävä siivu ajasta, joka piti käyttää järjestelmätoimituksen viimeistelyyn. Lisäksi projektijohto joutui tekemään kipeitä päätöksiä valikoitujen virheiden jättämiseksi korjaamatta. Niistä asiakas useimmiten sitten takuuaikana teki reklamaatioita ja taas kului lisää aikaa korjaustöissä.
Onneksi Amit oli joskus nähnyt Conformiqin kalvosetin testauksen alihankinnasta. Niistä löytyi erinomainen havainnollistus testauksen aikataulupuristuksesta.

Projektipäällikkö ei tehnyt testaustoimeksiantoja kuin vasta jokaisen toimituksen viimeisellä kolmanneksella. Päällikön mielestä testausta ei kannattanut aloittaa, koska budjetti sisälsi kiinteän määrän testauskierroksia ja hänkin tiesi että softassa on vikoja. Testauksen aloittaminen ajoissa tuntui siis resurssien haaskaukselta. Toisaalta järjestelmätoimituksella oli deadline, josta lipsumisesta seurasi sopimussakkoa. Takuuajalle oli siis pakko jättää virheitä. Lisäksi viimeisen kolmanneksen testaustoimeksiannoista iso siivu kului raportoitujen virheiden verifiointityöhön ja fixien tarkistamiseen.
Onneksi Amitilla oli vanhana guruna kokemusta vastaavasta tilanteesta. Ratkaisukin oli täysin itsestään selvä. Ongelmakenttää kukaan ei vain ollut huomannut tarkastella testauksen näkökulmasta aikaisemmin.
Amit ehdotti, että järjestelmäkehitys jaksotetaan selkeästi testattaviin buildeihin koko projektin ajalle ja testausbudjetti jaetaan koko projektin elinkaarelle. Amitin esittelemät korjaukset prosessimalliin aiheuttivat yrityksessä seuraavat toimenpiteet:
- Buildisykli tiivistettiin kahteen viikkoon. Toimivan buildin oli oltava valmiina aina parillisten viikkojen torstaina.
- Jokaisesta buildista oli tehtävä toimeksianto testaukselle. Testaustulokset olivat valmiina viidessä työpäivässä.
- Virheidenkorjausprosessi aloitettiin heti ensimmäisten testitulosten valmistuttua ja sitä jatkettiin projektin loppuun asti.
Lisäksi testaustoimittajan kanssa sovittiin kiinteästä kuukausihinnasta, joka sisälsi kaksi testattavaa buildia. Hinta laskutettiin oli töitä tai ei. Ennakoitava työmäärä laski testauskierroksen hintaa. Raaka laskutuspolitiikka taas pakotti tuotekehityksen pitämään huolta säännöllisesti tehtävistä tarkastuskelpoisista buildeista.
Näillä toimenpiteillä vakavat virheet saatiin kiinni aikaisemmin ja ne korjattiin hyvissä ajoin ennen toimitusta. Tuotekehityksen työmäärä pysyi tasaisena läpi koko projektin. Ylitöitäkään ei enää tarvinnut tehdä ja takuuaikana tehtävien korjausten määrä puolittui. Yrityksessä huomattiin että:
Testaukseen ja koodaukseen pätee molempiin sama sääntö: Ne eivät toimi optimaalisesti aikataulupuristuksessa!
Juttussa eniten kosketti tuo kohta jossa projektipäällikkö tuntee, että testauksen käyttö on resurssien haaskausta. Itseasiassa ymmärrän hyvin mistä tämä tunne juontaa juurensa. Ohjelmistotestaus on kieltämättä nähty joskus erillisenä osana tuotekehityksessä ja testaajat on saatettu sijoittaa vaikkapas kokonaan eri taloon kuin devaajat. Modernin ohjelmistokehityksen peruspilareihin kuuluu se, että testaajat ja devaajat muodostavat erottamattoman parin. Tilannetta voi verrata vaikkapas tuollaiseen klassiseen poliisipartioon jossa toinen osasi aina paremmin kirjoittaa ja toinen oli taas parempi pamputtamaan. Näin partiosta tuli täydellinen eikä siitä puuttunut mitään ja partion osapuolista kumpikaan ei edes kuvitellut aloittavansa töitä ilman toista. Näin asiat ovat myös nykyaikaisessa ohjelmistokehityksessä tai ainakin pitäisi olla.
Devaajien kannattaa aina vaatia projektilta, että ennen kuin laitetaan rikkaa ristiin, niin testaus tulee olla mukana. Ei ole mitään mieltä siinä, että devaaja itse testaa omat koodinsa. Se syö aikaa varsinaiselta koodaukselta ja en ole näille aamuille tavannut yhtään devaajaa joka olisi oikeasti motivoitunut testauksesta. Jo yksistään tässä on riittävät syyt projekteille miettiä miehistön rakennetta. Sellainen devaaja jolla on kaverina luottotestaaja on aivan omalla tasollaan koodin tuottavuudessa. Devaaja joka saa tehdä joka päivä sitä mitä oikeasti haluaa, vastaa taatusti viittä sellaista devaajaa jotka joutuvat tekemään sivussa myös testaustyön.
Väitän, että tuotekehityspartio joka koostuu yhdesta koodaajasta ja yhdestä testaajasta on tehokkaampi kuin viisi koodaajaa.
Terve Ammattitestaaja,
Tämä tuotekehityspartio -ajattelu on tullut vastaan myös itselläni monessa projektissa. Se on yllättävän tehokas tapa esimerkiksi bugifixien tekemiseen ja varmentamiseen. Meillä onkin usein tehty niin että bugifixin tekovaiheessa testaaja saattaa istua puolen päivään devaajan kanssa vieretysten: toinen koodaa toinen tutkii ja testaa. Tulokset ovat olleet erinomaisen hyviä.
Tämän jutun pohja-ajatuksena kuitenkin on se, että usein varsinkin pienemmän kokoluokan projekteissa testaukseen sijoitettava resurssimäärä (raha tai ihmiset) on auttamattoman pieni. Tänään aamupalalla pohtiessani aihetta mieleeni tuli hauska vertaus voileivästä ja viimeisestä voinokareesta. Rajallisin resurssein tehty testaus voidaan toteuttaa kahdella tavalla:
1) Aamupala aloitetaan syömällä kuivaa leipää ja säästellään voita. Kuiva leipä tarttuu kurkkuun ja syöminenkin kestää vähän tavanomaista pidempään, kun pitää hörpätä aina kahvia väliin. Sitten loppumetreillä uskalletaan sipaistaan se ainoa voinokare paksusti siivun päälle ja nautiskellaan sitten siitä.
2) Voidellaan koko leipä sopivasti sillä saatavilla olevalla voinokareella, näin saadaan tasaisesti kohtuullisen hyvää leipää syödäksemme ja leipä menee myös tasaiseen ja ennakoitavaan tahtiin kurkusta alas. Lopputulos on mukava aamuhetki ilman tarpeetonta repivyyttä.
Miltäpä kuulostaa tämä vertaus? Kummalla tavalla sinä aamupalan nauttisit? Kommentteja tai kritiikkiä otetaan vastaan 🙂
No kyllä tuo kohta 2 tuntuisi pitemmän päälle paremmalta, mutta voisin joissain yksittäisissä tapauksissa turvautua myös kohtaan 1.
Porautuisin kuitenkin vielä tuohon testausresurssi -kohtaan. Eli hoitaisin asian paljon ennen kuin pitää tehdä valinta pienen nokareen sijoittamisesta. Leivän ja voin suhde kannattaa laittaa balanssiin ennen kuin löytää itsensä siitä tilanteesta, että leipää kyllä on mutta ei voita. Projektien ei tarvitse isontaa budjettejaan jotta testaus saataisiin mukaan – uudelleen järjestely auttaa.
Mikä on sitten toimiva suhde testauksen ja koodauksen välillä? Se on hyvä kysymys jota kuulen kohtuullisen paljon kysyttävän. Tuntematta projektin yksityiskohtia, sanoisin että kolmen suhde yhteen on toimiva. Yksi huipputestaaja kykenee olemaan kolmen koodajan luottomies yhtä aikaa. Mutta jotta tähänkin sääntöön saadaan poikkeus, niin kerron että olen ollut ohjelmistoprojektissa jossa koodaajien ja testaajien suhde oli 1:1 ja puhuttiin vielä lisätestauksen hankinnasta. Projektilla on siis merkitystä.
Tähän väliin saattaisi joku projektipäällikkö todeta, että nyt tulee sitten vähemmän koodaajia ja koodi ei etene samaa vauhtia. Tässä on nyt tämä koko homman pointti. Jäljelle jäävät koodaajat ovat ylivertaisia motivaation ja tuottavuuden suhteen kun heillä on toimiva testaus käytettävänään. Projektipäällikkö ilahtuu näkemästään, sillä ero vanhaan on suuri.
Onpas ilmassa nostalgiaa kun näkee ihan omin kätösin piirtämänsä kuvan vuosien jälkeen. Kuvan ensiesitys sijoittui johonkin tilaisuuteen ja syntyi minun ja Pöyhösen Erkin yhteistyönä. Kiitos uudelleenjaosta vuosikymmenen jälkeen.
Aivan mahtavaa 🙂 Muistan joskus ihan miettineenikin, että kenenköhän kynästä tämä lienee peräisin 😀