Ohjelmistotestaus parantaa laatua

Artikkelin lukuaika

6 min

Suunnitelmallisen ohjelmistotestauksen lopputuloksena asiakas saa ohjelmistotuotteen, joka todistetusti toimii kuten pitää. Ohjelmistoyritys puolestaan saa tyytyväisen asiakkaan lisäksi varmuuden toimintansa laadusta.

Testaus on ohjelmistokehityksen laadunvalvontaa, joka varmistaa, että järjestelmä tekee sen, mitä siltä odotetaan – ja toisaalta varmistaa, että ohjelmisto ei tee mitään sellaista, mitä sen ei kuuluisikaan tehdä. Tilanne on sama kuin fyysistä tuotetta valmistettaessa: valmistuksen aikana havaitut virheet pitää korjata, ennen kuin tuote päästetään kaupan hyllylle ja asiakkaan käsiin. Laadukas tuote toimii odotetulla tavalla, ja sitä on miellyttävä käyttää.

Hyvin määritelty on puoliksi tehty

Kuinka tuotteen sitten pitää toimia? Ohjelmiston tilanneen asiakkaan kanssa on mahdollisimman tarkasti suunniteltu ja dokumentoitu, mitä vaatimuksia kehitettävällä järjestelmällä on, eli esim. kuka sitä käyttää, millä laitteella ja mihin tarkoitukseen. Ohjelmistotestaaja lukee näitä vaatimusmäärittelydokumentteja ja testaamalla varmistaa, että järjestelmä toimii sovitusti. Kun virhe löytyy, testaaja kuvaa tarkasti virheen ja sen syntyolosuhteet. Nämä tiedot hän toimittaa kehittäjille, jotka korjaavat virheen.

Varsinkin ketterässä ohjelmistokehityksessä uusia vaatimusmäärittelyjä luodaan ja vanhoja muokataan koko kehitystyön ajan. Lisäykset ja muutokset pitää viedä määrittelydokumentteihin, jotta ne löytävät tiensä testattaviksi. Jos vaatimusmäärittelyjen dokumentaatio on puutteellista, suunnitelmallinen testaus vaikeutuu ja työstä löytyy todennäköisesti ainoastaan selkeimmät virheet. Laadukkaan määrittelydokumentaation tekemiseen käytetty aika maksaakin itsensä nopeasti takaisin.

Hyvä testaaja on hyvä määrittelijä

Vaatimusmäärittelyjen tekijä ja ohjelmistotestaaja voi olla yksi ja sama henkilö. Testaaja on tottunut tekemään testaussuunnitelman ja laatimaan suunnitelman mukaiset testitapaukset nimenomaan määrittelyiden perusteella. Määrittelijä-testaajalla on kyky purkaa järjestelmän toiminnallisuudet osiin ja kirjata ne yksiselitteisiksi vaatimuksiksi. Hän osaa myös varmistaa, että tietyn vaatimuksen toteutuminen on kokeellisesti osoitettavissa.

Testaus on jatkuvaa laadunvarmistusta

Ohjelmistotestausta pitää tehdä koko kehitystyön ajan, koska virheiden korjaaminen on sitä nopeampaa ja halvempaa, mitä lähempänä syntyhetkeä ne havaitaan. Jos virheitä ei havaita heti, ne ehtivät pitempään vaikuttaa ohjelman muiden osien toimintaan, ja korjaaminen on työläämpää ja kalliimpaa. Kaikkein tehokkainta on, jos virheiden synty saadaan estettyä jo suunnittelu- ja määrittelyvaiheessa!

Ohjelmistokehittäjät rakentavat sovellusta monesti jaksoissa, joista jokaiseen on sovittu tietty sisältö: uusia ominaisuuksia tai muutoksia vanhaan toiminnallisuuteen. Kehittäjät vastaavat vain itse tekemänsä osan toimivuudesta, mutta ohjelmistotestaajat tarkastelevat suurempia kokonaisuuksia: suorittavat testisuunnitelman mukaan laadittuja, useimmiten asiakkaan liiketoimintaprosesseja noudattavia testejä, joilla varmistutaan ohjelmiston eri osien toiminta yhdessä.

Uudet ja muuttuneet toiminnallisuudet testataan aina. Tämän lisäksi tehdään regressiotestaus, jolla varmistetaan, että aiempi toiminnallisuus toimii myös lisäysten ja muutosten jälkeen.

Laadukas tuote toimii odotetulla tavalla, ja sitä on miellyttävä käyttää.

Testausautomaatio auttaa, mutta ei tee autuaaksi

Laajemmissa ohjelmistojen kehitysprojekteissa testattavan sisällön määrä tyypillisesti kasvaa projektin edetessä, jolloin testauksesta kannattaa usein automatisoida ainakin osa. Testausta automatisoimalla päästään huomattaviin työaikasäästöihin manuaaliseen testaukseen verrattuna. Tyypillinen testiautomaation kohde on regressiotestaus. Toinen yleinen kohde on suorituskykytestaus, jolla voidaan simuloida vaikka tuhansien yhtäaikaisten käyttäjien tai muun kuormituksen aiheuttamaa vaikutusta ohjelmistoon. Automatisoimalla saadaan testausresursseja kohdennettua muuhun testaustoimintaan.

