Hyppää sisältöön
Mitä on ohjelmistotestaus

Tämä artikkeli kertoo kattavasti ohjelmistotestauksesta. Alla olevasta menusta voit hypätä eri kohtiin artikkelissa.

Mitä on ohjelmistotestaus?

“Ohjelmistotestaus on tiedon tuottamista testauksen kohteena olevan ohjelmiston laadusta ja siihen liittyvistä riskeistä.”

Yllä on yksi määritelmä ohjelmistotestauksesta. Näitä määritelmiä on lukemattomia, joten emme halua linjata mitään yhtä ja “oikeaa” VALAn mielipidettä siihen, mitä ohjelmistotestaus on.

Sen sijaan annamme puheenvuoron VALAn ammattilaisille:

“Ohjelmistotestaus on samaan aikaan tylsää ja jännää; tylsää silloin, kun kaikki toimii niin kuin on haluttu ja suunniteltu, jännää silloin, kun jotain odottamatonta tapahtuu. Molemmissa tapauksissa ohjelmistotestaus tarjoaa palautetta testattavasta kohteesta.”

“Ohjelmistotestauksella todennetaan, toimiiko ohjelmisto kuten on tarkoitus ja selvitetään, vastaako se sille asetettuja toiminnallisia vaatimuksia, ei-toiminnallisia vaatimuksia ja liiketoimintavaatimuksia.”

“Ohjelmistotestaus tuottaa tietoa. Kun se tehdään oikein, tietoa on riittävästi, ja se on siinä muodossa, että sitä hyödyntävät ihmiset voivat tehdä valveutuneita päätöksiä seuraavista toimenpiteistä.”

“Ohjelmistotestaus on ohjelmiston laadun varmistamista.”

Ohjelmistotestaus tarkoittaa eri ihmisille hieman eri asioita. Tai ainakin ihmiset korostavat siihen liittyen eri asioita.

Lienee kuitenkin selvää, että ainakin seuraavat asiat pätevät siihen, vastaajasta riippumatta: 

– Ohjelmistotestaus on tietyn ohjelmiston osan, ohjelmiston tai ohjelmistojen tutkimista, arvioimista ja testaamista

– Ohjelmistotestaus tuottaa tietoa, jota voidaan käyttää hyväksi ohjelmiston parantamiseen

Miksi ohjelmistotestaus on tärkeää?

Yhden ”totuuden” sijaan lähdimme selvittämään tätäkin useilta alan ammattilaisilta. Kysyimme siis VALAlaisilta, miksi ohjelmistotestaus on tärkeää ja mitkä sen hyödyt ovat.

Vastauksia tuli laidasta laitaan, mikä kuvastaa testauksen monia hyötyjä. Ehkä selkein esille noussut yhteinen tekijä oli, että ohjelmistotestaus tuottaa tietoa, tietoa monista eri asioista ja moniin eri tarkoituksiin.

Brittifilosofi Francis Baconin kuolematon lause – “Tieto on valtaa” – pätee kenties jossain määrin tässäkin yhteydessä mutta ehkä sopivampi ilmaus olisi, että tieto on luottamusta. 

Kun tiedämme olevamme kärryillä ohjelmiston tilasta, voimme julkaista hyvillä mielin, sitten kun olemme ohjelmistotestauksen mukaan valmiita. Lisäksi, kun luotamme, että regressiotestaus löytää mahdolliset virheet, uskallamme kehittää ja julkaista, testaus siis ikään kuin lisää öljyä rattaisiin ja dynamiikkaa kehitykseen. 

Sitten on tietysti se itsestään selvä, mutta samalla kenties parhaiten testauksen hyötyä kuvaava asia, että ilman testausta voi tuotantoon päästä softaa mikä ei tavalla tai toisella aja tarkoitustaan ja/tai palvele sen käyttäjää oletetulla tavalla.

Mitkä ovat ohjelmistotestauksen hyödyt?

Ohjelmistotestaus tuo hyötyjä softan kehitysvaiheeseen esimerkiksi lisäämällä luottamusta, läpinäkyvyyttä ja palautteen määrää. Kaikki tämä parantaa kehitystiimin tehokkuutta, mikä puolestaan näkyy esimerkiksi kustannussäästöinä ja kaikista tärkeimpänä, parantuneena laatuna. Parantunut laatu taas vaikuttaa positiivisesti asiakastyytyväisyyteen.

