Ohjelmiston laadunvarmistajan opas regressiotestaukseen

By Andreea Draniceanu

Oletko koskaan koodannut korjausta, joka rikkoi jotain muuta? Regressiotestaus on salainen aseesi, jolla varmistat, etteivät uudet ominaisuudet riko vanhoja. Tämä opas avaa salaisuudet tämän olennaisen ohjelmistokehityskäytännön hallintaan!

Regressiotestaus on yksi tärkeimmistä testaustyypeistä missä tahansa ohjelmistokehitysprojektissa. Hyvin yleisellä tasolla tavoitteena on varmistaa, etteivät uudet kehitystyöt ole aiheuttaneet virheitä tai vikoja aiemmin toimineille alueille.

Työskennellessäni erilaisten projektien parissa eri liiketoiminta-alueilla olen oppinut, että jokaisella tiimillä on omat prosessinsa ohjelmiston regressiotestauksen suorittamiseen. Kaikilla onnistuneilla testaushankkeilla on kuitenkin joitakin yhteisiä piirteitä.

Tämä opas antaa sinulle tiedot regressiotestauksen hallitsemiseen. Siinä tutustutaan tehokkaiden regressiotestaustyökalujen valikoimaan prosessin sujuvoittamiseksi ja kehitystyönkulun varmistamiseksi. Kerron matkan varrella oppimistani asioista.

Mitä regressiotestaus on ohjelmistokehityksessä?

Uusien virheiden ilmaantuminen ja/tai ongelmien uusiutuminen on suhteellisen normaalia, kun ohjelmistoa päivitetään, muutetaan tai käytetään uudelleen muokatulla kohdealustalla. 

regression testing in software development screenshot

Jotta nämä virheet löydetään ennen ohjelmistopäivitysten julkaisemista tuotantoon, laadunvarmistustiimin tulisi keskittyä löytämään ne ajoissa – ja tässä regressiotestaus astuu kuvaan.

Regressiotestaus on testaustyyppi, jossa ohjelmistosovelluksen jo olemassa olevien ominaisuuksien toimivuus varmistetaan. Regressiotestaus suoritetaan jokaisen koodiin tehdyn muutoksen tai päivityksen jälkeen, jotta voidaan varmistaa, että olemassa olevat toiminnot toimivat tarkoitetulla tavalla ilman muutoksia tai lisäyksiä. Projektin laajuudesta riippuen voidaan käyttää joko manuaalista tai automatisoitua regressiotestausta.

Milloin regressiotestausta tulisi käyttää?

Regressiotestaus on tarpeen, kun olemassa olevaan koodikantaan tai sovellukseen lisätään uusia ominaisuuksia tai parannuksia. Se varmistaa, että kaikki nykyiseen sovellukseen lisätyt ominaisuudet tai tehdyt päivitykset toimivat moitteettomasti ja virheettömästi. Koodin yhteensopivuusongelmien todennäköisyys on suuri, koska kehittäjillä ja testaajilla on usein vaikeuksia jäljittää kaikkia koodin haaroja. Tämän vuoksi ohjelmiston (tai sovelluksen) regressiotestien suorittaminen auttaa heitä löytämään virheet aiemmin ja julkaisemaan ohjelmiston pienemmin riskein.

Regressiotestausta voidaan käyttää aina, kun käyttöönotto kestää odotettua kauemmin. Tässä tilanteessa testaajan tulee suorittaa regressiotestit päivittäin. Lisäksi viikoittaisia julkaisuja varten regressiotestaus on suositeltavaa suorittaa toiminnallisen testauksen jälkeen.

Automatisoitu regressiotestaus

Regressiotestikirjasto laajenee, kun tiimi lisää ohjelmistoon ominaisuuksia. Regressiotestikokonaisuus saattaa ajan mittaan kasvaa niin suureksi, että testejä on mahdotonta suorittaa manuaalisesti rajattujen Agile- jaettujen kehityssyklien aikana.

Regressiotestaus soveltuu parhaiten automatisoitavaksi, koska sen on oltava toistettavaa ja toistuvaa. Ennen jokaista julkaisua voit suorittaa perusteellisen regressiotestin ja kehittää suppeampia, nopeammin palautetta tuottavia testikokonaisuuksia regressioiden tarkistamiseen koodimuutosten (pikakorjausten) jälkeen. Tutustu ohjelmistotestaustyökaluihin, jotka ovat erityisen tehokkaita regressiotestaustilanteissa.

Milloin regressiotestaus suoritetaan?

