Mutaatiotestaus eli ohjelman mutaatio on valkoisen laatikon testaustekniikka, joka auttaa yrityksiä kehittämään erilaisia uusia ohjelmistotarkastuksia ja samalla tarkastamaan projektin nykyiset prosessit. Tämä on suhteellisen uusi lähestymistapa, jolla varmistetaan, että sekä kehittäjät että testaajat työskentelevät korkeatasoisesti.

Sovellus on vain niin onnistunut tai hyvä kuin sen laadunvarmistusmenettelyt – eli on tärkeää, että organisaatiot käyttävät useampaa kuin yhtä testaustekniikkaa.

Mutaatiotestauksen opetteleminen voisi auttaa testausryhmiä lisäämään taitojaan ja yleistä repertuaariaan, jolloin ne voisivat parantaa näiden tarkastusten luotettavuutta. Mutaatiotestaus on monimutkainen ja arkaluonteinen prosessi, joten on tärkeää, että testaajat tutkivat perusteellisesti hyödyt, haasteet ja kolmannen osapuolen ohjelmat, jotka voivat taata onnistuneen toteutuksen.

Tässä artikkelissa tarkastelemme mutaatiotestausta ja sitä, miten se parantaa laadunvarmistusta, sekä muita keskeisiä näkökohtia ohjelmistotestausryhmille.

 

Mitä on mutaatiotestaus ohjelmistotestauksessa?

Testauksen huippuosaamiskeskuksen perustamisen edut. Eroaako suorituskykytestaus toiminnallisesta testauksesta?

Ohjelmistojen yhteydessä mutaatiotestaus tarkoittaa sitä, että laadunvarmistusryhmä lisää tarkoituksellisesti virheitä eli ”mutaatioita” sovelluksen koodiin nähdäkseen, miten ryhmä reagoi niihin. Tavoitteena on luoda virhe ja varmistaa, että testauspaketti pystyy tunnistamaan kaikki sovellukseen tehdyt muutokset.

Ohjelman koodia muokatessaan mutaatiotestaaja voi vaihtaa tosi/väärin -lausekkeen, poistaa lausekkeen tai yksinkertaisesti muuttaa arvoa. Nämä virheet voivat ilmetä monin eri tavoin muiden ohjelmistotarkastusten aikana, ja ammattitaitoinen ja kokenut testausryhmä voi helposti havaita ne kaikki.

Itse mutaatiot ovat usein hyvin vähäisiä, jolloin koodia mutaatioita tekevä testaaja voi tarkkailla, miten tiimi havaitsee muutokset. Merkittävät muutokset olisivat ilmeisiä jo pintapuolisella vilkaisulla – joten pienet virheet ovat yleensä paras tapa varmistaa, että yritys käyttää vankkoja testauskäytäntöjä.

Tällä tekniikalla tarkastellaan erityisesti tiimin testitapausten eli testitiedot sisältävien asiakirjojen tehokkuutta. Ryhmä voi myös käyttää kolmannen osapuolen automaatio-ohjelmistoa näiden tarkistusten suorittamiseen, jolloin mutaatiotestauksessa tarkastellaan, kuinka hyvin tämä alusta pystyy havaitsemaan ohjelmakoodin virheet.

 

1. Milloin sinun on tehtävä mutaatiotestaus?

 

Koska mutaatiotestauksen tavoitteena on validoida ja parantaa nykyisiä laadunvarmistustarkastuksia, on tärkeää, että tiimit suorittavat mutaatiotestauksen testausvaiheen alkuvaiheessa. Tämä tarkoittaa sitä, että jos testauspaketti ei pysty tunnistamaan ja ”tappamaan” mutantteja, on tarpeeksi aikaa tehdä organisaation testausmenettelyihin laajamittaisia muutoksia.

Koska kyseessä on erittäin monipuolinen menetelmä, mutaatiotestaus soveltuu lähes kaikenlaisiin ohjelmistoihin, kuten verkko-, mobiili- ja työpöytäohjelmiin. Tämä toimii parhaiten yksikkötestausvaiheessa, jossa tutkitaan sovelluksen pienimmät osat.

 

2. Kun ei tarvitse tehdä mutaatiotestausta.

 

On vielä joitakin tilanteita, joissa mutaatio ja yleinen white-box-testaus eivät ole sopivia ohjelmalle; tämä voi johtua monista eri syistä.

Jos testaajat esimerkiksi pyrkivät tarkistamaan vain mustan laatikon testauksen avulla, jolloin he keskittyisivät sen sijaan kyseisen istunnon front-endiin tai jopa koko testausvaiheeseen.

Jotkut yritykset pitävät white-box-testausta työläs ja aikaa vievänä, mikä voi johtaa siihen, että ne jättävät prosessin väliin. Vahvat, hyvin tarkistetut testitapaukset voivat myös välttää mutaatiotestauksen tarpeen, sillä se osoittaa tiimin huolellisuutta ja sitoutumista tarkkoihin testimenettelyihin.

 

3. Kuka osallistuu mutaatioanalyysiin?

jotka osallistuvat ohjelmistotestaukseen

Mutaatioanalyysissä on useita eri rooleja, kuten:

 

– Mutaatiotestaajat

He muokkaavat koodia lisäämällä siihen erilaisia pieniä virheitä varmistaakseen, että testausprosessi toimii odotetulla tavalla. Nämä testaajat ovat yleensä laadunvarmistusryhmän jo olemassa olevia jäseniä.

 

– Sovellusten testaajat

He tarkistavat koodin säännöllisesti ongelmien varalta ja tunnistavat ja korjaavat havaitsemansa mutaatiot. He tekevät white-box-testausta koodausvirheiden löytämiseksi, mutta käyttävät myös muita tekniikoita.

 

– Sovelluskehittäjät

He suunnittelevat ohjelman ominaisuudet ja kirjoittavat alkuperäisen koodin. He myös korjaavat kaikki testaajien löytämät ongelmat ja varmistavat, että ohjelmisto on vakaassa tilassa julkaisua varten.

 

– Projektipäälliköt

He antavat ohjausta sovellukseen ja saattavat työskennellä mutaatiotestaajien rinnalla nähdäkseen omien tiimiensä tehokkuuden. Ne varmistavat vahvat standardit kaikissa kehitysvaiheissa.

 

Mitä me testaamme mutaatiotesteillä?

ohjelmistojen testausautomaation sekaannusten selvittäminen

Mutaatiotestauksessa keskitytään enemmän prosessien testaamiseen kuin sovelluksen testaamiseen. Tätä varten siinä tarkastellaan seuraavia seikkoja:

 

1. Testitapaukset

 

Testitapaukset ovat asiakirjoja, jotka sisältävät yksityiskohtaista tietoa jokaisesta testistä, mukaan lukien tulokset, joita testaajat odottavat jokaiselta yksittäiseltä tarkistukselta. Johdonmukaiset ja tarkat testitapaukset antavat QA-ryhmän jäsenille käsityksen sovelluksen kunnosta ja siitä, miten sen suorituskyky vastaa yrityksen odotuksia.

Näiden testitapausten tiedot voivat määrittää testaajan kyvyn havaita tietyt viat – myös ne, joita mutaatiotestaus aiheuttaa.

 

2. Testausstandardit

 

Mutaatiotesteissä tarkastellaan tarkasti nykyisiä testausmenettelyjä sen varmistamiseksi, että tiimin jäsenet pystyvät tunnistamaan pienetkin ongelmat, jotka voivat vaikuttaa käyttäjän käsitykseen ohjelmistosta.

Testaajien huolellisuus ja pätevyys saattavat olla jopa tärkeimmät tekijät, joita yritys arvioi näillä tarkastuksilla. Jos testaajat eivät kiinnitä erityistä huomiota yksityiskohtiin jokaisessa vaiheessa, he voivat jättää huomaamatta ohjelmassa olevia vakavia mutaatioita.

 

3. Yksittäiset koodiyksiköt

 

Mutaatiotestit ovat yleisiä kehityksen yksikkötestauksen aikana. Tämä tarkastelee yksittäisiä komponentteja, jotta voidaan keskittyä vahvasti jokaiseen testiin, ja optimoi koko prosessia merkittävästi varmistamalla, että testaajat työskentelevät vain asiaankuuluvien koodirivien kanssa.

Koska mutaatiotestit ovat usein laadunvarmistusvaiheen alkuvaiheessa ja voivat olla täysimittaisen testauksen edeltäjä, tämä lähestymistapa voi lisätä nopeutta tarkkuudesta tinkimättä.

 

4. Ohjelman päivitykset

 

Ohjelmistopäivitykset edellyttävät yleensä testausprosessin käynnistämistä uudelleen, jotta voidaan varmistaa, ettei uusia virheitä ilmene ja että aiemmat virheet eivät tule uudelleen esiin.

Mutaatiotestien toistaminen on keskeinen osa tätä, ja se auttaa edistämään johdonmukaisia testausstandardeja suurten ohjelmistomuutosten jälkeen.

Testausryhmä saattaa pitää päivityksen jälkeisiä perusteellisia tarkistuksia tarpeettomina, mutta koodin mutaatio voi varmistaa, että he ymmärtävät testauksen merkityksen kaikissa kehitysvaiheissa.

 

5. Automaatio-ohjelmisto

 

