Ohjelmistotestaus ja laadunvalvonta — kuinka ohjelmistoja testataan?
Liiketoiminta on täysin riippuvaista digitaalisten järjestelmien toiminnasta. Siksi ohjelmistotestaus on liiketoiminnan laadunvarmistusta. Jokaisen johtajan on hyvä ymmärtää ohjelmistotestauksen perusperiaatteet. Ne ovat edellytys mahdollisimman häiriöttömälle ja tarkoituksenmukaiselle toimintaympäristölle.
On yleinen harhakäsitys, että ohjelmistotestauksessa olisi kyse vain yksittäisen ohjelmiston virheettömän toiminnan varmistamisesta. Toki ohjelmien toiminta tulee varmistaa ja bugit kitkeä pois. Mutta näkökulman kannattaa olla laajempi.
Sekä järjestelmäkehityksen että liiketoiminnan kehityksen kannalta on kyse isommasta asiasta: liiketoiminnan jatkuvuuden ja sujuvuuden varmistamisesta.
Yksittäinen sovellus on harvoin itsenäinen saareke. Lähes aina se kytkeytyy integraatioiden ja tiedonkulun kautta yrityksen kokonaisvaltaiseen digitaaliseen liiketoiminta-alustaan. Siksi testaus ja laadunvarmistus on niin tärkeää — haasteet yksittäisen ohjelmiston kanssa voivat säteillä paljon laajemmalle yrityksen toiminnassa.
Testaaminen on osa kehitystyötä. Sen merkitys on korostunut ketterien menetelmien yleistymisen myötä. Testaamista tehdään jo hyvin aikaisessa vaiheessa. Testaus ei siis ole yksittäinen työ, joka suoritetaan, kun ohjelmisto on “valmis”. Testaus ei ole myöskään projekti, joka käynnistetään vasta ongelmien ilmetessä.
Osaavalla ohjelmistojen ja järjestelmien toimittajalla testaaminen on sisäänrakennettu osa kehitystoimintaa. Toimittajalla on siihen menetelmät, työkalut ja kokemus.
Mutta vielä laajemmin ajateltuna:
Miksi ohjelmistoja testataan?
Laadunvalvonta kulkee kehitystyön rinnalla jatkuvasti. Testaamisella on monia tavoitteita:
- Sopimusasiat: Testaamisella valvotaan, täyttääkö toimittajan toimittama järjestelmä tai ohjelmisto sopimuksen ehdot. Ilman systemaattista testaamista on vaikea varmistua siitä, että toimitettu kokonaisuus toimii halutulla tavalla. Testaaminen voi myös antaa tietoa siitä, kuinka lähellä haluttua valmistumisaikataulua kehityshankkeessa ollaan. Testaaminen turvaa kaikkia osapuolia ja vähentää epäselvyyksiä ja myöhäisten jälkikäteisselvittelyjen määrää.
- Toimivuus: Testaamisella varmistetaan se, että ohjelmisto toimii kuten pitääkin. Toimivuuteen sisältyy monia näkökulmia, kuten esimerkiksi suunniteltujen ominaisuuksien häiriötön toiminta, toiminnan nopeus, toiminnan vakaus, käyttökokemus tai toimivuus eri alustojen, käyttöjärjestelmien, käyttäjäryhmien tai käyttötapausten kesken.
- Turvallisuus: Testaaminen on osa riskienhallintaa. Testaamisen avulla todennetaan ohjelmiston turvallisuus sekä yksittäisen ohjelmiston osalta että osana yrityksen laajempaa digitaalista liiketoiminta-alustaa. Tietoturva ja häiriötön toiminta ovat perusedellytyksiä ohjelmistolle. Kyseessä on liiketoiminnan jatkuvuuden varmistaminen, jotta se ei kaadu yllättäviin teknisiin ongelmiin tai johda työläisiin selvittelyihin tai asiakaslupauksista lipsumiseen.
- Kehitystyön tuki: Testaaminen ohjelmiston kehitysvaiheessa on tarkoituksenmukaista, koska mahdollisimman ajoissa löydetyt ongelmakohdat (sekä yllättävätkin kehitysmahdollisuudet!) on edullisinta ja nopeinta korjata kehitystyön ollessa vielä meneillään. Tämä auttaa varmistamaan laadun ja asiakastyytyväisyyden parhaalla mahdollisella tavalla.
- Kokonaisjärjestelmän toiminta: Testaaminen ottaa kantaa ohjelmiston toimintaan osana laajempaa kokonaisuutta. Näin varmistutaan siitä, että yksittäinen ohjelmisto toimii myös integroituna laajempaan kokonaisuuteen. Tässä voidaan teknisen toimivuuden lisäksi haluttaessa tarkastella myös laajemman työnkulun sujuvuutta ja tehokkuutta.
Ohjelmistojen laadunvalvonta: mitä laatu merkitsee?
Ohjelmistoja tuotetaan monenkirjaviin käyttötarkoituksiin. Lisäksi tietyn ohjelmiston käyttäjäryhmät voivat olla osaamiseltaan ja tavoitteiltaan keskenään hyvinkin erilaisia.
Tyypillinen esimerkki kirjavasta käyttäjäporukasta on laaja toiminnanohjausjärjestelmän, ERP:n toteutus, joka palvelee kaikkia yrityksen liiketoimintoja ja johon käytännössä kaikilla yrityksessä työskentelevillä henkilöillä on jokin side. Roolit, osaaminen, tehtävät ja motivaatio henkilöiden kesken vaihtelevat suuresti.
Onko laatu helppoa käytettävyyttä? Onko laatua ominaisuuksien suuri määrä edistyneille käyttäjille? Vai onko laatua kyky ylläpitää ja kehittää koodia helposti jatkokehitystä varten?
"Kaikkea kaikille" on huono tavoite. Täytyy priorisoida.
Siksi tilaajan ja ostajan yksi tärkeimmistä keskusteluista on selkeyttää ne liiketoiminnan tavoitteet, joita ohjelmistolla tuetaan. Mitkä asiat ovat kaikkein tärkeimpiä? Miten ne näkyvät ja miten niitä mitataan? Sen jälkeen on helpompi säätää ohjelmistotestauksen laajuus ja painopiste sopivaksi.
Miten ohjelmistoja testataan?
Ensin laaditaan testisuunnitelma ja käydään ylläkuvattua keskustelua tilaajan kanssa siitä, mitä tavoitellaan ja mitä painotetaan. Yksityiskohtainen testisuunnitelma voidaan laatia monin tavoin, esimerkiksi niin, että päätavoitetta tukevat testattavat asiat tai suuririskisimmät asiat asetetaan etusijalle ja niihin kohdennetaan kaikkein eniten testausresursseja.
Itse testaaminen sisältää tilanteesta riippuen joukon seuraavia, osin limittäin meneviä elementtejä:
- Manuaalinen testaus: Painottuu usein kehitystyön alkuvaiheisiin, mutta voidaan tehdä milloin vain. Tässä kehittäjät testaavat etenkin yksittäisiä toiminnallisuuksia. Kokenut testaaja huomaa tehokkaasti puutteet niin toiminnallisuudessa, käyttöliittymässä kuin käyttökokemuksessakin.
- Automaattinen testaus: Painottuu valmiisiin ohjelmistoihin. Testataan koneellisesti, ennaltamäärättyjen scriptien mukaan toimintoja erilaisissa käyttötapauksissa. Tuo nopeus- ja kustannusetuja, kun testattavaa on paljon ja testien täytyy kattaa ohjelmiston ongelmattoman toiminnan varmistaminen eri alustoilla, laitteilla ja käyttöympäristöillä. Vaatii kuitenkin juuri oikeanlaisten testien valintaa ja koneellinen testi ei “hoksaa” asioita samalla tavalla kekseliäästi kuin kokeneiden ihmisten tekemä manuaalinen testaus.
- Sisäinen testaus tai ulkopuolinen testaaja:
- Ohjelmistosuunnittelijat tekevät aina jonkinlaista testaamista ohjelmistoa rakentaessaan tai muokatessaan. Tämä voidaan systematisoida ja sopia tilaajan kanssa, että kehittäjät ja käyttäjät hoitavat testaamisen ennalta sovitun mallin mukaisesti.
- Vaihtoehtona on kokonaan ulkopuolisen ohjelmistotestausyrityksen käyttö. Tällöin testaaminen ostetaan ulkopuoliselta asiantuntijalta, joka on erikoistunut tähän työhön. Tyypillisesti testaaminen painottuu tällöin ohjelmistohankkeen loppuvaiheeseen.
- Ulkopuolista testipäällikköä käytetään usein myös asiakkaan hyväksymistestauksen suunnitteluun, läpivientiin ja tukemaan asiakkaan liiketoiminnan henkilöitä, jotka testaavat oman toimensa ohella. Näissä tapauksissa silti myös ohjelmiston toimittajalla on omat testausvastuunsa.
- Testityypit tilanteen mukaan: Testattavaa on paljon ja testityyppi valitaan tarkoituksen mukaan. Testattavana voi olla esimerkiksi: toiminnallisuustesti, stressitesti/kuormitustesti, turvallisuustesti, käytettävyystesti/käyttökokemustesti, front end -testi, back end -testi, integraatiotesti, saavutettavuustesti (käytettävyys näkö-, kuulo-, motoriikkahaasteisille), suorituskykytesti, end to end -testi, käyttöönotto- ja hyväksyntätesti sekä lukuisia muita testityyppejä, joita testaamisen ammattilaiset erottelevat toisistaan testikohteiden ja työtapojen perusteella.
- Bugiraportti: Dokumentti havaituista ongelmista, niiden vakavuudesta ja korjaustavoista. Hyvä raportti kuvaa, kuinka ongelma on toistettavissa ja tarjoaa riittävästi konkretiaa, jotta kehittäjä voi tarttua havaintoon. Bugit voidaan jaotella erilaisiin bugityyppeihin, jotka ovat koodareille tuttuja ja joista kokenut kehittäjä näkee käytännössä heti, onko kyseessä luonteeltaan pieni- vai isotöinen korjaus.
Ohjelmistotestaus on prosessi, jossa onnistumiseen tarvitaan testausta tukeva organisaatiokulttuuri sekä systemaattisuutta ja osaamista. Testaaminen on kiinteä osa ohjelmistokehittämisen ja laadunvalvonnan koko elinkaarta.
Mihin ohjelmistotestaus ja laadunvalvonta johtaa: mitä tiedolla tehdään?
Mitä aiemmin mahdolliset ongelmakohdat - kuten myös uudet hyödylliset ideat - saadaan esiin, sitä edullisempaa niiden korjaaminen tyypillisesti on.
Alkeellinen virhe on järjestää systemaattinen testaaminen vasta siinä vaiheessa, kun järjestelmä on otettu käyttöön, se kuvitellaan toimivaksi ja sitten löytyy “yllättäviä” virheitä. Tällaista tapahtuu onneksi enää harvoin. Osaava ohjelmistotoimittaja ja integraatiokumppani suosittaa testaamista osana toimitusprosessia ja osaava ostaja puolestaan ymmärtää tämän työn merkityksen.
Testaukseen pätee kaksi perussääntöä:
- Älä testaa, jos et ole valmis muuttamaan toimintaasi. Testiraportti itsessään ei muuta mitään. Sen täytyy kääntyä toimenpiteiksi. Tämä pätee sekä toimittajaan että tilaajaan.
- Ajattele testaamista yhteistoimintana, joka onnistuu, kun (pieniä tai suuria) ongelmia löydetään. Päätarkoitus on yhteistyössä ohjelmistokehittäjän tai käyttöönottokumppanin kanssa saavuttaa haluttu laatutaso — ei osoittaa jommankumman osapuolen toimintaa virheelliseksi.
Ohjelmistotestaus ja laadunvalvonta on kehittynyt vuosikymmenten varrella systemaattiseksi menetelmäksi. Se pitää sisällään parhaita käytäntöjä, työkaluja ja työhön erikoistuneita asiantuntijoita. Se vähentää liiketoiminnan riskejä, alentaa kehityskustannuksia, varmistaa hyvän käyttäjäkokemuksen ja alentaa ylläpito- ja jatkokehityskustannuksia.
Moni bisnespuolen liiketoiminnan kehittäjä voisi lainata näitä metodeja myös bisneskehityksen laadun varmistamiseen!
Ota yhteyttä!
Onnistunut testaus vaatii suunnitelmallisuutta ja koordinointia. Jos tarvitset ammattitaitoista apua yrityksesi sovellusten ja järjestelmien kattavaan testaamiseen ennen käyttöönottoa, ole yhteydessä meihin. Me autamme!
Ville Luukkonen
Ville tukee Fellowmindin asiakkaiden muutos- ja kehityshankkeita etsimällä kokeneet ja oikeat asiantuntijat muutosten toteuttamiseen laajasta ammattilaisten verkostostamme. Jos tarvitset ulkopuolista ammattilaista projektinhallintaan, ketterän kehittämisen ohjaamiseen, testauksen hallintaan tai arkkitehtuuriin, ota yhteyttä Villeen: ville.luukkonen@fellowmind.fi tai +358 50 355 9014.