Ohjelmistotestauksen perusteet

Ohjelmistotestauksen perusteet


Testauksen tavoite ja bugeihin suhtautuminen

Lähtökohtaisesti onnistuneen testaamisen takaamiseksi tavoitteeksi tulisi asettaa sen osoittaminen, että ohjelma ei toimi määrittelyjen mukaisesti tai toimii jotenkin niin kuin sen ei pitäisi. Toisaalta tämä ei saa johtaa siihen, että yksittäisiä ohjelmoijia aletaan syyllistämään löytyneistä bugeista, vaan pidetään ilmapiiri rentona ja avoimena sekä puhutaan sovelluksen virheistä yksittäisten kehittäjien virheiden sijaan.

Kuka voi testata sovellusta?

Sovellustestauksen voi suorittaa testauksen tyypistä riippuen eri henkilöt. Esimerkiksi lähdekoodia tutkittaessa sovelluksen kehittäjä pystyy helpoiten ymmärtämään sen logiikan ja tehokkaasti etsimään bugeja. Tiettyjä erikoistumista vaativia testejä, kuten tietoturva-aukkojen etsimistä, varten puolestaan kannattaa usein hyödyntää erillisiä QA-ammattilaisia. Tai mikäli kyseessä on yksinkertaisia käyttöliittymään tai toiminnallisuuksiin liittyvien bugien etsimistä, voi sen suorittaa perustasolla lähes kuka vain projektin jäsen.

Lasilaatikkotestaus ja mustalaatikkotestaus

Sovellustestauksen kaksi yleisintä lähestymistapaa ovat kehittäjän ja käyttäjän näkökulmasta lasilaatikkotestaus (White box testing), jossa lähdekoodia tutkimalla pyritään löytämään bugeja, sekä mustalaatikkotestaus (Black box testing), jossa lähdekoodiin ei ole pääsyä, vaan testaus suoritetaan sovelluksen käyttöliittymän pohjalta.

Bugien luokittelu

Bugeja voidaan luokitella esimerkiksi seuraavanlaisesti:

  • Toiminnallisuus (jokin toiminto ei vastaa sen määrittelyä)
  • Turvallisuus (sovellus sisältää tietoturva-aukkoja)
  • Regressio (päivitykset koodiin hajottivat jonkin jo olemassa olleen toiminnallisuuden)
  • Suorituskyky (sovellus on hidas tai koodi suorittaa turhia funktiokutsuja)
  • UI (käyttöliittymä ei vastaa suunnitelmaa)
  • Integraatio (kaksi tai useampi erillinen komponentti eivät toimi yhdessä)

Testausmenetelmiä

1. Yksikkötestaus

Kehittäjien toteuttamia, nopeasti toteutettavia koodipohjaisia testejä, joilla voidaan testata koodin yksittäisten osien (mm. komponenttien, moduulien ja funktioiden) toimivuutta. Käytännössä testi voisi tarkoittaa, että tutkitaan, palauttaako jokin koodin funktio oikean tuloksen tietyillä lähtöarvoilla. Tällöin voidaan tehokkaasti tutkia koodin toimivuus silloin, kun tehdään muutoksia ja päivityksiä sovellukseen.

2. Integraatiotestaus

Varmistetaan, että erilliset komponentit tai moduulit koodissa toimivat keskenään. Esimerkiksi voitaisiin tutkia, toimiiko verkkokaupassa maksutoiminnallisuus oikein kolmannen osapuolen palvelun kanssa.

3. Järjestelmätestaus

Toisin kuin yksikkö- ja integraatiotestauksessa, järjestelmätestauksessa testataan koko järjestelmän toiminta yksittäisten osien sijaan. Testaus toteutetaan käyttäjän näkökulmasta ilman automatisointia, minkä vuoksi se vie yleensä paljon aikaa. Esimerkiksi verkkokauppaa testattaessa tutkittaisiin kaikki toiminnallisuudet rekisteröitymisestä tilauksen tekemiseen. Huomioitavaa on, että järjestelmätestausvaiheessa löytyvät bugit viittaavat siihen, että yksikkö- tai integraatiotestauksessa on puutteita.