VALA group toteutti jälleen kävijäkyselyn Suomen suurimmassa testausalan tapahtumassa Testing Assemblyssa syksyllä 2022. Kysyimme 63 testausalan ammattilaiselta muun muassa testauksen suurimpia vahvuuksia. 

Alla kyselyn mukaisesti viisi testauksen suurinta vahvuutta.

Testauksen suurimmat vahvuudet suomalaisten laadunvarmistuksen ammattilaisten mukaan.

Ohjelmistotestauksen hyödyt

Käydään vielä tarkemmin läpi yllä mainittuja hyötyjä. 

Parantunut asiakastyytyväisyys

Tämä lienee yksi testauksen helpoimmin perusteltavista hyödyistä. Testauksellahan pyritään löytämään ohjelmistosta ongelmakohtia, varsinaisia bugeja ja yleisesti parannettavia asioita. Kun näitä löydetään ja ne korjataan/parannetaan, paranee ohjelmiston laatu ja sen käyttäjistä tulee tyytyväisempiä. 

Kasvanut luottamus tuotteen laatuun 

Luottamus softan kehittämiseen on erittäin tärkeää kehitystiimille. Tällä tarkoitetaan sitä, että kehitystiimi luottaa, että se voi tehdä muutoksia softaan ilman että mitään suurempaa menee “rikki” ja että jos jotain tapahtuu, se ainakin huomataan automaattisissa regressiotesteissä. 

Regressiotestien lisäksi kaikki muukin testaaminen lisää luottamusta tuotteen laatuun, kun tiimi tietää tarkasti mitä kyseinen softaversio pitää sisällään. Tärkeintä tässäkin kohtaa on kuitenkin lopulta loppuasiakkaan luottamus, mikä luonnollisesti kasvaa sitä mukaa, mitä enemmän laadusta on vakuuttavia näyttöjä. Mietipä vaikka jotain brändiä mitä pidät hyvin laadukkaana, mistä se johtuu? Todennäköisesti lukuisista laadukkaista omakohtaisista kokemuksista.

Laadun tuominen näkyväksi liiketoiminnalle

Testaaminen tuo ratkaisun haasteeseen, missä kehitystiimin on hankala perustella tiimin resursointia ja käytettyä aikaa jne. Kun tuotteen laatu saadaan esitettyä numeerisesti ja/tai graafisesti käyttäen hyödyksi testaamisen tuottamia metriikoita, pystytään laatua kuvaamaan aivan eri tavalla ymmärrettävästi myös liiketoiminnan ihmisille. 

Laadun tuominen näkyväksi kehitystiimille

Kun kehitystiimi voi luottaa siihen, että sillä on riittävän hyvä kuva softan laadun tasosta, sen on helpompi tehdä perusteltuja päätöksiä esimerkiksi tuotantoon viemisestä. 

Laadun tekeminen näkyväksi tarkoittaa myös sitä, kuinka hyvin tehty testaus osoittaa sen arvoa muille sidosryhmille. 

Jatkuva ja nopea palautteenanto

Mieti jos saisit omasta työstäsi aina lähes välittömästi palautetta, kuinka paljon oppisitkaan. Kaikki tietävät miten hyödyllistä rakentavan palautteen saaminen on kehittymisen kannalta, oli aihe mikä hyvänsä. Ei siis ole ihme, että jatkuva ja nopea palautteen anto/saaminen on myös yksi testauksen tärkeimpiä hyötyjä.

Mitä ovat testauksen osa-alueet? 

Nyt tiedämme mitä ohjelmistotestaus on ja miksi se on tärkeää ja hyödyllistä. Mennään siis seuraavaksi hieman syvemmälle. 

Ohjelmistotestaus jakautuu moniin eri osa-alueisiin ja tasoihin ja myös näistä puhuttaessa on lähes kaikilla asiantuntijoilla omat mielipiteensä eikä asiasta ole yhtä oikeaa totuutta. Alla olevassa kuvassa on yksi esitystapa testauksen tasoista. Kuvan jälkeen kerromme lisää näistä sekä muutamasta muusta testauksen tasosta/ osa-alueesta.