Regressiotestaus on tarpeen aina, kun olemassa olevaan koodikantaan tai sovellukseen lisätään uusia ominaisuuksia tai parannuksia. Se varmistaa, että kaikki nykyiseen sovellukseen lisätyt ominaisuudet tai tehdyt päivitykset toimivat moitteettomasti ja virheettömästi. Koodin yhteensopivuusongelmien todennäköisyys on suuri, koska kehittäjillä ja testaajilla on usein vaikeuksia jäljittää kaikkia koodin haaroja. Tämän vuoksi ohjelmiston (tai sovelluksen) regressiotestien suorittaminen auttaa heitä löytämään virheet aiemmin ja julkaisemaan ohjelmiston pienemmin riskein.

Manuaalinen regressiotestaus on suoritettava, jos testiautomaatiota ei ole integroitu koontijärjestelmään ja/tai automatisoituja testiajoja ei ole ajoitettu säännöllisesti. Onko silloin tarpeen käydä läpi jokainen koodimuutos? Ei ole.

Regressiotestausta tarvitaan vain silloin, kun koodimuutos vaikuttaa tuotteen muihin osiin. Tämän selvittämiseksi on tutkittava, miten muutettu moduuli toimii vuorovaikutuksessa tuotteen muiden moduulien kanssa.

Useimmiten muutoksia tekevät kehittäjät ovat tietoisia mahdollisista vaikutuksista muihin moduuleihin ja koko tuotteen toimintaan, joten heidän tulisi pyytää regressiotestausta asianmukaisesti tarpeen mukaan.

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

Have an account? Log In

Kuka vastaa regressiotestauksesta?

Kun toiminnallinen testaus on valmis, regressiotestaus suoritetaan kaikkien muiden toimintojen toimivuuden tarkistamiseksi. Se kuuluu yleensä QA-tiimin vastuulle. Regressioprosessiin voidaan ottaa mukaan myös uusia testaajia, jotka eivät ole aiemmin testanneet ominaisuutta mutta osaavat suorittaa dokumentoidut testitapaukset. Näissä tapauksissa regressiotestitapaukset tulee kirjoittaa asianmukaisesti, jotta kuka tahansa tiimin uusi jäsen voi noudattaa niitä. 

Myös testaajilla, jotka eivät ehkä ole aiemmin suorittaneet toiminnallisia testejä mutta joilla on hyvä kokemus testattavien ominaisuuksien parissa työskentelystä, on hyvät mahdollisuudet löytää merkittäviä virheitä, jos sellaisia on otettu käyttöön.

Mistä tiedät, milloin regressiotestaus on valmis?

Sinun on löydettävä hienovarainen tasapaino sen välillä, mitä sinulla on aikaa ja resursseja kattaa regressiotestauksen osana, ja sen riskin välillä, jonka tiimi voi hyväksyä.

Tässä on joitakin seikkoja, jotka testaustiimi voi ottaa huomioon riskiä arvioidessaan:

  • Jos ohjelmiston käyttäjät käyttävät jotakin ominaisuutta paljon, sille tulisi antaa etusija regressiotestaussuunnitelmassa.
  • Tuotteen tekniset osa-alueet, jotka ovat aiemmin osoittautuneet vakaiksi ja joiden on tiedetty tuottavan hyviä testituloksia, ovat vähemmän riskialttiita, joten ohjelmistotestaajat voivat päättää olla sisällyttämättä niitä regressiotestaukseen.
  • Asiakkaiden tai sisäisen QA-tiimin aiemmin ilmoittamien virheiden analysointi voi auttaa tunnistamaan sovelluksen heikompia osa-alueita, joihin regressiotestaus tulisi kohdistaa.
  • Jos virheet ovat pysyneet pitkään avoimina ilman korjausta, niillä on vain vähäinen vaikutus käyttäjien työnkulkuihin ja käyttäjät ovat löytäneet niille kiertotapoja.

Regressiotestaustekniikat

Tärkeimmät regressiotestauksessa käytettävät tekniikat ovat: 

  • Täydellinen regressiotestaus, joka tunnetaan myös kaikkien testien uudelleensuorituksena
  • Regressiotestien valinta
  • Testitapausten priorisointi

Täydellinen regressiotestaus

Tässä menetelmässä regressiotestausta käytetään kaikissa aktiivisissa testikokonaisuuksissa. Vaikka tämä lähestymistapa vaatii paljon aikaa ja resursseja, se on turvallisin tekniikka kaikkien virheiden löytämisen ja korjaamisen varmistamiseksi, koska siinä saavutetaan suurin testikattavuus.

Tämän vuoksi on erityisiä tilanteita, joissa täydellinen regressiotestausstrategia toimii muita paremmin, esimerkiksi silloin, kun sovellus muutetaan uutta alustaa tai ohjelmointikieltä varten tai kun käyttöjärjestelmään tehdään merkittävä päivitys.

