Mitä ohjelmistotestaus on?

By Andreea Draniceanu

Tämä kattava opas käsittelee ohjelmistotestausta ja esittelee keskeiset käsitteet sekä käytännön työkalut aloittelijoille ja asiantuntijoille. Tutustu manuaalisen ja automaatiotestauksen, toiminnallisen ja ei-toiminnallisen testauksen eroihin sekä siihen, miten ohjelmistotestauksen elinkaarta hallitaan.

Laadunvarmistus on yleistymässä jatkuvasti. Asiantuntijat arvioivat, että pelkästään Yhdysvalloissa testaustehtävien määrä kasvaa 25 % seuraavan vuosikymmenen aikana. Jos tämä kiinnostaa sinua, saatat pohtia, mistä ohjelmistotestauksen opiskelun voisi aloittaa.

Tässä artikkelissa vastaan kysymyksiin, joiden avulla pääset alkuun ohjelmistotestauksessa. Käyn läpi, mitä ohjelmistotestaus on, tärkeimmät testauksen käsitteet sekä joitakin harkitsemisen arvoisia ohjelmistotestauksen työkaluja. 

Ohjelmistotestaus selitettynä

Kaikista elinkaaren aikaisista, sekä staattisista että dynaamisista toiminnoista koostuva prosessi, joka liittyy komponentin tai järjestelmän ja siihen liittyvien työtuotteiden suunnitteluun, valmisteluun ja arviointiin sen määrittämiseksi, täyttävätkö ne määritellyt vaatimukset, sen osoittamiseksi, että ne soveltuvat käyttötarkoitukseensa, sekä vikojen havaitsemiseksi.

ISTQB:n sanasto

Ohjelmistotestauksella on tärkeä rooli ohjelmistokehitysprosessissa, sillä se varmistaa, että ohjelmistosovellus toimii tarkoitetulla tavalla ja täyttää loppukäyttäjien vaatimukset ja odotukset.

Tavoitteena on tunnistaa ohjelmistosovelluksen viat, virheet ja epäjohdonmukaisuudet ennen sen julkaisemista yleisölle. Testauksessa ohjelmistoa käytetään erilaisissa olosuhteissa, kokoonpanoissa ja tilanteissa sen varmistamiseksi, että se toimii oikein ja tehokkaasti.

Jos olet kiinnostunut siitä, miten voit aloittaa ohjelmistotestauksen parissa, tässä on luettelo yleisistä laadunvarmistuksen työhaastattelukysymyksistä (ja vastauksista!).

Ohjelmistotestauksen elinkaari

Ohjelmistotestauksen elinkaari (STLC) on prosessi, jota ohjelmistotestaajat noudattavat varmistaakseen, että testattava sovellus täyttää määritellyt laatustandardit ja vaatimukset. STLC koostuu yleensä useista vaiheista, joiden tarkoituksena on varmistaa, että ohjelmistosovellus testataan perusteellisesti ja että se saavuttaa halutun laatutason ennen sen julkaisemista loppukäyttäjille. Ohjelmistotestauksen elinkaaren vaiheet ovat seuraavat:

Vaatimusanalyysi

Tässä vaiheessa ohjelmistotestaajat analysoivat vaatimukset ja määritykset. He tunnistavat toiminnalliset ja ei-toiminnalliset vaatimukset, perehtyvät ohjelmistosovelluksen tarkoitukseen ja kohdeyleisöön sekä kehittävät niiden perusteella testitapauksia ja -skenaarioita.

Testauksen suunnittelu

Tässä vaiheessa testaustiimi määrittää testauksen laajuuden, testaustavan ja testaukseen tarvittavat resurssit. Testaussuunnitelmassa yksilöidään myös testausprosessiin liittyvät riskit ja rajoitteet sekä määritellään testauksen aikataulu.

Testauksen suunnittelu

Tässä vaiheessa testaustiimi suunnittelee testitapaukset ja -skenaariot vaatimusten ja määritysten perusteella. He tunnistavat myös testaukseen tarvittavat testitiedot ja kehittävät testikomentosarjoja, jotka automatisoivat testausprosessin.

Testauksen suorittaminen

Testaajat suorittavat edellisessä vaiheessa suunnitellut testitapaukset ja -skenaariot. Testitulokset dokumentoidaan ja kaikista ohjelmistosovelluksessa havaituista vioista tai virheistä ilmoitetaan.

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

Testauksen raportointi

Tässä vaiheessa testaustiimi laatii raportin testituloksista ja testauksen aikana havaituista vioista. Raportti voi sisältää suosituksia vikojen korjaamiseksi ja ohjelmistosovelluksen yleisen laadun parantamiseksi.

Testauksen päättäminen