Ohjelmistotestauksen tasot
Ohjelmistotestauksen tasot

1. Yksikkötestaus

Mitä on yksikkötestaus? 

Yksikkötestit ovat alhaisin testauksen taso, joiden tarkoituksena on varmistaa, että koodin pienimmät erilliset osat toimivat tarkoitetulla tavalla. Yksikkötestauksen edellytyksenä on, että koodia kirjoitetaan pieninä toisistaan erillisinä osina/yksiköinä, jolloin kullekin osalle voidaan kirjoittaa omat yksikkötestit. Yksikkötestit testaavat yleensä yhden osan toiminnallisuutta välittämättä riippuvuuksista muihin osiin.

Yksikkötestejä kirjoittavat yleensä ohjelmistokehittäjät sitä mukaan, kun he kirjoittavat varsinaisia ohjelmiston koodia. Yksikkötestien kirjoittaja tietää koodin rakenteen ja käyttää sitä hyödyksi testien kirjoittamisessa. Tästä syystä yksikkötestaus on niin sanottua ”white box” -testausta

Miksi yksikkötestaus on tärkeää?

Hyvin ylläpidetyt yksikkötestit pienentävät riskiä virheiden sattumiselle, kun kyseiseen ohjelmiston osaan tehdään muutoksia myöhemmin. Se antaa ensimmäisen ja nopeimman palautteen ohjelmistokehittäjälle mahdollisista virheistä ja seuraavalle testauksen tasolle pääsee todennäköisemmin toimivaa koodia.

2. Integraatiotestaus

Mitä on integraatiotestaus? 

Integraatiotestauksessa testataan pääsääntöisesti järjestelmän eri osien keskinäistä kommunikaatiota, sitä miten hyvin ne “juttelevat” keskenään eli toimiiko niiden välinen integraatio.

Miksi integraatiotestaus on tärkeää?

Integraatiotestaukseen siirrytään, kun kaikki yksikkötestit on läpäisty.Tarkoituksena on testata, että useampi ohjelmiston osa toimii yhdessä tarkoitetulla tavalla. Näin saadaan kiinni ongelmia, jotka eivät ilmene yksittäisten osien sisäisellä testauksella. 

Integraatiotestaus voidaan aloittaa, kun testaukseen liittyvät ohjelmiston osat/moduulit ovat valmiina testattavaksi eli ei tarvitse odottaa kaikkien järjestelmän osien valmistumista. Näin saadaan nopeampi palaute kuin odottamalla järjestelmätestauksen tuloksia.

Integraatiotestaus ei ota kantaa koodin osien sisäiseen rakenteeseen (”black box” -testaus) ja toimintaan, vaan niiden väliseen kommunikaatioon ja toimintaan kokonaisuutena. Integraatiotesteistä vastaa yleensä kehittäjien sijasta testaajat.

3. Järjestelmä eli systeemitestaus

Mitä on järjestelmästestaus eli systeemitestaus? 

Järjestelmätestaus tai Systeemitestaus keskittyy koko järjestelmään ja eri variaatioihin sen käytössä. 

Miksi järjestelmätestaus on tärkeää?

Järjestelmätestausta varten kaikki ohjelmiston osat ja integraatiot yhdistetään ja testaus pyritään suorittamaan hyvin tuotantoympäristöä vastaavassa tilassa. Tarkoituksena on varmistaa, että sovelluksen toiminta vastaa liiketoiminnan spesifikaatioita. Järjestelmätestauksessa käytetään yleensä sekä toiminnallista että ei-toiminnallista testausta.

4. UAT eli hyväksymistestaus 

Mitä on hyväksymistestaus? 

Hyväksymistestaus on testauksen osa-alue, jossa loppuasiakas itse, tai heidän edustajansa, tarkastaa jo valmiin tai lähes valmiin tuotteen, ja testaa vastaako se oikeita käyttötapausten vaatimuksia. Hyväksymistestaus vaatii usein hyvää liiketoiminta-alueen ymmärrystä, ja tietoa asiakkaiden vaatimuksista ja tavoista toimia, sekä mahdollisesti alan säädöksistä ja lainsäädännöstä. Hyväksymistestaus on yleensä pelkästään toiminnallista testausta.