Testien valinta (tai osittainen regressiotestaus)

Tässä tekniikassa testikokonaisuudesta valitaan testitapauksia suoritettaviksi uudelleen. Testitapausten valinta perustuu moduuliin tehtyihin koodimuutoksiin.

Testitapausten priorisointi 

Tätä lähestymistapaa käytettäessä voit priorisoida tärkeimmät testitapaukset suoritettaviksi ensin regressiotestausprosessissa. Ne soveltuvat myös hyvin automatisoituun testaukseen. Testit tulisi priorisoida niiden epäonnistumisasteen, liiketoimintavaikutuksen ja käytettyjen toimintojen perusteella. 

Myös tosielämän tilanteisiin ja uusiin toiminnallisuuksiin liittyville testitapauksille tulisi antaa korkea prioriteetti.

Regressiotestaus ja uudelleentestaus

Toisin kuin regressiotestauksessa, jossa testaajat varmistavat olemassa olevan toiminnallisuuden toimivuuden, uudelleentestauksessa vahvistetaan, että virhe on korjattu. Uudelleentestaus keskittyy vain epäonnistuneisiin testitapauksiin ja sen tarkoituksena on varmistaa, onko testitapauksen tulos muuttunut. 

Ketterä regressiotestaus

Ketterässä ympäristössä uusia ominaisuuksia otetaan käyttöön jokaisessa sprintissä, ja regressiotestikokonaisuus tulisi pitää aina ajan tasalla, jotta kaikkien ominaisuuksien asianmukainen toiminta voidaan varmistaa sprintin jälkeen. Ketterissä ympäristöissä, joissa koodimuutoksia tehdään usein, tehokkaat QA-automaatiotyökalut voivat olla korvaamaton apu regressiotestauksen mukana pysymisessä. Regressiotestikokonaisuuteen tulisi jatkuvasti lisätä testitapauksia, jotka vastaavat kaikkia testattuja ja vakaita ominaisuuksia, ja testitapaukset, joita ei enää voida soveltaa, tulisi poistaa.

Visuaalinen regressiotestaus

Regressiotestausmenetelmää käytetään myös visuaalisessa regressiotestauksessa. Visuaalisessa regressiotestauksessa tarkistetaan kuitenkin vain ohjelmiston visuaaliset elementit. Toisin sanoen sillä varmistetaan, ettei koodimuutokset riko mitään ohjelmiston visuaalisen käyttöliittymän osaa.

Visuaalisessa regressiotestissä tarkistetaan, mitä käyttäjä näkisi sen jälkeen, kun järjestelmää on muutettu, vertaamalla ennen muutoksia ja niiden jälkeen otettuja tilannekuvia. 

More Articles

Yksikkötestaus ja regressiotestaus

Yksikkötestauksen tavoitteena on varmistaa, että yksittäiset koodiyksiköt toimivat itsenäisesti odotetulla tavalla. Se suoritetaan koodin kehittämisen aikana yksikkö kerrallaan, varhaisessa kehityssyklin vaiheessa. 

Regressiotestaus puolestaan suoritetaan myöhemmin kehityssyklin aikana, kun koodia päivitetään tai virheitä korjataan. Regressiotestaus kattaa yleensä koko sovelluksen tai ohjelmiston.

Järkevyystestaus ja regressiotestaus

Järkevyystestauksella arvioidaan, toimiiko ohjelmisto tarkoitetulla tavalla uuden moduulin tai toiminnallisuuden lisäämisen jälkeen. Järkevyystestaus on ohjelmistotestausmenetelmä, jolla ohjelmistojulkaisun laatu arvioidaan nopeasti sen määrittämiseksi, soveltuuko julkaisu jatkotestaukseen.

Järkevyystestauksella arvioidaan siis äskettäin lisättyjen ominaisuuksien tai koodimuutosten vakautta nykyisessä koontiversiossa. Regressiotestauksella varmistetaan, että kaikki toiminnallisuusmuutosten tai koodimuutosten vaikutuspiiriin kuuluvat alueet ovat vakaita.

Keskeiset asiat 

Käyttäjäkokemusta ja tuotteen yleistä laatua voidaan parantaa merkittävästi regressiotestauksella.

Regressiotestauksesta on Agilessa myös monenlaisia teknisiä ja kaupallisia hyötyjä. Mitä enemmän yrityksesi investoi regressiotestauksen suunnitteluun ja toteuttamiseen, sitä paremmin voit hallita tuotteesi budjettia, prosessia ja virheiden lieventämistä.

Jos haluat oppia lisää laadunvarmistukseen liittyvistä aiheista, tilaa QA Leadin uutiskirje!

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