Tämä on viimeinen vaihe, jossa testaustiimi arvioi testausprosessia ja tunnistaa kehityskohteita. He laativat myös testauksen päätösraportin, joka sisältää yhteenvedon testausprosessista ja testauksen tuloksista.

Ohjelmistotestauksen elinkaari on jatkuva prosessi, joka edellyttää testaustiimin ja kehitystiimin välistä yhteistyötä sen varmistamiseksi, että ohjelmistosovellus saavuttaa halutun laadun ja toiminnallisuuden tason.

Ohjelmistotestauksen tyypit 

Laadunvarmistustiimit käyttävät erilaisia ohjelmistotestauksen tyyppejä projektin kontekstin ja vaatimusten mukaan.

Voimme erottaa manuaalisen testauksen ja automaatiotestauksen toisistaan sen perusteella, miten testit suoritetaan. Testattavan kohteen perusteella voimme erottaa toiminnallisen ja ei-toiminnallisen testauksen. Käytettyjen menetelmien perusteella meillä on staattista ja dynaamista testausta. Lähestymistavan perusteella voimme tunnistaa lasilaatikko- ja mustalaatikkotestauksen tyypit. Lisäksi on olemassa tutkivaa testausta, savu- ja järkevyystestausta sekä regressiotestausta. Kaikki nämä testaustyypit voivat olla osittain päällekkäisiä sen mukaan, miten niitä käytetään. 

Manuaalinen testaus

Manuaalisessa testauksessa testaus tehdään itse ilman automaattisia työkaluja tai skriptejä. Se voi olla alttiimpaa virheille ja kestää yleensä kauemmin. 

Automaatiotestaus

Automaatiotestauksen suorittaa kone, joka toteuttaa etukäteen kirjoitettuja skriptejä. Se edellyttää enemmän teknistä asiantuntemusta, kuten ohjelmointikielen ja Seleniumin kaltaisten automaatiotyökalujen tuntemusta. Se voi olla manuaalista testausta kalliimpaa, eikä tiettyjä testausprosessin osa-alueita voida automatisoida.

Toiminnallinen testaus

Toiminnallisessa testauksessa varmistetaan, mitä sovellus tekee. Toiminnallisessa testauksessa tarkistetaan ohjelmistosovelluksen ominaisuudet ja toiminnot sekä varmistetaan, että ne täyttävät vaatimukset ja määritykset.

Ei-toiminnallinen testaus

Toisin kuin toiminnallisessa testauksessa, ei-toiminnallisissa testeissä keskitytään siihen, miten sovellus käyttäytyy. Ei-toiminnallisella testauksella on useita alatyyppejä sen mukaan, mikä testien päätavoite on. Käsittelen tässä artikkelissa vain muutamia niistä. 

Suorituskykytestaus: Mittaa ohjelmistosovelluksen vasteajan, läpimenon ja skaalautuvuuden erilaisissa kuormitusolosuhteissa. Se tarkistaa ohjelmistosovelluksen kyvyn käsitellä useita käyttäjiä ja tapahtumia samanaikaisesti sekä varmistaa, että se toimii tehokkaasti huippukuormitusten aikana.

Kuormitustestaus: Simuloi todellisia käyttäjäkuormia, ja sen avulla määritetään järjestelmän toiminta normaali- ja huippuolosuhteissa. Sitä käytetään selvittämään, onko sovelluksen isännöintiin käytetty infrastruktuuri riittävä, ja sen avulla saadaan selville, kuinka monta samanaikaista käyttäjää sovellus pystyy käsittelemään sekä millaista laitteistoa, verkkokapasiteettia ja muuta vastaavaa sovellus tarvitsee, jotta useammat käyttäjät voivat käyttää sitä.

Rasitustestaus: Sisältää testaamisen normaalin kapasiteetin yli, usein rikkoutumispisteeseen asti, jotta tuloksia voidaan tarkkailla. Tavoitteena on varmistaa, ettei ohjelmisto kaadu tilanteissa, joissa laskentaresurssit ovat riittämättömät, kuten muistin, levytilan tai verkkopyyntöjen osalta.

Turvallisuustestaus: Varmistaa, että ohjelmistosovellus on turvallinen ja suojattu luvattomalta käytöltä. Turvallisuustestauksessa tarkistetaan ohjelmistosovelluksen turvallisuusprotokollien haavoittuvuudet ja heikkoudet sekä tunnistetaan mahdolliset turvallisuusuhat.

Käytettävyystestaus: Käytetään arvioimaan, onko sovellus helppokäyttöinen. Siinä tarkistetaan, kuinka helposti käyttäjät voivat navigoida ohjelmistosovelluksessa ja suorittaa tarkoitetut toiminnot tehokkaasti.

Saavutettavuustestaus: Saavutettavuustestausta pidetään käytettävyystestauksen alalajina, ja sen avulla varmistetaan, että testattavaa sovellusta voivat käyttää myös vammaiset henkilöt.