Miksi hyväksymistestaus on tärkeää?

Tässä vaiheessa on tärkeää yhdessä toimittajan sekä tilaavan osapuolen kanssa varmistua siitä, että kehitetty palvelu vastaa alkuperäistä tarkoitustaan ja sille asetettuja vaatimuksia ja tavoitteita. Voisi ajatella, että vaihe vastaa perinteisen rakennusprojektin lopputarkastusta, jossa varmistetaan että lopputulos on se mitä on tilattu, löytyykö palvelusta vielä kehitettäviä asioita tai bugeja ja voidaanko kehitystiimille antaa hyväksyntä heidän työlleen.

Muita testauksen tasoja tai osa-alueita

Smoke testaus

Mitä on smoketestaus? 

EI savua ilman tulta. Savutestaus tai smoke testaus on ikäänkuin alustava chekkaus siitä, että sovelluksen pääominaisuudet toimivat niin hyvin, että voidaan siirtyä tiukempaan testaamiseen. Sovelluksen tulee siis läpäistä smoke testaus tai ennen kuin sitä voidaan testata lisää. 

Miksi smoketestaus on tärkeää?

Smoke-testauksen suurin hyöty on sen nopeus. Smoke-testauksessa on tarkoitus suorittaa vain pieni määrä testejä, joilla saadaan nopea palaute sovelluksen tilasta. Smoke-testien läpäistyä voidaan siirtyä seuraaviin enemmän aikaa vieviin testausvaiheisiin. 

Regressiotestaus

Mitä on regressiotestaus? 

Regressiotestaus toimii hieman eri lähtökohdasta kuin toiminnallisessa (ja ei-toiminnallisessa) testauksessa missä pyritään löytämään mahdollisimman paljon uusia virheitä ja virhetilanteita; Regressiotestaus taas tarkistaa, että ohjelmistoon tehdyt muutokset eivät ole rikkoneet jo toimivaksi todettuja ominaisuuksia. Samalla tarkistetaan, että jo löydetyt virheet ovat pysyneet korjattuina.

Miksi regressiotestaus on tärkeää?

Regressiotestauksella saadaan kiinni vaikeasti havaittavia ohjelmiston bugeja. Ne ovat vaikeasti havaittavia, koska ne tapahtuvat ohjelmiston muissa osissa kuin mihin varsinaiset muutokset tehtiin. Kattava testiautomaatio helpottaa helpottaa regressiotestauksessa, joka voi olla manuaalisesti suoritettuna hyvin aikaa vievää.

Suorituskykytestaus

Mitä on suorituskykytestaus? 

Suorituskykytestaus on ei-toiminnallista testausta, jossa testataan muita kuin näkyviä toiminnallisuuksia. Suorituskykytestaus testaa järjestelmän suorituskykyä eli sitä miten hyvin se kestää paineen alla esimerkiksi käyttäjämäärien noustessa ruuhkahuippuina tai vaikka uuden tuotteen lanseerauksen yhteydessä. 

Miksi suorituskykytestaus on tärkeää?

Suorituskykytestauksella voidaan pienentää riskiä ohjelmiston “down timestä” varsinkin silloin kun käyttäjämäärät ovat suurimmillaan.

Mitä ohjelmistotestaus siis on? Yhteenveto

Kuten sanottua, on miltei mahdotonta määritellä ohjelmistotestausta täydellisesti, koska jokaisella alan ihmisellä tuntuu olevan sille hieman eri määritelmä. 

Selkein yksittäinen yhteinen tekijä VALA groupin testausalan ammattilaisten mielestä on kuitenkin tiedon tuottaminen. Ohjelmistotestaus siis tuottaa tietoa, jota käytetään hyväksi, jotta ohjelmistosta saataisiin parempi, jolla taas pyritään parantamaan sen käyttökokemusta. 

Parantunut käyttökokemus taas usein johtaa liiketoimintahyötyihin tavalla tai toisella, esimerkiksi asiakas- tai työntekijätyytyväisyyden kautta.

Mitä on ohjelmistotestaus tiivistyskuva
Mitä on ohjelmistotestaus yhteenvetokuva

Etsi