Yritykset suorittavat mutaatiotestausta myös tarkastaakseen automaattiset testausohjelmansa ja varmistaakseen, että ne pystyvät havaitsemaan muun muassa mutatoituneen koodin.

Jos kolmannen osapuolen testaussovellus pystyy tunnistamaan ohjelman ulkoiset muutokset ja mahdollisesti jopa korjaamaan ne, tämä tarkoittaa, että organisaatio voi luottaa siihen, että ohjelmisto automatisoi testit.

On tärkeää, että yritykset validoivat automatisointimenetelmänsä; tämä antaa jokaiselle testaajalle mielenrauhan.

 

6. Automaatiostrategia

 

Se, miten yritys integroi automaation prosesseihinsa, on yhtä tärkeää kuin käytettävä ohjelmisto; yritys voi esimerkiksi päättää ottaa käyttöön hyperautomaation. Näin yritys voi älykkäästi päättää, mitkä mutaatio- ja ohjelmistotestit automatisoidaan.

Ilman vahvaa automatisointistrategiaa, joka ottaa huomioon sovelluskoodin suuren monimuotoisuuden, jotkin testit saattavat olla yhteensopimattomia automatisoinnin kanssa, mikä rajoittaa alustan kykyjä.

 

7. Hakemus

 

Vaikka mutaatiotestauksessa keskitytään enemmän testausryhmään kuin sovellukseen, se saattaa silti tuoda esiin merkittävää tietoa tästä ohjelmasta.

Esimerkiksi mutaatiotestaus osoittaa, miten ohjelmisto reagoi koodin muutoksiin, ja myös sen, osoittaako se ongelmat tiimin odottamalla tavalla.

Tämä lähestymistapa ei ole ohjelmistotestausmenetelmä, mutta se pystyy silti tarjoamaan mielenkiintoista tietoa sen sisäisistä toiminnoista.

 

Mutaatiotestien elinkaari

Mutaatiotestauksen tavanomainen elinkaari on seuraava:

 

1. Vaatimusten analysointi

 

Mutaatiotestauksen elinkaaren ensimmäisenä vaiheena on selvittää, mikä tarkalleen ottaen vaatii validointia ja mitkä sovelluksen koodin osat hyötyisivät eniten näistä testeistä.

Ryhmä voi keskustella kehittäjien ja johtajien kanssa selvittääkseen heidän huolenaiheensa ja ryhtyäkseen käsittelemään niitä.

 

2. Testauksen suunnittelu

 

Tämän jälkeen testaajat alkavat kehittää täsmällisiä tarkistuksia, jotka he aikovat toteuttaa – tässä tapauksessa mutaatioita, jotka tarjoavat parhaan näkemyksen.

Tässä vaiheessa määritetään yleinen mutaatiotestausstrategia ja se, miten tiimi aikoo toteuttaa suunnitellut koodimutaatiot tehokkaasti.

 

3. Testitapausten kehittäminen

 

Mutaatiotestaukseen kuuluu oma erillinen testausdokumentaationsa, joka sisältää tietoa mutatoituneesta koodista ja siitä, miten testaajien odotetaan korjaavan ongelman.

Hyvällä kirjanpidolla varmistetaan, että kaikki testit etenevät suunnitellusti, ja se voi auttaa tiimiä säilyttämään sitoutumisensa korkeisiin testausstandardeihin.

 

4. Testiympäristön asetukset

 

Testaajat varmistavat, että sovellus on valmis muutosten tekemistä varten – ja että heillä on menettely näiden ongelmien ratkaisemiseksi, jos muut tiimin jäsenet eivät pysty havaitsemaan niitä.

Osana tätä mutaatiotestaajat perustavat testipalvelimen ja käyttävät sitä mutaatioidensa kanavana.

 

5. Testin suorittaminen

 

Valmistelujen jälkeen testaajat muuttavat koodia useisiin sovelluksen osiin ja odottavat, että muut testaajat huomaavat ja korjaavat ongelmat.

Sekä mutaatiotestaajien että sovellustestaajien on dokumentoitava tämä laajasti, jotta heidän tietonsa ovat luotettavia.

 

6. Testisyklin sulkeminen

 

Kun testaus on valmis, mutaatiotestaajat tarkistavat vielä kerran, että kaikki heidän tekemänsä muutokset on korjattu joko sovelluksen testaajien tai heidän itsensä toimesta.

Sen jälkeen he päättävät testisyklin ja analysoivat tulokset ja keskustelevat siitä, miten testaajat reagoivat eri virheisiin ja miten he pystyivät korjaamaan ne.

 

7. Testin toistaminen

 

Kun testisykli on suljettu, se voidaan joutua aktivoimaan uudelleen tulevien ohjelmistopäivitysten jälkeen.

Jokainen muutos sovellukseen muuttaa sen toiminnallisuutta jollakin tavalla, mikä johtaa uusiin mahdollisuuksiin, jotka tiimin on otettava huomioon varmistaakseen, että testausprosessi on riittävän huolellinen.

 

Mutaatiotestauksen edut

 

Mutaatiotesteillä on monia etuja, kuten:

 

1. Validoi testausprosessin

 

Mutaatiotestauksen tärkein hyöty on sen kyky osoittaa, miten yrityksen testaajat lähestyvät ohjelmistoja – ja heidän kykynsä tunnistaa koodausongelmia. Näin varmistetaan myös, että tiimin testitapaukset ovat riittävän kattavia ja kattavat kaikki tarvittavat testit.

Mutaatiotesteillä tutkitaan organisaation yleistä testausmenettelyä sen varmistamiseksi, että se toimii odotetulla tavalla.

 

2. Varmistaa vahvan automaation

 

Mutaatiotestaus auttaa tiimiä tarkistamaan, pystyykö kolmannen osapuolen testiautomaatioalusta tunnistamaan koodissa olevat virheet asianmukaisesti ja puuttumaan niihin oikealla tavalla.

Jos ohjelmisto ei havaitse näitä edes tarvittavan kalibroinnin jälkeen, saattaa olla syytä vaihtaa alusta sellaiseen, joka läpäisee nämä testit helposti.

 

3. Hyvä kattavuus

 

Jokaisen ohjelmistotestausprosessin on katettava laajasti koko sovellus, jotta voidaan varmistaa, että jokainen osa-alue saa tarvittavan huomion.

Mutaatiotestaajat voivat muuttaa mitä tahansa ohjelman koodin osaa; hyvän toteutuksen ansiosta nämä testit voivat kattaa kaikki tärkeimmät ominaisuudet. Tämä opettaa testaajia etsimään ongelmia koko sovelluksesta.

 

4. Tutkii lähdekoodia

 

Koska mutaatiotestauksessa työskennellään koodin parissa ja tehdään tarvittaessa suoria muutoksia, tämä menetelmä voi myös korostaa sovelluksessa olevia optimoimattomia skriptejä.

Ohjelmistotestaajat voivat antaa ohjelmalle luvan ja suorittaa tavanomaisen testikierroksensa vain, jos ohjelmiston koodi on asianmukainen; näiden tarkistusten avulla testaajat voivat tuoda esiin mahdollisia tulevia ongelmia.

 

5. Johtaa parempiin ohjelmistoihin

 

Mutaatiotestauksen avulla voidaan varmistaa, että sovelluksen testausprosessit vastaavat ohjelman vaatimuksia.

Jos mutaatioanalyysi paljastaa, että laadunvarmistusryhmä ei noudata oikeita menettelyjä tai testitapaukset ovat puutteellisia, testaajat voivat työskennellä asian parantamiseksi. Ilman tätä asianmukaista huolellisuutta organisaatio saattaa julkaista virheellisen tuotteen huomaamattaan.

 

6. Tehokas eri kielillä

 

Riippumatta siitä, mitä kieltä testausryhmä käyttää sovelluksessaan, saatavilla on ohjelmistovaihtoehtoja, jotka voivat tarjota laadukkaan mutaatioanalyysin.

Tämä sisältää useita kielikohtaisia laatuominaisuuksia, jotka virtaviivaistavat tarkistuksia luotettavuuden parantamiseksi. Eri kielille räätälöity lähestymistapa parantaa jokaisen yksittäisen testin laatua.

 

7. Helposti saatavilla olevat työkalut

 

Monet parhaista mutaatioalustoista ovat täysin avoimen lähdekoodin alustoja, mikä tarkoittaa, että ne tarjoavat enemmän räätälöintimahdollisuuksia ja kattavan valikoiman ominaisuuksia ilmaiseksi tai huomattavasti alhaisemmilla kustannuksilla.

Koodimutaatio on hyödyllinen ja kätevä tapa, jolla yritykset voivat arvioida tai jopa parantaa laadunvarmistusmenetelmäänsä, sillä sen esteet ovat vähäisemmät kuin monien muiden testaustapojen kohdalla.

 

Mutaatiotestauksen haasteet

haasteet kuormitustestaus

 

Tähän prosessiin liittyy myös lukuisia haasteita, kuten:

 

1. Vaatii ohjelmointitietämystä

 

Jotta testaajat voisivat suorittaa nämä tarkistukset, heillä on oltava kattava käsitys ohjelmasta ja koodista, mikä vaikeuttaa vähemmän kokeneiden testaajien osallistumista.

Yritys voi testata ohjelmistoja vain tavalla, joka sopii testaajien olemassa oleviin taitoihin; erityisesti heidän kykyynsä muokata sovellusta ja luoda korjattavissa oleva koodausvirhe.

 