Lokalisointitestaus: Ohjelmistotestauksen tyyppi, jossa ohjelmiston käyttäytymistä testataan tietyn alueen, lokaalin tai kulttuurin näkökulmasta. Lokalisointitestauksessa huomioitavia ominaisuuksia ovat esimerkiksi oikein käännetty teksti, valuutta, mittayksiköt, sallitut erikoismerkit ja puhelinnumeromuodot.

Yhteensopivuustestaus: Testaa, pystyykö sovellus toimimaan riittävän hyvin eri selaimissa, tietokannoissa, laitteistoissa, käyttöjärjestelmissä, mobiililaitteissa ja verkoissa.

Staattinen ja dynaaminen testaus

Staattinen testaus perustuu työtuotteiden manuaaliseen tarkasteluun eli katselmointeihin tai koodin työkalupohjaiseen arviointiin, kuten koodikatselmointeihin, tai muiden työtuotteiden staattiseen analyysiin. Sitä voidaan suorittaa muun muassa määrityksille, liiketoimintavaatimuksille, hyväksymiskriteereille, lähdekoodille, testaussuunnitelmille, testitapauksille, testiskripteille ja käyttöoppaille. 

Dynaaminen testaus on testattavan ohjelmiston varsinainen suorittaminen. Se voi olla manuaalista tai automatisoitua, tai

Lasilaatikko- ja mustalaatikkotestaus 

Valkolaatikkotestaus on testaustyyppi, jossa testaaja tuntee sovelluksen koodin sisäisen rakenteen, kun taas mustalaatikkotestaus suoritetaan ilman tarvetta ymmärtää lähdekoodia. Kummassakin testaustyypissä käytetään erilaisia testaustekniikoita, kuten vastaavuusluokittelua, raja-arvoanalyysiä ja päätöstaulukkoa mustalaatikkotestauksessa sekä lausekattavuutta ja päätöskattavuutta valkolaatikkotestauksessa.

Tutkiva testaus

Tutkiva testaus on kokemukseen perustuva testaustyyppi. Se sisältää mahdollisimman vähän suunnittelua ja mahdollisimman paljon testien suorittamista. 

Testien suunnittelu ja suorittaminen tehdään rinnakkain, yleensä ilman testiehtojen, testitapausten tai testikomentosarjojen muodollista dokumentointia.

Se on hyödyllinen lähestymistapa silloin, kun määrityksiä ei ole tai ne ovat puutteellisia ja aikaa on erittäin vähän, tai se toimii erinomaisesti automatisoidun testauksen täydentäjänä.

Savutestaus 

Savutestaus, josta käytetään joskus nimityksiä ”koontiversion varmennustestaus” tai ”luottamustestaus”,  on ohjelmistotestausprosessi, jossa testaajat varmistavat, onko käyttöön otettu koontiversio vakaa. Savutestauksella validoidaan, että voimme jatkaa ohjelmiston muuta testausta. Se koostuu vähimmäismäärästä testejä, jotka suoritetaan jokaiselle koontiversiolle ohjelmiston kriittisten toimintojen testaamiseksi. 

Järkevyystestaus

Järkevyystestaus on ohjelmistotestaustyyppi, joka suoritetaan sen jälkeen, kun ohjelmiston koontiversio, joka sisältää vähäisiä koodi- tai ominaisuusmuutoksia, on toimitettu. Sen tarkoituksena on varmistaa, että virheet on korjattu eikä muutoksista ole aiheutunut uusia ongelmia. Tavoitteena on varmistaa, että ehdotettu ominaisuus toimii suurin piirtein odotetulla tavalla.

Regressiotestaus

Regressiotestaus on ohjelmistotestaustyyppi, jossa olemassa olevat toiminnot testataan uudelleen sen varmistamiseksi, että ne toimivat edelleen oikein ohjelmistosovellukseen tehtyjen muutosten tai päivitysten jälkeen. Regressiotestaus varmistaa, etteivät uudet muutokset tai päivitykset ole vaikuttaneet ohjelmistosovelluksen olemassa oleviin toimintoihin.

Yhteensopivuustestaus

Yhteensopivuustestauksella varmistetaan, että ohjelmistosovellus toimii oikein eri alustoilla, laitteilla ja selaimilla. Siinä tarkistetaan, että ohjelmistosovellus on yhteensopiva erilaisten laitteisto- ja ohjelmistokokoonpanojen kanssa.

Tekoälyn luoma kuva työskentelevistä roboteista kokoonpanolinjalla havainnollistamassa ohjelmistotestauksen toimintaa.

Testauksen tasot

Ohjelmistotestaus voidaan luokitella eri tasoihin testauksen laajuuden ja tavoitteiden perusteella. Seuraavat ovat ohjelmistotestauksen yleiset tasot:

Yksikkötestaus

Yksikkötestaus on testauksen ensimmäinen taso, ja siinä keskitytään koodin yksittäisten komponenttien tai yksiköiden testaamiseen erillään. Yksikkötestauksella varmistetaan, että kukin koodiyksikkö toimii odotetulla tavalla ja täyttää määritetyt vaatimukset.

Integraatiotestaus

Integraatiotestauksessa keskitytään ohjelmistosovelluksen eri moduulien tai komponenttien välisten vuorovaikutusten testaamiseen. Integraatiotestauksella varmistetaan, että moduulit tai komponentit toimivat yhdessä tarkoitetulla tavalla ja täyttävät määritetyt vaatimukset.

More Articles

Järjestelmätestaus

Järjestelmätestaus on testauksen taso, jolla koko ohjelmistosovellus testataan täydellisenä järjestelmänä. Järjestelmätestauksella varmistetaan, että ohjelmistosovellus täyttää määritetyt vaatimukset ja toimii odotetulla tavalla erilaisissa tilanteissa.

Käyttäjähyväksyntätestaus

Hyväksymistestaus on testauksen taso, jolla ohjelmistosovellusta testataan loppukäyttäjän näkökulmasta. Hyväksymistestauksella varmistetaan, että ohjelmistosovellus täyttää loppukäyttäjän tarpeet ja vaatimukset sekä toimii odotetulla tavalla käyttäjäympäristössä. Yleisiä käyttäjähyväksyntätestauksen tyyppejä ovat alfa- ja betatestaus.

Jokainen testauksen taso on tärkeä ja palvelee tiettyä tarkoitusta ohjelmistotestausprosessissa. Testausta tulisi tehdä jokaisella tasolla, jotta voidaan varmistaa, että ohjelmistosovellus saavuttaa halutun laadun ja toiminnallisuuden tason sekä toimii odotetulla tavalla erilaisissa tilanteissa. 

Ohjelmistotestauksen periaatteet

ISTQB:n määrittelemänä testauksella on seitsemän pääperiaatetta:

  1. Testaus osoittaa vikojen olemassaolon, ei niiden puuttumista: Et voi taata, että sovelluksessa ei ole vikoja, vain siksi, että se on testattu. Testauksen jälkeen luottamus tuotteeseen voi kuitenkin kasvaa.
  2. Tyhjentävä testaus on mahdotonta: Useimmat sovellukset ovat erittäin monimutkaisia, joten kaikkien mahdollisten yhdistelmien ja muunnelmien testaaminen on mahdotonta, etenkin koska myös testausaika ja resurssit ovat rajalliset.
  3. Varhainen testaus: Mitä aikaisemmin virheet ja puutteet havaitaan ohjelmistokehityksen elinkaaren aikana, sitä helpompi ne on korjata. Tässä ketterä kehitys toimii oikein, sillä testaustoimet aloitetaan hyvin varhaisessa vaiheessa.
  4. Viat kasaantuvat: Tämä tarkoittaa, että alueilla, joilta on löydetty vikoja, on todennäköisesti vielä enemmän vikoja. Pareton periaatteen mukaan 80 % vioista voidaan löytää 20 %:sta toiminnallisuuksista.
  5. Torjunta-aineparadoksi: Samojen testien toistaminen kerta toisensa jälkeen päivittämättä niitä ei todennäköisesti paljasta uusia ongelmia. 
  6. Testaus riippuu kontekstista: Sovelluksia testataan eri tavoin niiden kontekstin perusteella – esimerkiksi API testataan eri tavalla kuin käyttöliittymä, ja verkkosovelluksia testataan eri tavalla kuin mobiili- tai työpöytäsovelluksia.  
  7. Virheettömyysharha: Lyhyesti sanottuna se, että viat on löydetty ja korjattu, ei tarkoita, että ohjelmisto olisi käyttäjilleen hyödyllinen.

Yhteenveto

Ohjelmistotestaus on erittäin monimutkainen ala, ja testausta voidaan suorittaa monin eri tavoin. On tärkeää mukauttaa testausstrategiaasi testattavan ohjelmistotuotteen kontekstin perusteella. Ohjelmistotestauksesta on saatavilla loputtomasti resursseja, kuten podcasteja, kirjoja ja paljon muuta.

Jos pidit tästä artikkelista, ole hyvä ja tilaa QA Leadin uutiskirje, jotta saat ensimmäisten joukossa tiedon uusista testaukseen ja laatuun liittyvistä julkaisuista.

Andreea Draniceanu
Hi there! My name is Andreea, I’m a software test engineer based in Romania. I’ve been in the software industry for over 10 years. Currently my main focus is UI test automation with C#, but I love exploring all QA-related areas 😊

You may also like