4. Hyväksyttämistestaus

Sovellustestauksen taso, jossa tutkitaan, toteuttaako sovellus määritellyt vaatimukset ja onko se valmis toimitettavaksi asiakkaalle.

Testauksen tasot

Erilaisia testejä on lukuisia, ja yleiskuvan antamiseksi alla on listattu niistä muutama yleinen.

Funktionaalinen testaaminen

Sovellusta käyttämällä tutkitaan, toimiiko se odotetulla tavalla. Testaamisessa tulee hyödyntää määrittelyjä siitä, miten eri toiminnallisuuksien tulisi toimia.

Turvallisuustestaus

Turvallisuustestauksessa testataan, ettei sovelluksessa ole tietoturva-aukkoja, joiden avulla mm. voitaisiin päästä käsiksi käyttäjätietoihin tai suorittaa toimintoja, joita käyttäjien ei pitäisi pystyä suorittamaan. Ammattilaisten tulisi useimmiten olla vastuussa tästä testauksessa, sillä erityisesti monimutkaisilla sovelluksilla se vaatii paljon ammattitaitoa, ja haitat voivat olla huomattavia.

Tehokkuustestaus

Testataan, että sovellus avautuu ja toimii nopeasti sekä toimii hyvin suuren kuormituksen alla.

Käytettävyystestaus

Tutkitaan, että sovelluksen käyttöliittymä (UI) on intuitiivinen ja helppo käyttää. Tätä ei voida automatisoida, vaan testauksen suorittaa aina ihminen, jonka toimintaa usein valvoo ammattitaitoinen UI-suunnittelija.

Regressiotestaus

Tavoitteena on selvittää, ovatko uudet päivitykset sovelluksessa hajottaneet aiempian toiminnallisuuksia, tai onko sovellukseen ilmaantunut jo aiemmin korjattuja bugeja.

Staattinen analyysi

Analysoidaan koodia virheiden varalta suorittamatta koodia.

Savutestaus

Varmistetaan, että järjestelmä on tarpeeksi vakaa, ajamalla se minimitoiminnoilla, niin että mm. käyttäjät voivat suorittaa toimintoja, kuten kirjautua sisään ja tarkastella sivuja. Tarkoituksena on havaita perustason bugit, jotka estävät koko järjestelmän toiminnan.

Lopuksi

Esitellyt käsitteet, periaatteet ja testityypit luovat hyvän pohjan ohjelmistotestauksen ymmärtämiseen. Tärkeää on huomioida testaamisen merkitys niin taloudellisesta kuin asiakastyytyväisyydenkin näkökulmasta. Virheiden korjaaminen alkuvaiheessa on kummankin kannalta kannattavaa.

Erilaisten testauksen tasojen ja testityyppien ymmärtäminen on hyödyllistä kaikille alalla toimiville ja ohjelmistoprojekteissa mukana oleville, olipa sovelluskehittäjä tai ei. Toisaalta ohjelmistotestaus on sovelluskehityksen tavoin jatkuvassa kehityksessä, minkä vuoksi siinä voi tapahtua suhteellisen nopeasti suuriakin muutoksia. Esimerkiksi isona trendinä pidetään koneoppimisen hyödyntämistä parempien testaustuloksien kehittämiseen kustannustehokkaaksi.

Tarvitsetko ammattilaisten apua?

Kaipaatko apua sovelluksen kehittämiseen tai tarvitseeko valmis sovelluksesi testausta? Ota yhteyttä sivun alaosasta tai jätä yhteystietosi vaikka etusivulla, niin voimme keskustella siitä, miten Vertics voisi auttaa oman menestyksesi takaamisessa. Vertics on ohjelmistoratkaisuihin erikoistunut yritys, joka on tukenut lukuisia yrityksiä mm. sovelluskehityksen, käyttöliittymäsuunnittelun ja sovellusten ylläpitoon liittyvissä projekteissa.

Ota yhteyttä.Me vastaamme heti.

Tai ota suoraan yhteyttä meihin
Tai lähetä viesti lomakkeella

Lue myös