2. Ei sovellu mustan laatikon testaukseen

 

Mustan laatikon testauksessa tarkastellaan pääasiassa sovelluksen etupäätä tarkastelematta sen sisäistä toimintaa ja koodia – tämä on käytännössä yhteensopimatonta mutaatiotestauksen kanssa.

Näin ollen nämä tarkistukset ovat hyödyllisiä vain joidenkin testien osalta verrattuna muihin menetelmiin, joista monet voivat kattaa paljon paremmin koko testausvaiheen.

 

3. Mutaatiotestien suunnittelu on aikaa vievää.

 

Koodin mutaatio voi olla työläs prosessi, koska ryhmän on löydettävä yksittäiset osat, joita kannattaa mutaatioida. Päätös siitä, mitkä mutaatiot otetaan käyttöön, voi jo itsessään viedä paljon aikaa; tämä voi olla ongelmallista, kun muut testaustyypit odottavat käytännössä näitä tarkastuksia, jotta yrityksen testausmenetelmä voidaan validoida täysin.

 

4. Saattaa vaatia useita koodimutaatioita

 

Vastaavasti monimutkaisissa hankkeissa on luonnollisesti perusteltua käyttää useampia mutantteja, jotta voidaan varmistaa kattava testausmenetelmä. Tämä lisää aikaa mutaatiovaiheeseen ja voi edellyttää monia manuaalisia muutoksia sovelluskoodiin.

Ilman laadukkaita testiautomaatio-ohjelmistoja, joissa on ohjelman mutaatio-ominaisuudet, testaajien voi olla vaikea toteuttaa tätä onnistuneesti.

 

5. Testaajat eivät välttämättä huomaa virheitä

 

Suurin huolenaihe, joka mutaatiotestaajilla ja projektipäälliköillä on usein näitä tarkistuksia toteutettaessa, on se, että ohjelmistotestaajat (manuaaliset tai automaattiset) eivät yksinkertaisesti huomaa ongelmia.

Tämä saattaa vaatia yrityksen testausmenettelyjen täydellistä uudistamista – vaikka testaajat saisivatkin tällöin tärkeää tietoa yrityksen laadunvarmistusstandardeista.

 

6. Voi vaatia paljon muistia

 

Mutaatiotestaus vaatii yleensä paljon prosessointitehoa, vaikka tämä voi riippua testaajien käyttämästä sovelluksesta.

Jos organisaatiolla on vain rajallinen määrä koneita tai jos näiden laitteiden tekniset ominaisuudet ovat alhaiset, ne voivat joutua kamppailemaan liian monen samanaikaisen mutaation suorittamisen kanssa. Tämä vaikuttaa siihen, kuinka monta tarkastusta he voivat tehdä ennen testausvaiheen päättymistä.

 

7. Kertomukset voivat olla tietorikkaita

 

Vaikka tämä riippuu pääasiassa tiimin mutaatiotestaustyökalun käyttöliittymästä, niiden tuottamia raportteja voi olla vaikea analysoida.

Tämä tarkoittaa, että niiden manuaalinen lajittelu ja oikeiden testitulosten löytäminen vie aikaa; joissakin ohjelmissa käyttäjät voivat mukauttaa varsinaista raportointiprosessia; tämä vaihtelee sovelluksesta toiseen.

 

Mutaatiotestien ominaisuudet

Muu kuin toiminnallinen testaus: mitä se on, eri tyypit, lähestymistavat ja työkalut.

Tehokkaiden mutaatiotestien pääpiirteet ovat seuraavat:

 

1. Kattava

 

Nämä tarkistukset kattavat kaikki ohjelmiston tärkeimmät osatekijät; yritykset, joilla on riittävästi resursseja, saattavat jopa suunnitella mutaatiotestin jokaista tavallista testitapausta varten.

Tarkka määrä riippuu organisaation valmiuksista ja mieltymyksistä, mutta tehokkaat mutaatiotestit kattavat laajan valikoiman koodattuja ominaisuuksia.

 

2. Strateginen

 

Ohjelman mutaatioiden tulisi vastaavasti noudattaa selkeää ja hyvin suunniteltua rakennetta, joka helpottaa organisaation yleisiä testaustavoitteita.

Niiden tuottamat virheet voivat esimerkiksi lähestyä realistisia testivirheitä, minkä ansiosta testaajat voivat ennakoida nämä ongelmat, jos ne luonnollisesti ilmenevät, mikä parantaa merkittävästi yrityksen testausprosessia.

 

3. Rakentava

 

Mutaatiotestauksen tarkoituksena on havaita puutteet testauksessa ja osoittaa, miten tiimi voisi parantaa tarkastuksiaan ja korjata pieniä virheitä niiden ilmaantuessa.

Mutaatiotestaajien on asetettava etusijalle ”virheelliset” mutaatiot, jotka vaikuttavat ohjelmiston toiminnallisuuteen, mikä mahdollistaa selkeämmät testausparannukset koko projektissa.

 

4. Ennakoiva

 

Nämä tarkistukset ovat olemassa tiimin kokonaisstrategian validoimiseksi; tämä tarkoittaa, että mutaatiotestaus toimii paremmin kehityksen alkuvaiheessa.

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

Jos testaajat huomaavat merkittäviä puutteita laadunvarmistusmenetelmässään, heillä on näin riittävästi aikaa muuttaa testitapauksiaan, jotta ne olisivat riittäviä.

 

5. Johdonmukainen

 

Sovelluksen eri iteraatioiden mutaatiotestauksen pitäisi tuottaa johdonmukaisia tuloksia ja samalla lisätä tarkistuksia ohjelmistomuutosten huomioon ottamiseksi.

Myöhemmissä tarkastuksissa on kiinnitettävä samaa huomiota yksityiskohtiin, jotta niiden tehokkuus säilyy – ilman tätä tarkkuutta mutaatiotestit voivat menettää tarkkuuttaan.

 

6. Hienovarainen

 

Mutaatiotesteillä pyritään tutkimaan laadunvarmistusryhmän kykyä tunnistaa koodivirheet testien ja kolmansien osapuolten alustojen avulla.

Tämä tarkoittaa sitä, että testien ei pitäisi olla välittömästi ilmeisiä kaikille ohjelmistoa tarkastaville; tarkoituksena on tutkia, miten testaajat reagoivat pieniin koodiongelmiin.

 

7. Yhteistyö

 

Kuten mikä tahansa ohjelmistotestaus, myös koodimutaatio on prosessi, jonka onnistuminen edellyttää tiimityötä ja viestintää. Yhteistyöhön perustuvan ilmapiirin ylläpitäminen auttaa välttämään tiedon siiloutumista, joka voi johtaa väärinkäsityksiin – tämä takaa myös sen, että jokainen testaaja pysyy keskittyneenä tehtäviinsä.

 

Mutaatiotestien tyypit

Bak end testaus, työkalut, mitä se on, tyypit, lähestymistavat, lähestymistavat, jne.

Mutaatiotestien kolme päätyyppiä ovat:

 

1. Arvomutaatio

 

Arvomutaatiot muuttavat suoraan koodin sisällä olevia arvoja vaihtamalla yhden numeron tai kirjaimen toiseen tavalla, joka vaikuttaa sovelluksen toiminnallisuuteen.

Testaaja voi esimerkiksi muuttaa ohjelman tarkkoja parametreja, kuten numeroita, joihin se reagoi. Mutaatiotestaajat saattavat kohdistaa testit erityisesti ohjelmiston vakioarvoihin, koska ne pysyvät aina samoina normaalin toiminnan aikana.

 

2. Päätösmutaatio

 

Päätösmutaatiot muokkaavat aritmeettisia ja loogisia operaattoreita ja muuttavat tehokkaasti sitä, miten sovellus reagoi tiettyihin tilanteisiin.

Esimerkiksi suuremman kuin -operaattorin (>) vaihtaminen pienemmän kuin -operaattoriin (<) vaikuttaa luonnollisesti ohjelman tulosteeseen. Testaajat voivat myös vaihtaa ”tai” ”ja”-merkkiin tai päinvastoin, mikä muuttaa olennaisesti tätä ohjelmistoa ja sitä, miten se tulkitsee muiden testaajien ja mahdollisten käyttäjien antamia tietoja.

 

3. Lausuman mutaatio

 

Lausemutaatiot muuttavat koodin varsinaisia lauseita, jolloin ne muuttavat sääntöjä, joita sovellus käyttää tehdessään päätöksiä. Testaajat voivat muuttaa näiden rivien sisältöä, kopioida niitä tai jopa poistaa niitä tarkistaakseen, miten mutanttiohjelma vaikuttaa ohjelmiston toimintaan.

Nämä mutaatiot muuttavat ohjelman rakennuspalikoita, jolloin ne voivat poistaa kokonaisia toimintoja tai muuten estää niitä toimimasta.

 

Sekaannusten selvittäminen

– Mutaatiotestaus vs. regressiotestaus

UAT-testauksen vertailu regressiotestaukseen ja muuhun testaukseen

Mutaatio- ja regressiotestaus ovat molemmat hyödyllisiä lähestymistapoja ohjelmistotestaukseen – kummankin tekniikan ymmärtäminen voi parantaa yrityksen yleistä laadunvarmistusta.

 

1. Mitä on regressiotestaus?

 