Automatisoitu testi on etukäteen suunniteltu, askelittain koneellisesti etenevä testitapaus. Se on aina suunniteltu jotain tiettyä tilannetta varten, eikä pysty itse löytämään uusia käyttökohteita. Parhaimmillaan testiautomaatiolla voidaan kattaa huomattava osa kohdejärjestelmän toiminnallisuuden testaamisesta. Kaikkea ei kuitenkaan välttämättä ole järkevää eikä edes mahdollista automatisoida. Päätökseen testauksen automatisoinnista vaikuttavat mm. projektin koko, testauksen työmäärä, kustannustekijät sekä käytössä olevat testausresurssit. Testiautomaatiota pitää aina täydentää manuaalisella testaamisella.

Miksi tarvitaan erillistä testaajaa?

Testaaja edustaa asiakasta ohjelmistojen kehitysprojekteissa. Ohjelmistokehittäjä luonnollisesti tuntee oman työnsä parhaiten. Hän pystyy testaamaan oman työnsä (yksikkötestaus), mutta hänellä ei välttämättä ole käsitystä toisten kehittäjien tekemistä ohjelman osista.

Testaaja on henkilö, jonka tehtävänä on hahmottaa kokonaisuuksia ja nähdä ohjelman osasten keskinäiset vuorovaikutussuhteet. Kokenut testaaja näkee siis metsän puilta ja ottaa huomioon myös asiakkaan noudattamat prosessit sekä liiketoimintavaatimukset. Ulkopuolisena tarkkailijana hän saattaa myös paremmin havaita jotain, mitä kehittäjä ei omassa työssään itse näe.

Testaus tuo tilaajalle laatua ja läpinäkyvyyttä

Hyvä testaaja toimittaa asiakkaalle säännöllisesti raportteja, joista ilmenee, mitkä ohjelman ominaisuuksista on testaamalla varmistettu toimivan. Testausraporteista asiakas näkee, ettei itse joudu toimimaan puolivalmiin ohjelman testaajana. Raportit tuovat ohjelmistoyrityksen toimintaan läpinäkyvyyttä ja lisäävät asiakkaan ymmärrystä ohjelmiston sisällöstä. Kokenut testaaja tekee myös asiakkaalle aktiivisesti ehdotuksia mahdollisista lisäyksistä ja muutoksista ohjelman toimintaan, jotta toimitettava tuote vastaisi parhaimmalla mahdollisella tavalla asiakkaan liiketoimintatarpeita.

Testaus kehittää ohjelmistoyrityksen toimintaa

Ohjelmistotuotetta tekevälle yritykselle testaamisella on myös muita etuja tuotteen laadun parantumisen lisäksi: suunnitelmallinen testaus pakottaa tekemään järjestelmän määrittelyn kunnolla, mikä hyödyttää kaikkia ohjelmistokehityksen osa-alueita. Testaus yhtenäistää ohjelmointikäytäntöjä ohjaamalla kehittäjiä tekemään testausystävällistä ja yhtenäistä koodia. Testauksesta vastaava henkilö puolestaan on projektipäällikölle korvaamaton tuki, joka pitää kirjaa korjatuista ja korjausta odottavista virheistä sekä niiden vaatimasta työmäärästä.

Testaaja on asiakkaan edustaja ohjelmistoyrityksessä

Ohjelmistoyrityksen sisällä testaaja pitää silmällä sitä, että toteutus vastaa asiakkaan kanssa sovittuja määrittelyjä. Testaajan pitää pystyä löytämään ohjelmistoon eksyneet virheet ja antamaan kehittäjille riittävän tarkat lähtötiedot virheiden korjaamiseksi. Kokemuksen myötä testaajalle kehittyy myös bugisilmää eli kykyä ennalta havaita potentiaalisia virhekohtia ja ongelmien lähteitä. Testaus on analyyttistä työtä, joka vaatii järjestelmällisyyttä ja tarkkuutta. Testaajan pitää osata kommunikoida tehokkaasti kaikkien projektin sidosryhmien kanssa. Testaaja toimii tulkkina ja viestinviejänä asiakkaan ja kehittäjien välissä.

Suunnitelmallisen ohjelmistotestauksen lopputuloksena asiakas saa ohjelmistotuotteen, joka todistetusti toimii, kuten pitää. Ohjelmistoyritys puolestaan saa tyytyväisen asiakkaan lisäksi varmuuden toimintansa laadusta.

ATR Soft hyödyntää omassa kehitystyössään kokeneiden määrittelijöidensä ja testaajiensa osaamista. Voimme tarjota heidän palveluitaan myös sinun käyttöösi: taitava määrittelijä on korvaamaton apu IT-projektin alkuvaiheessa – samoin pätevä laadunvarmistaja pitämään huolta siitä, että työ etenee kuten on sovittu. Ota yhteyttä ja kysy lisää!

Toimitusjohtaja, myynti