Regressiotestaus tarkoittaa, että testaajat tutkivat ohjelmistoa eri iteraatioiden välillä varmistaakseen, että se toimii edelleen koodiin tehdyistä muutoksista huolimatta.

Pienetkin muutokset voivat johtaa vakaviin ongelmiin ilman näitä tarkistuksia, mikä saattaa aiheuttaa aiempien virheiden ilmaantumisen uudelleen. Tämä edellyttää yleensä automatisointia, koska jokaisen komponentin uudelleentestaaminen on monimutkaista; monet yritykset luopuvat tästä syystä regressiotesteistä.

Testaajat voivat tehdä näitä tarkastuksia yksittäisille yksiköille, yksittäisille komponenteille tai koko tuotteelle – tarkat testit riippuvat pääasiassa projektista ja sen laajuudesta.

 

2. Mitä eroa on mutaatio- ja regressiotesteillä?

 

Regressiotestauksessa keskitytään ensisijaisesti ohjelman ja sen toimivuuden tarkistamiseen, kun taas koodimutaatiossa tarkastellaan sitä, miten testaajat reagoivat ongelmiin.

Ensin mainittu tapahtuu suurelta osin ohjelman useiden iteraatioiden jälkeen, kun taas mutaatiotarkistukset voivat tapahtua missä tahansa kehitysvaiheessa – yleensä kuitenkin testausvaiheen alkuvaiheessa.

Sekä regressio- että mutaatiotestit voivat käsitellä yksittäisiä koodausyksiköitä ja sitä, miten pienet muutokset voivat johtaa merkittäviin ongelmiin, joita testaajien on pyrittävä korjaamaan.

 

3. Johtopäätökset: Mutaatiotestaus vs. automatisoitu testaus

Testauksen huippuosaamiskeskuksen perustamisen edut. Eroaako suorituskykytestaus toiminnallisesta testauksesta?

Automaatio on usein keskeinen osa mutaatiotestausta, koska tarkistusten ja yksiköiden määrä on niin suuri, että se on joskus elintärkeää onnistuneelle ja kattavalle testausprosessille.

Yritykset käyttävät yleisesti koodimutaatioita tutkiakseen kolmannen osapuolen automaatioalustaansa ja sitä, miten hyvin se tunnistaa ongelmalliset skriptit.

Yhdistämällä perusteellinen mutaatiotarkistusten luettelo ja automaattinen ohjelmisto voidaan merkittävästi lisätä yrityksen kattavuutta ja varmistaa paremmat tulokset.

Vaikka nämä ovat kaksi erillistä testauskäytäntöä, niiden ei tarvitse olla ristiriidassa keskenään. Esimerkiksi robottiprosessien automatisointi voi tehostaa yrityksen mutaatiotestausstrategiaa.

 

Mitä tarvitset aloittaaksesi mutaatiotestauksen ohjelmistotekniikassa?

tarkistusluettelo ohjelmistotestausprosesseista

Kattavan mutaatiotestauksen tavanomaisiin vaatimuksiin kuuluvat:

 

1. Selkeä testausstrategia

 

Testausryhmän on laadittava strategia mutaatiotestausta varten ja määriteltävä, mitkä komponentit ja yksiköt ovat tärkeimpiä tutkittavia.

Esimerkiksi tietyt koodin osat voivat olla olennaisempia sovelluksen onnistumisen ja toiminnallisuuden kannalta; testaajien olisi varmistettava, että mutaatioita on riittävästi tämän huomioon ottamiseksi.

Yrityksen mutaatiotestauksen aikataulu on myös tärkeä näkökohta, sillä näin varmistetaan, että testaajilla on riittävästi aikaa tutkia koodia.

 

2. Ei laajuuden hiipumista

 

Vaikka yrityksellä olisi perusteellinen strategia, jossa määritellään yrityksen lähestymistapa mutaatiotestaukseen, on mahdollista, että testejä tehdään huomattavasti enemmän kuin on tarpeen.

Tehokkuus on ensiarvoisen tärkeää koko menettelyn ajan, varsinkin kun muut testausvaiheet saattavat odottaa, että ryhmä löytää ja tappaa mutaatiot. Testaajien on määriteltävä selkeästi soveltamisalansa ennen kuin he alkavat muokata koodia; näin varmistetaan, että kaikki on hallittavissa käytännöllisessä aikataulussa.

 

3. Tiukka dokumentointi

 

Jokainen testausprosessi hyötyy täydellisestä dokumentoinnista – usein testitapausten muodossa, joissa on yksityiskohtaiset tiedot yksittäisistä tarkistuksista ja mahdollisista mutanteista.

Tämä havainnollistaa tiimin tämänhetkistä edistymistä testeissä, mikä on erityisen hyödyllistä esimiehille ja johtajille. Jokaisen koodimutaation dokumentointi auttaa myös testaajia pitämään selkeää kirjaa tekemistään muutoksista.

Jos laadunvarmistusryhmä ei löydä näitä mutaatioita testauksen aikana, nämä asiakirjat toimivat vastausavaimena.

 

4. Ammattitaitoiset testaajat

 

Koodia muokkaavilla testaajilla on oltava vahva ymmärrys ohjelmistosta – myös niistä monista tavoista, joilla he voivat muokata tai jopa rikkoa sen.

Mutaatiotestaajat tietävät suurin piirtein, miten heidän tekemänsä muutokset vaikuttavat sovellukseen ja miten muut laadunvarmistustiimin jäsenet voivat tunnistaa mutanttikoodin.

Tämä edellyttää yleensä hyvää ohjelmointitaitoa. Jotta mutaatioanalyysi olisi tehokas, myös ohjelmiston testaajilla pitäisi olla kehittyneet taidot ja testauskokemusta.

 

5. Automaatio-ohjelmisto

 

Kolmannen osapuolen automaatio-ohjelmisto voi olla välttämätön ennen mutaatiotestausta, koska tämä prosessi vaatii usein useita tarkistuksia. Tämä pätee erityisesti monimutkaisiin sovelluksiin, joissa laadunvarmistusryhmän on tutkittava enemmän koodia ja ominaisuuksia.

Yritykset voivat tehdä näitä tarkistuksia erityisesti testatakseen, miten automaatio-ohjelmisto reagoi koodausvirheisiin. Tämä voi olla keskeinen osa yrityksen kokeiluprosessia, jossa päätetään, mitkä ohjelmat ovat hyödyllisimpiä.

 

Mutaation testausprosessi

tarkistuslista uat, web-sovellusten testaustyökalut, automaatio ja paljon muuta

Tavalliset vaiheet, joita testaajat yleensä noudattavat mutaatioanalyysiä tehdessään, ovat seuraavat:

 

1. Testien valmistelu

 

Valmistelu on minkä tahansa testausprosessin ensimmäinen vaihe. Tähän sisältyy neuvotteleminen täsmällisistä tarkastuksista ja tarvittavien hyväksyntöjen hankkiminen – esimerkiksi yrityksen johtajilta ja sidosryhmiltä.

Testaajien on kehitettävä nämä tarkistukset siten, että ne sopivat projektin aikatauluun ja kattavat silti kaikki tärkeimmät osat. Ryhmän suunnittelu voi määrittää heidän koodimutaatioidensa tehokkuuden.

 

2. Tutustutaan mutantteihin ja vikoihin

 

Kun valmistelut on saatu päätökseen, testausryhmä alkaa muuttaa koodia suunnitelmansa mukaisesti ja ottaa käyttöön tiettyjä virheitä. Näiden virheiden tulisi olla suhteellisen pieniä, sillä testaajat voivat näin arvioida muun tiimin kykyä tunnistaa koodausongelmia.

Pienet viat voivat myös auttaa organisaatiota tarkastamaan kolmannen osapuolen automaatio-ohjelmiston herkkyyttä.

 

3. Sovelletaan testitapauksia

 

Testitapausten on otettava huomioon kaikki sovelluksen mahdolliset vikapisteet – tämä saattaa vaatia uudelleenkirjoittamista, jos mutanttiohjelma pystyy toimimaan virheettömästi.

Ohjelman testitapaukset edustavat testaajien tekemien tarkastusten koko kirjoa; jokaisen testitapauksen pitäisi auttaa testaajia paljastamaan piilomutaatioita ja olla olennainen osa sovelluksen käytettävyyttä.

 

4. Vertaile tuloksia

 

Kun ohjelmaan on lisätty mutaatiovirheitä ja ryhmän testitapauksia on sovellettu, ryhmän on verrattava sekä alkuperäisen että mutaatio-ohjelman tuloksia.

Toiveena on, että jokaista onnistunutta tarkistusta alkuperäisessä sovelluksessa kohti löytyy myös virhe mutanttihakemuksessa. Tämä osoittaa sekä testaajien että heidän käyttämiensä työkalujen kyvyt.

 

5. Toimi erilaisten tuotosten perusteella

 

Jos alkuperäisen ja mutanttiohjelman välillä on erilaisia tuotoksia kuin testaajat odottavat, tämä tarkoittaa, että testitapaus voi onnistuneesti tappaa mutantin osoittamalla sen läsnäolon.

Tämän jälkeen testaajat voivat jatkaa työtä luottaen menetelmiinsä ja kykyynsä tunnistaa koodausongelmat. Testitapauksiin ei tarvitse tehdä muutoksia näiden testien osalta.

 

6. Vaihda kotelot tarvittaessa

 

Jotkin koodimutaatiot saattavat johtaa identtisiin johtopäätöksiin eri ohjelmissa, mikä viittaa siihen, että testitapaukset eivät pysty onnistuneesti tuomaan esiin kaikkia mahdollisia sovelluksen virheitä.

Näissä tapauksissa mutantti pysyy ”elossa” ja voi edelleen vaikuttaa ohjelmistoon tavoilla, joihin testaajilla ei ole kehystä puuttua – tämä johtaa parempien testitapausten luomiseen.

 

Miten luoda mutanttiohjelmia

Mutanttiohjelmat ovat käytännössä identtisiä alkuperäisten ohjelmien kanssa lukuun ottamatta yhtä pientä muutosta, joka voi vaikuttaa sovelluksen toimintaan pienin mutta huomattavin tavoin.

Kattavat ja yksityiskohtaiset testitapaukset auttavat testaajaa tai ohjelmistosarjaa löytämään nämä muutokset ja niistä johtuvat virheet. Jokaisessa tapauksessa, jonka yritys tarkastaa, tarvitaan sekä alkuperäinen että muunnettu ohjelma, jolloin jokaisen muutoksen vaikutukset näkyvät erikseen.

Ohjelmat jäljittelevät tyypillisesti realistisia virheitä, kuten koodausvirheitä. Testaajien on myös tärkeää välttää ”kuolleena syntyneitä” mutantteja, jotka estävät sovelluksen suorittamisen – tämä on liian ilmeistä testaajille.

 

Mitä muutetaan mutanttiohjelmassa?

Mitä on kuormitustestaus?

Kuten monien ohjelmistotestauksen muuttujien kohdalla, testaajien tekemät tarkat muutokset riippuvat sovelluksesta ja sen koodista.

Suurin osa mutaatiotesteistä kuuluu kolmeen luokkaan: operandit, lausekkeet ja lausekkeet. Minkä tahansa näistä muuttaminen voi luoda tehokkaan mutanttiohjelman, joka osoittaa, miten eri arvot tai säännöt vaikuttavat ohjelman käyttämään logiikkaan.

Nämä luokat liittyvät kolmeen päätyyppiin mutaatioita, joita testaajat tutkivat; nämä ovat päätös-, arvo- ja lausemutaatiot. Muutosten on oltava vähäisiä, eivätkä ne saa estää testin suorittamista kokonaan.

 

Parhaat käytännöt mutaatiotestauksessa

Mikä on yksikkötestaus

Kun mutaatiotestausta tehdään ohjelmistotestauksen yhteydessä, on syytä noudattaa tiettyjä käytäntöjä, joilla varmistetaan vahvat tulokset:

 

1. Maksimoidaan mutaatiopistemäärä

 

Ohjelman mutaatiopistemäärä on niiden mutanttien prosenttiosuus, jotka tiimi tai sovellus pystyy onnistuneesti tunnistamaan tai ”tappamaan”.

Jos esimerkiksi mutaatiotestauksen kierroksella on 40 mutanttia ja testaajat löytävät 36 mutanttia, mutaatiopistemäärä on 90 % – ryhmän tavoitteena on aina varmistaa 100 %:n pistemäärä.

 

2. Valitse mutantit satunnaisesti

 

Vaikka se voi auttaa priorisoimaan tiettyjä komponentteja ja testaamaan niitä perusteellisemmin, testaajien on myös hyödyllistä valita satunnaisesti, mitä mutantteja lisätään – etenkin tiukan aikataulun puitteissa.

Kunhan nämä tarkistukset edustavat kaikkia merkittäviä mutaatiotyyppejä, laadunvarmistusryhmä voi validoida yleisen ohjelmistotestausstrategiansa.

 

3. Pidä muutokset pieninä

 

Koodimutaatioiden tulisi edustaa pieniä poikkeamia alkuperäisestä ohjelmasta, sillä tämä osoittaa, kuinka todennäköisesti testaaja tunnistaa tietyt virheet; pienet koodausongelmat osoittavat myös, kuinka herkkä ohjelmisto on.

On tärkeää, että mutaatiotestaajat löytävät tasapainon, joka sallii näiden pienten muutosten silti tuottaa havaittavia virheitä.

 

4. Yksi mutaatio per ohjelma

 

Mutaatiotestauksessa tarkastellaan yksittäisiä testitapauksia erikseen ja tarkastellaan, kuinka kattavia ne ovat. Tämän helpottamiseksi jokaisessa muunnetussa ohjelmassa pitäisi olla vain yksi muutos alkuperäiseen verrattuna.

Ohjelmat, joissa on useita mutaatioita, eivät välttämättä pysty tehokkaasti yhdistämään testitapauksia; mutaatiot voivat olla ristiriidassa keskenään.

 

5. Harkitse huolellisesti automaatio-ohjelmistoa

 

Yritykset käyttävät usein koodimutaatiota validoidakseen tiimin automaatio-ohjelmiston käytön ja varmistaakseen, että se pystyy tunnistamaan virheet yhtä tehokkaasti kuin ihmistestaaja.

Tämä tarkoittaa, että oikean automaatioalustan valinta voi olla tärkeä näkökohta, samoin kuin mahdollisuus integroida robottiprosessien automatisointi.

 

6. Käytä testivetoista kehitystä

 

Testauslähtöinen kehitys (TDD) tarkoittaa erityistä tekniikkaa, jossa testausvaatimukset otetaan huomioon kehityksen jokaisessa vaiheessa.

Tämä auttaa varmistamaan, että testitapaukset ovat täysin yhteensopivia ohjelmiston kanssa – jolloin se läpäisee helposti mutaatiotestit ja tekee paremman ohjelman, joka on synkronoitu laadunvarmistusprosessien kanssa.

 

Mutaatiotestin tulostyypit

testauksen huippuosaamiskeskuksen (TCoE) perustamisen edut

Mutaatiotestit tuottavat useita tuotoksia, muun muassa:

 

1. Mutanttiohjelma

 

Mutaatio-ohjelmat ovat näiden tarkistusten luonnollinen tulos; testaajat luovat niitä vastaamaan nykyisiä testitapauksiaan ja niiden avulla havaittuja ongelmia. Ohjelmat poikkeavat alkuperäisestä versiostaan yleensä vain yhdellä pienellä, mutta merkittävällä tavalla suuremman luotettavuuden varmistamiseksi.

 

2. Elävä tai kuollut mutantti

 

Testien jälkeen mutaatio joko ”tapetaan” tai se pysyy ”elossa” – tämä tarkoittaa yksinkertaisesti sitä, onko testaaja (tai hänen ohjelmistonsa) onnistunut tunnistamaan koodausongelman vai ei.

Jos mutantti pysyy hengissä, testitapaukset saattavat tarvita vakavia muutoksia.

 

3. Mutaatiotesti

 

Laadunvarmistusryhmä käyttää erillisiä mutaatiokohtaisia testitapauksia, jotka kirjaavat tiedot mutaatio-ohjelmistaan.

Tämä auttaa varmistamaan, että tiimillä on kattavat tiedot jokaisesta tarkastuksesta; nämä asiakirjat sisältävät yksityiskohtaiset tiedot mutaatioista ja niiden vaikutuksista ohjelmaan.

 

4. Mutaatiopisteet

 

Kaikkien mutaatiotestien tavoitteena on saavuttaa 100 prosentin mutaatiopistemäärä, kun yrityksen testausmenetelmillä onnistutaan paikantamaan ja tappamaan jokainen mutantti. Kaikki tätä alhaisemmat tulokset viittaavat siihen, että testitapauksia ja yleisiä prosesseja on parannettava ongelmallisen koodin tunnistamiseksi.

 

Esimerkkejä mutaatiotestauksesta

api-testaus ja automaatio

Seuraavassa on kolme esimerkkiä mutaatiotestauksesta:

 

1. Esimerkki arvon mutaatiosta

 

Arvomutaatioissa muutetaan vakiota tai parametria, joka voi mahdollisesti muuttaa ohjelman rajoja. Esimerkiksi kassa-automaatin ohjelmisto voi käyttää elintarvikkeen painoa sen hinnan määrittämiseen.

Testaajat saattavat muuttaa tämän ohjelman koodia ja muuttaa painoparametreja, jolloin ruoka kallistuu huomattavasti jokaista unssia tai kiloa kohti. Testaajan tai testausalustan pitäisi pystyä tunnistamaan eri arvojen vaikutukset tähän ohjelmaan.

Koska tämä virhe muuttaa yhtä ohjelmiston tärkeimmistä ominaisuuksista, testitapausten pitäisi huomata tämä virhe ja varoittaa tiimiä.

 

2. Esimerkki päätöksen mutaatiosta

 

Päätösmutaatioihin kuuluu aritmeettisen tai loogisen operaattorin muuttaminen, käänteinen tai muu muutos siinä, miten sovellus reagoi käyttäjän syötteisiin. Palatakseni esimerkkiin itsekassasta, nämä koneet voivat merkitä odottamattoman painavan tuotteen, joka voi johtua käyttäjän virheestä.

Koneen koodi voisi tehdä tämän ”if (a>b)” -päätöksellä, jossa ”b” kuvastaa odotettua painoa ja ”a” vastaa todellista painoa. Ryhmä voi muuttaa tämän ”if (a≤b)” -vaihtoehdoksi, joka muuttaa kassan reagointitapaa; se merkitsisi kohteen, vaikka se olisi odotetun painoinen.

 

3. Esimerkki lausekemutaatiosta

 

Lausemutaatioihin kuuluu säännön tai tulosteen muuttaminen – tämä voi jopa sisältää lausekkeiden poistamisen sovelluksesta kokonaan. Nämä mutaatiot saattavat olla huomattavampia kuin toiset, riippuen tietyn lausekkeen esiintymistiheydestä; on tärkeää, että testaajat valitsevat lausekkeen viisaasti.

Esimerkiksi automaattinen kassakone voi näyttää varoituksen, jos käyttäjä yrittää ostaa ikärajoitetun tuotteen. Ilman vastaavaa lauseketta kone saattaa kaatua tai antaa minkä tahansa asiakkaan ostaa minkä tahansa tuotteen.

Muuttamalla lausumaa ja korostamalla sitä tiimille testaajat voivat varmistaa, että heidän lähestymistapansa ottaa huomioon nämä ongelmat.

 

Mutaatiotestauksen avulla havaittujen virheiden ja vikojen tyypit

zaptest-runtime-error.png

Mutaatiotestit paljastavat pääasiassa ongelmia itse testausprosessissa. Tässä on joukko asioita, joiden tunnistamisessa nämä tarkastukset voivat auttaa:

 

1. Epäselvät testitapaukset

 

Jos mutaatioanalyysi paljastaa alhaisen mutaatiopistemäärän (tai jopa alle 100 %:n pistemäärän), tämä viittaa siihen, että tiimin testitapaukset eivät pysty ottamaan huomioon kaikkia mahdollisia sovellukseen vaikuttavia vikoja.

Ne eivät ehkä ole riittävän tarkkoja tai laajoja vastaamaan ryhmän vaatimuksia. Näiden asiakirjojen olisi katettava kaikki mahdollisuudet, joita tiimi voi kohdata ohjelmiston testauksen aikana luotettavuuden varmistamiseksi.

 

2. Kouluttamaton testausryhmä

 

Mutaatiotestit voivat myös havainnollistaa ryhmän kykyjä, kuten sitä, miten hyvin he tunnistavat henkilökohtaisesti mutaatiot ja muut viat. Jos he eivät löydä mutantteja kaikista ohjelmista selkeistä ja yksityiskohtaisista testitapauksista huolimatta, tämä saattaa johtua siitä, että testaajat eivät ole soveltaneet näitä tapauksia oikein.

Mutantit ohjelmat voivat osoittaa ongelmia koko testausprosessin ajan – tämä voi koskea myös ammattitaidottomia tai kouluttamattomia testaajia.

 

3. Riittämätön testausohjelmisto

 

Jos yritys käyttää näitä tarkastuksia oman testausalustansa tarkastamiseen, se saattaa huomata, että ohjelmisto ei pysty tunnistamaan tai tappamaan mutanttikoodia tarkasti.

Yritys voi vastata tutkimalla muita vaihtoehtoja, kunnes se löytää testitapaustensa kanssa yhteensopivan vaihtoehdon. Jos automaatio-ohjelmisto ei löydä ongelmallista koodia, sillä on todennäköisesti vaikeuksia tunnistaa muita ohjelmistoon vaikuttavia ongelmia.

 

4. Optimoimaton koodi

 

Mutaatiotestaus voi paljastaa ohjelmistossa jo olevia ongelmia. Testaajat voivat esimerkiksi yrittää muuttaa koodia, mutta paljastavat itse kriittisiä virheitä.

Tämä on ohjelman toinen tärkeä näkökulma, joka osoittaa, että koodimutaatio tarjoaa etuja testausprosessin ulkopuolella. Mitä enemmän testaajat tutkivat koodia missä tahansa ominaisuudessa, sitä enemmän ongelmia tiimi voi paljastaa ja korjata testausvaiheessa.

 

Yleiset mutaatiotestin mittarit

kuormitustestaus

 

Mutaatiotestien käyttämät tärkeimmät mittarit ovat:

 

1. Tapetut mutantit

 

Tällä tarkoitetaan niiden mutanttien määrää, jotka testaajat tai ohjelmisto pystyivät tunnistamaan ja jotka merkitsevät niiden olemassaolon, jotta henkilökunta voi löytää tällaiset pienet virheet.

Testaajien tappamien mutanttien määrä riippuu heidän testitapaustensa vahvuudesta.

 

2. Elävät mutantit

 

Elävät mutantit ovat sellaisia, joita testaajat tai ohjelmistot eivät tunnista, mikä osoittaa, että tiimin laadunvarmistusstrategiassa on aukkoja. Jos näin tapahtuu, testaajien on kalibroitava prosessi ja testitapaukset uudelleen, jotta ne pystyvät ottamaan huomioon nämä mutantit ja tappamaan ne tulevissa tarkastuksissa.

 

3. Kelvolliset mutantit

 

Tämä mittari määrittää sen mutaatioiden määrän, jonka ohjelma pystyi onnistuneesti sisällyttämään ilman, että suoritusvirhe mitätöi testin ja sen tehokkuuden.

Kelvolliset mutaatiot ovat sellaisia, joita testaaja ja automaatio-ohjelmisto voivat tutkia; tämä johtuu siitä, että mutaatiot ovat suhteellisen vähäisiä.

 

4. Virheelliset mutantit

 

Merkittävät mutaatiot voivat vaikuttaa sovellukseen niin paljon, että testaaminen on epäkäytännöllistä tai jopa mahdotonta, joten on hyödyllistä seurata, kuinka monta ”epäkelpoista” mutaatiota mutaatio-ohjelmassa on.

Näiden tunnistamisen ansiosta testaajat voivat muokata tai jopa poistaa niitä, jolloin varmistetaan, että tarkastukset sisältävät vain kelvollisia mutaatioita.

 

5. Mutaatiot yhteensä

 

Mutaatioiden määrä niiden pätevyydestä riippumatta on toinen mittari, jota testaajat seuraavat; tämän avulla he voivat seurata mutaatioita ja kirjata niiden tilan.

Koska jokaiseen mutaatioon liittyy yleensä erillinen testi, kokonaismäärää käytetään myös koodimutaatioiden kokonaismäärän laskennassa.

 

6. Mutaatiopisteet

 

Mutaatioanalyysin hyödyllisin mittari on yleensä mutaatiopistemäärä, joka on käytännössä niiden kelvollisten mutaatioiden prosenttiosuus, jotka testaaja tai automaatiopaketti pystyi havaitsemaan.

Kaikki alle 100 %:n havaitseminen voi olla merkki virheellisistä testimenettelyistä.

 

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

7 virhettä ja sudenkuoppaa mutanttitestien toteuttamisessa

ohjelmistotestauksen automaatio virka

Mutaatiotestaus on monimutkainen prosessi, joka yritysten on toteutettava viisaasti, jotta vältetään vakavat ongelmat tai virheet. Seuraavassa on seitsemän sudenkuoppaa, joita testaajien tulisi pyrkiä välttämään mutaatiotestejä tehdessään:

 

1. Virheellinen mutaation skaalaus

 

Mutaatioanalyysissä on tärkeää ottaa huomioon mittakaava, sillä tämän prosessin tarkoituksena on varmistaa, että testaajat tunnistavat sovelluksen pienet virheet. Jos mutaatio on liian ilmeinen testaajille, tämä ei välttämättä ole tehokas tapa tarkistaa heidän kykyään huomata tai torjua ohjelmisto-ongelmia.

 

2. Virheelliset tai elävät mutaatiot

 

Jopa oikeassa mittakaavassa monet mutaatiot ovat vain rajoitetusti tehokkaita – esimerkiksi jos ne eivät johda vikaan tai jos ne johtavat ongelmaan, joka estää sovelluksen toiminnan.

Testaajien on otettava huomioon, miten koodauksen muutokset voivat vaikuttaa koko ohjelmistoon.

 

3. Yhteensopimattomat testitapaukset

 

Testitapausten ja mutaatioiden on oltava täydellisesti yhteen sovitettuja, jotta varmistetaan johdonmukainen ja harmoninen testaus. Kun laadunvarmistusryhmä päättää, mitä mutaatioita lisätään, tai jopa suunnitellessaan alkuperäisiä testitapauksia, se voi pyrkiä varmistamaan, että nämä sopivat yhteen ja että testaus on kokonaisuudessaan sujuvampaa.

 

4. Määräajat ja aikataulut

 

Testausvaiheet vaihtelevat pituudeltaan, mutta niiden tulisi aina noudattaa yrityksen sisäisiä määräaikoja. Yritykset, jotka laiminlyövät mutaatiotestiensä asianmukaisen aikataulun, eivät välttämättä pysty saattamaan prosessia päätökseen ajoissa.

Ennen kuin projekti saavuttaa testausvaiheen, ryhmän on varmistettava, että testausaikataulu on riittävän kattava.

 

5. Riittämätön testien kattavuus

 

Yritykset voivat toteuttaa säännöstömutaationsa sattumanvaraisesti, mutta on silti tärkeää, että ne kattavat laajan valikoiman asioita.

Jotta sekä testaajat että ohjelmisto voivat havaita kaikki mutaatiotyypit, tarkistusten tulisi sisältää vähintään useita arvo-, päätös- ja lausemutaatioita.

 

6. Mutaatioiden käyttäminen ohjelmiston testaamiseen

 

Vaikka mutaatiotestaus tarjoaa uuden näkökulman sovellukseen, tiimien on käytettävä tätä menetelmää vain oman testausprosessinsa tarkistamiseen. Yrityksen on ymmärrettävä mutaatiotestauksen tarkat mahdollisuudet ja rajoitukset; tämä tekniikka voi onnistua vain yhdessä muiden ohjelmistotarkastusten kanssa.

 

7. Liian monta mutanttia

 

On ensiarvoisen tärkeää, että yritykset varmistavat testien laajan kattavuuden, mutta ne saattavat ottaa käyttöön liikaa mutantteja. Jokainen mutaatio-ohjelma vaatii huomattavan määrän laskentatehoa, mikä rajoittaa sitä, kuinka monta mutaatio-ohjelmaa organisaatio voi suorittaa samanaikaisesti.

Liian monien mutaatioiden suorittaminen voi myös vaikeuttaa testauksen määräaikojen noudattamista.

 

Mutaatiotestauksen tarkistuslista, vinkkejä ja temppuja

Ohjelmistotestauksen tarkistuslista

On olemassa useita lisävinkkejä, jotka voivat auttaa mitä tahansa ryhmää parantamaan mutaatiotestausprosessin onnistumista, kuten esimerkiksi seuraavat:

 

1. Tarkista ohjelmointikielen yhteensopivuus

 

Sekä ilmaiset että maksulliset mutaatiotestaustyökalut ovat yleensä erikoistuneet yhteen koodauskieleen, joten on tärkeää, että testaajat valitsevat työkalun, joka on yhteensopiva sovelluksen ja ohjelmistotestausalustan kanssa.

Testausryhmän olisi tutkittava monia vaihtoehtoja varmistaakseen, että he käyttävät ohjelmaa, joka sopii heidän budjettiinsa ja heidän haluamaansa koodauskieleen.

 

2. Jaa testit viisaasti

 

Testausryhmän eri jäsenet tarkastelevat todennäköisesti sovelluksen eri osa-alueita, mikä yleensä vastaa heidän vahvuuksiaan, heikkouksiaan ja yleistä kokemustaan.

Kun tiimi antaa mutaatiotestejä jokaiselle testaajalle, heidän pitäisi pitää tämä mielessä saadakseen käsityksen heidän pätevyydestään; tämä osoittaa, miten hyvin jatkotestaus todennäköisesti sujuu.

 

3. Valitse viat huolellisesti

 

Jos jossakin ohjelmiston viimeisimmässä iteraatiossa oli virhe, joka koski jotakin arvoa tai lauseketta, voi olla hyödyllistä toistaa tämä ja tutkia, miten tiimi tai ohjelma reagoi siihen.

Tämä auttaa takaamaan sovelluksen pitkäikäisyyden ja havainnollistaa tiimin kykyä huomata aiemmat virheet, jos ne toistuvat – tämä on regressiotestauksen keskeinen osa.

 

4. Maksimoi laskentateho

 

Koska mutaatiotarkistusten suorittaminen voi vaatia paljon laskentatehoa, yrityksen laitteistoa kannattaa hyödyntää mahdollisimman tehokkaasti.

Jos esimerkiksi tietyillä laitteilla on vahvemmat tekniset tiedot, voi olla hyödyllistä käyttää mutantteja näillä laitteilla. Näin yritys voi välttää merkittävät viivästykset, joita hitaammat koneet voisivat aiheuttaa.

 

5. Älä hylkää eläviä mutaatioita

 

Vaikka aikataulu olisi tiukka, testaajien olisi pyrittävä muuttamaan ja laajentamaan testitapauksiaan, jotta he voivat torjua kaikki prosessista selviytyvät mutantit.

Vaikka nämä virheet eivät ehkä tunnu merkittäviltä, jos ohjelmisto tai testaaja ei havaitse niitä, ne ovat silti osoitus siitä, että testitapaukset eivät ole tunnistaneet kaikkia koodausongelmia.

 

6. Tutkitaan uusia automaatio-ohjelmistoja

 

Jos tiimin testitapaukset ovat riittävän yksityiskohtaisia, mutta automaattinen testausohjelma ei pysty käyttämään niitä onnistuneesti jokaisen mutaation tunnistamiseen, tiimi saattaa hyötyä erilaisesta ohjelmistosta.

Tarjolla on monia ilmaisia ja maksullisia alustoja, ja yritysten tulisi tarkistaa kaikki vaihtoehdot varmistaakseen, että heillä on käytössään ohjelmisto, joka sopii parhaiten heidän testitapauksiinsa pitkällä aikavälillä.

 

7. Synkronoi jokainen testausprosessi

 

Yhteistyö on jokaisen testausstrategian keskeinen osa – se auttaa varmistamaan, että kaikki prosessit sopivat helposti yhteen tiimin tavoitteiden mukaisesti.

Testausryhmä voisi esimerkiksi kehittää testitapauksiaan mutaatioita silmällä pitäen varmistaakseen suuremman yhteensopivuuden, jolloin testaajien olisi helpompi validoida strategiansa.

 

8. Käytä yksikkötestausta

 

Yksikkötestauksen avulla laadunvarmistusryhmä voi tarkastaa koodin osat erikseen, mikä tehostaa testejä huomattavasti ja helpottaa tiimien ongelmien tunnistamista.

Tämä yhdistelmä voi olla erityisen hyödyllinen, jos testaajat ovat huolissaan määräajoista, sillä se antaa heille mahdollisuuden yksinkertaistaa tarkastuksiaan ja parantaa yleistä kattavuutta – mikä johtaa paljon vahvempiin ohjelmistotesteihin.

 

9. Kirjoita yksityiskohtaiset testitapaukset

 

Mutaatiotestitapausten olisi sisällettävä riittävästi tietoa mutaatiosta ja sen vaikutuksesta ohjelmaan sekä siitä, miten testausryhmä tai -alusta paikallisti nämä viat.

Antamalla mahdollisimman paljon yksityiskohtia testaaja voi henkilökohtaisesti validoida testitapauksen ja varmistaa, että tiimi tietää tarkalleen, miten testaus voidaan varmistaa sujuvasti.

 

5 parasta mutaatiotestaustyökalua

 

 

Käytettävissä on monenlaisia työkaluja, jotka voivat auttaa yrityksiä niiden mutaatiotestausvaatimuksissa. Kuten usein ohjelmistotestaussovellusten kohdalla, hinnat ja ominaisuudet vaihtelevat alustasta toiseen, joten on tärkeää, että organisaatiot valitsevat tarpeisiinsa parhaiten sopivan sovelluksen.

Jotkin näistä ohjelmista voivat tarjota ilmaisia vastineita tai olla täysin avoimen lähdekoodin ohjelmia, mutta yleensä on kuitenkin maksettava suuremmasta mukavuudesta.

 

Tässä on viisi parasta työkalua mutaatiotestaukseen.

 

1. Stryker

 

Stryker on erikoistunut JavaScript-mutaatioihin ja virtaviivaistaa tätä prosessia merkittävästi, jotta vääriä positiivisia tuloksia ei esiintyisi ja jotta testaajat joutuisivat käyttämään vähemmän vaivaa kaikkiin mutaatiotarkastuksiin.

Stryker-alusta arvioi ohjelmiston älykkäästi ja käyttää keräämiään tietoja selvittääkseen, mitkä merkkijonot tai koodin osat hyötyisivät mutaatiosta. Sovelluksen mukana tulee selväkielinen raportoija, joka antaa yhteenvedon mutantista, mukaan lukien sen, onko Stryker onnistunut tappamaan sen.

 

2. PITest

 

PITest on erittäin suosittu valinta kaikkialla maailmassa, koska se pystyy muuttamaan Javan tavukoodia ja tekemään tuhansia mutaatioita sekunnissa. Tämä sovellus käyttää testitapausten kattavuutta koskevia tietoja oppiakseen välittömästi, mitkä testit voivat tappaa mutantin.

Se suorittaa vain ne testit, joiden se tietää olevan merkityksellisiä, mikä rajoittaa laskentatehoa, jota tämä menettely yleensä kuluttaa. PITest on myös yhteensopiva useimpien Surefire-yksikkötestauslaajennuksen muotojen kanssa, mutta sillä voi olla vaikeuksia testijärjestysriippuvuuksien tehokkaassa hallinnassa.

 

3. Vakuutus++

 

Insure++:ssa on monia testausominaisuuksia, kuten mutaatioanalyysi, jonka avulla järjestelmä voi havaita ohjelmassa olevat epäselvyydet. Tavanomaisesta mutaatiotestauksesta poiketen Insure++ luopuu virheellisten mutaatioiden tuottamisesta ja luo sen sijaan toiminnallisesti vastaavia mutaatioita, jotka vastaavat projektin lähdekoodia.

Näin vältetään implisiittiset oletukset, jotka voivat tahattomasti rajoittaa testausprosessia ja jotka eivät välttämättä vastaa realistisia testausympäristöjä. Kuten nimestä voi päätellä, alusta on pääasiassa yhteensopiva C++-ohjelmien kanssa, ja kaikki ominaisuudet on kalibroitu tälle kielelle.

 

4. Jumble

 

Tämä sovellus on erikoistunut JUnit JavaScript -kehykseen, ja siinä on kattavat visuaaliset indikaattorit siitä, miten koodi reagoi mutaatioanalyysiin. Jumble on avoimen lähdekoodin alusta, joka toimii Java-sovellusten tavukoodin sisällä ja lyhentää jokaisen testisyklin aikaa.

Samankaltaiset sovellukset, jotka käyttävät yksinomaan ohjelman lähdekoodia, saattavat joskus tarvita enemmän aikaa näiden tarkistusten suorittamiseen, koska ne kääntävät ohjelmat uudelleen.

Jumble käyttää myös heuristiikkoja mutaatiotestauksen optimoimiseksi entisestään, mikä tekee myöhemmistä testiajoista yksinkertaisempia.

 

5. MutPy

 

MutPy tukee Python-pohjaisten sovellusten mutaatiotestejä ja tarjoaa täyden tuen korkeamman asteen mutaatioille sekä kattavan kattavuusanalyysin. Ohjelman käyttöliittymää on helppo käyttää tulostusvaiheessa, ja se näyttää käyttäjille selkeästi kaikki olennaiset yksityiskohdat ryhmän mutaatiotesteistä.

MutPy tarjoaa testaajille monia räätälöityjä vaihtoehtoja, joiden avulla he voivat kalibroida tämän ohjelmiston juuri omiin tarpeisiinsa. Alustassa käytetään abstrakteja syntaksipuita, jotka tarjoavat selkeän rakenteen sovelluksen lähdekoodista, mikä antaa testaajille enemmän luottamusta mutaatioihinsa.

 

Päätelmä

Koodimutaatiota voidaan soveltaa lähes kaikkiin ohjelmistotestausprosesseihin, ja se tarjoaa useita selkeitä etuja yrityksille, jotka ottavat tämän tekniikan käyttöön – erityisesti laadunvarmistusvaiheen alkuvaiheessa.

Mikään menetelmä ei ole vailla haasteita, joten on välttämätöntä, että organisaatiot harkitsevat viisaasti mutaatioanalyysin etuja ja varmistavat samalla, että se sopii niiden tavanomaiseen ohjelmistokehityksen aikatauluun.

Nämä mutaatiot antavat testaustiimille mahdollisuuden tarkastella omaa lähestymistapaansa ja määrittää sen tehokkuus lähdekoodin virheiden löytämisessä ja korjaamisessa. Tämä tekniikka on erityisen yhteensopiva automatisointimenettelyjen kanssa, sillä sen avulla yritykset voivat validoida ohjelmiston, jonka ne luottavat tarkastustensa käsittelyyn.

Mutaatiotestaus tarjoaa laadunvarmistusryhmille kattavan tavan ymmärtää paremmin omia prosessejaan ja ohjelmistojaan, mukaan lukien ongelmat, joita ne eivät muuten havaitsisi.

Tämän vuoksi on erittäin tärkeää, että testausryhmät tutkivat tarkasti tätä tekniikkaa arvioidakseen, vastaako se organisaation tarpeita – mukaan lukien se, onko valittu mutaatiotyökalu täysin yhteensopiva heidän ohjelmointikielensä kanssa. ZAPTESTin automatisoidussa testausohjelmistossa on monia ominaisuuksia, joiden ansiosta se läpäisee mutaatiotestit ja varmistaa, että tiimit luottavat täysin sen kykyihin.

Sekä Free- että Enterprise-versiot tarjoavat laadukkaan testausprosessin, joka pystyy mukautumaan koodimuutoksiin helposti.

 

Usein kysytyt kysymykset ja resurssit

1. Parhaat kurssit mutaatiotestauksesta

 

Verkkokurssit voivat auttaa ensikertalaisia testaajia oppimaan koodimutaation perusteet tai vahvistaa kokeneiden laadunvarmistushenkilöstön jäsenten jo olemassa olevia taitoja. Yleiset ohjelmistotestauksen oppitunnit voivat myös tarjota testaajille monia etuja. Parhaita verkkokursseja mutaatiotestaajille ovat muun muassa:

– PluralSightin ”Mutation Testing in Java with PITest” -teoksessa tarkastellaan erityisesti sitä, miten Java-koodia voidaan muuttaa ja miten tämä lähestymistapa voisi hyödyttää käytännön ohjelmistotestausprosesseja.

– Udemyn ’The Complete 2023 Software Testing Bootcamp’ on erityisen ajantasainen kurssi, joka havainnollistaa kaikki ohjelmistotestauksen keskeiset osatekijät, mukaan lukien white-box-testaus.

– Alisonin teos ’Software Testing – Condition Coverage and Mutation Testing Strategies’ on ilmainen ja siinä tarkastellaan tarkkaan, miten mutaatiotestaus voidaan toteuttaa viisaasti.

– PluralSightin ’Unit Testing Fundamentals’ -teoksessa tarkastellaan yksikkötestauksen hyötyjä ja ominaisuuksia ja autetaan opiskelijoita ymmärtämään vahvan yksikkötestauksen kirjoittamisen tarkka prosessi.

– Udemyn ’Johdatus yksikkötestaukseen’ on toinen ilmainen kurssi, joka tarjoaa selkeän jaottelun yksikkötestauksesta sekä testivetoisista kehitysstrategioista.

 

2. Mitkä ovat 5 tärkeintä haastattelukysymystä mutaatiotestauksesta?

 

Yritykset voivat esittää hakijoille haastattelussa useita kysymyksiä, joilla voidaan varmistaa heidän kokemuksensa tai ymmärryksensä mutaatiotestauksesta ja sen keskeisistä periaatteista. Näin yritys voi varmistaa, että se palkkaa pätevän testaajan, joka pystyy lähestymään erilaisia mutaatioihin liittyviä skenaarioita helposti.

Tarkat kysymykset vaihtelevat, mutta niihin voi sisältyä esimerkiksi omien mielipiteiden kysyminen tai esimerkkien pyytäminen koodimutaatiotaidoista.

 

Viisi tärkeintä mutaatiotestauksen haastattelukysymystä ovat:

 

– Mistä mutaatiotestaustyökaluista sinulla on aiempaa kokemusta, jos on? Mitkä olivat tämän ohjelmiston tärkeimmät ominaisuudet?

– Miten varmistaisit testauksen nopeuden ja syvyyden tasapainon, kun teet koodimutaatiota?

– Missä tilanteissa mutaatioanalyysi olisi mahdotonta? Miten tarkastaisit testausmenettelyn näissä tilanteissa?

– Jos arvomutaatio onnistuu selviytymään testiprosessista, miten toimisit estääkseen sen toistumisen?

– Mitä tietoja sisällyttäisit mutaatiotestitapaukseen, jotta voisit taata, että kollegoillasi on tarvittavat tiedot?

 

3. Parhaat YouTube-oppaat mutaatiotestauksesta

 

YouTubessa on saatavilla ilmaisia opetusohjelmia, webinaareja ja muita videoita, joiden avulla testaaja voi syventää ymmärrystään mutaatiotestauksesta. Joitakin hyödyllisimpiä videoita ja sarjoja aiheesta ovat muun muassa:

 

– Software Testingin ”Mutation Testing for Programs”, jossa annetaan käytännön esimerkkejä siitä, miten koodimutaatio auttaa ohjelmia, sekä siitä, miten kirjoittaa perusteellisia testitapauksia.

– Devoxxin ”Mutaatiotestaus: jossa tarkastellaan, miten mutaatioanalyysi parantaa kaikenlaisten ohjelmistoprojektien testausmenettelyjä.

– NDC-konferenssien ’Tappakaa kaikki mutantit! Intro to Mutation Testing’, jossa tutkitaan, miten testausohjelmat voivat hyötyä koodimutaatiosta ja sen avulla syntyvistä virheistä.

– GOTO Conferencesin ”Mutation Testing in Python”, jossa tarkastellaan erityisesti sitä, miten Python-pohjaiset sovellukset voivat soveltaa mutaatioanalyysiä erityisten testaustavoitteiden saavuttamiseksi.

– Diego Pachecon ”Java Mutation Testing With PITest”, jossa kuvataan samalla tavalla JavaScript-ohjelmistojen koodimutaatiota – keskittyen PITest-mutaatio-ohjelmaan.

 

4. Miten ylläpitää mutaatiotestejä?

 

Yhdistämällä mutaatioanalyysin regressiotestaukseen ja muihin pitkän aikavälin strategioihin yritykset voivat varmistaa laadunvarmistuksen korkean tason myös julkaisun jälkeen.

Myöhemmät päivitykset voivat johtaa koodimuutoksiin, jotka edellyttävät lisätarkastuksia. Mutaatiotestaus osoittaa, että automaatio-ohjelmisto ja testaajat ovat johdonmukaisia saman ohjelmiston eri versioissa, mikä todentaa uudelleen niiden tietyn lähestymistavan.

Uudet toiminnot edellyttävät uusia testitapauksia, varsinkin jos nämä toiminnot ovat vuorovaikutuksessa jo olemassa olevien toimintojen kanssa.

Tämän lisäksi testivetoinen kehitys antaa tiimin jäsenille mahdollisuuden suunnitella ohjelmiston pitkäikäisyyttä ja testata yhteensopivuutta osana omaa kehityssykliä.

Download post as PDF

Alex Zap Chernyak

Alex Zap Chernyak

Founder and CEO of ZAPTEST, with 20 years of experience in Software Automation for Testing + RPA processes, and application development. Read Alex Zap Chernyak's full executive profile on Forbes.

Get PDF-file of this post

Virtual Expert

ZAPTEST

ZAPTEST Logo