Get your 6-month No-Cost Opt-Out offer for Unlimited Software Automation?

Mutacijsko testiranje ali programska mutacija je tehnika testiranja bele škatle, ki podjetjem pomaga razviti vrsto novih preverjanj programske opreme, hkrati pa revidira trenutne postopke projekta. Gre za razmeroma nov pristop, ki zagotavlja, da tako razvijalci kot preizkuševalci delajo po visokih standardih.

Aplikacija je uspešna ali dobra le toliko, kolikor so uspešni njeni postopki zagotavljanja kakovosti, zato je nujno, da organizacije uporabljajo več kot eno vrsto tehnik testiranja.

S spoznavanjem testiranja mutacij bi lahko testne skupine izboljšale svoje znanje in splošni repertoar ter tako izboljšale zanesljivost teh preverjanj. Testiranje mutacij je zapleten in občutljiv proces, zato je ključnega pomena, da testerji temeljito preučijo prednosti, izzive in programe tretjih oseb, ki lahko zagotovijo uspešno izvedbo.

V tem članku si bomo ogledali testiranje mutacij in kako izboljšuje zagotavljanje kakovosti ter druge ključne vidike za ekipe za testiranje programske opreme.

 

Table of Contents

Kaj je testiranje mutacij pri testiranju programske opreme?

Prednosti ustanovitve centra odličnosti za testiranje. Ali se testiranje zmogljivosti razlikuje od funkcionalnega testiranja?

V kontekstu programske opreme testiranje mutacij pomeni, da ekipa za zagotavljanje kakovosti namerno vnese napake – ali “mutacije” – v kodo aplikacije in preveri, kako se ekipa odzove. Cilj je ustvariti napako in poskrbeti, da bo testni paket lahko prepoznal vsako spremembo aplikacije.

Pri urejanju programske kode lahko preizkuševalec mutacij zamenja izraz true/false, izbriše izjavo ali preprosto spremeni vrednost. Te napake se lahko med drugimi preverjanji programske opreme pokažejo na več načinov; vse te napake zlahka odkrije usposobljena in izkušena ekipa za testiranje.

Same mutacije so pogosto zelo majhne, zato lahko preizkuševalec, ki mutira kodo, opazuje, kako ekipa odkriva te spremembe. Pomembne spremembe bi bile očitne že ob bežnem pogledu, zato so manjše napake običajno najboljši način, da se prepričate, da podjetje uporablja zanesljive prakse testiranja.

Ta tehnika posebej obravnava učinkovitost testnih primerov skupine; dokumentov, ki vsebujejo informacije o testih. Ekipa lahko za izvajanje teh preverjanj uporablja tudi programsko opremo za avtomatizacijo tretjih oseb, pri čemer se pri testiranju mutacij preverja, kako dobro lahko ta platforma odkriva napake v programski kodi.

 

1. Kdaj morate opraviti testiranje mutacij?

 

Ker je cilj testiranja mutacij potrditi in izboljšati trenutne preglede zagotavljanja kakovosti, je za ekipe bistvenega pomena, da ga izvedejo že v zgodnji fazi testiranja. To pomeni, da je v primeru, da testni paket ne more prepoznati in “ubiti” mutantov, na voljo dovolj časa za korenite spremembe testnih postopkov v organizaciji v kakršnem koli obsegu.

Ker gre za zelo vsestransko metodo, je testiranje mutacij uporabno za praktično vse vrste programske opreme, vključno s spletnimi, mobilnimi in namiznimi programi. To se najbolje obnese v fazi testiranja enot, ki preverja najmanjše komponente aplikacije.

 

2. Kdaj vam ni treba opraviti testiranja mutacij

 

Še vedno obstajajo scenariji, v katerih mutacija in splošno testiranje bele škatle za program nista primerna; to je lahko posledica različnih razlogov.

Na primer, če želijo testerji preveriti samo testiranje črne škatle – v tem primeru bi se namesto tega osredotočili na sprednji del za to sejo ali celo na celotno fazo testiranja.

Nekatera podjetja menijo, da je testiranje bele škatle dolgočasno in zamudno, zato lahko ta postopek preskočijo. Močni, dobro preverjeni testni primeri lahko tudi preprečijo potrebo po testiranju mutacij, saj to kaže na prizadevnost ekipe in njeno zavezanost natančnim testnim postopkom.

 

3. Kdo sodeluje pri analizi mutacij?

kdo sodeluje pri testiranju programske opreme

Pri analizi mutacij je vključenih več različnih vlog, med drugim:

 

– Testerji mutacij

Z vnašanjem različnih manjših napak spreminjajo kodo, da bi zagotovili, da postopek testiranja deluje po pričakovanjih. Ti preizkuševalci so običajno že obstoječi člani skupine za zagotavljanje kakovosti.

 

– Preizkuševalci aplikacij

Redno preverjajo kodo in ugotavljajo morebitne težave, pri čemer ugotovljene mutacije prepoznajo in popravijo. Za iskanje napak v kodiranju izvajajo testiranje bele škatle, uporabljajo pa tudi druge tehnike.

 

– Razvijalci aplikacij

Oblikujejo funkcije programa in napišejo začetno kodo. Odpravijo tudi vse težave, ki jih odkrijejo preizkuševalci, in tako zagotovijo, da je programska oprema v stabilnem stanju za objavo.

 

– Vodje projektov

Nudijo navodila za uporabo in lahko delajo skupaj s testerji mutacij, da preverijo učinkovitost svojih ekip. Zagotavljajo stroge standarde na vseh stopnjah razvoja.

 

Kaj testiramo s testi mutacij?

razjasnitev nekaterih nejasnosti pri avtomatizaciji testiranja programske opreme

Mutacijsko testiranje se bolj osredotoča na testiranje procesov in ne na aplikacijo. V ta namen preučuje naslednje:

 

1. Testni primeri

 

Testni primeri so dokumenti, ki vsebujejo podrobne informacije o vsakem testu, vključno z rezultati, ki jih testerji pričakujejo od vsakega posameznega preverjanja. Dosledni in natančni testni primeri članom ekipe za zagotavljanje kakovosti omogočajo, da si ustvarijo predstavo o stanju aplikacije in o tem, kako njeno delovanje ustreza pričakovanjem podjetja.

Informacije v teh testnih primerih lahko določajo sposobnost preizkuševalca, da odkrije določene napake – tudi tiste, ki jih povzroča testiranje mutacij.

 

2. Standardi preskušanja

 

S testi mutacije natančno preučite trenutne postopke testiranja, da bi zagotovili, da lahko člani ekipe odkrijejo tudi manjše težave, ki bi lahko vplivale na uporabnikovo dojemanje programske opreme.

Skrbnost in usposobljenost preizkuševalcev sta lahko celo glavna dejavnika, ki ju podjetje ocenjuje s temi pregledi. Če testerji v vsaki fazi ne bodo pozorni na podrobnosti, lahko spregledajo resne mutacije, ki so prisotne v programu.

 

3. Posamezne enote kode

 

Mutacijski testi so pogosti med delom testiranja enot pri razvoju. Ta obravnava posamezne komponente, da se ohrani močan poudarek na vsakem testu, kar znatno optimizira celoten postopek, saj zagotavlja, da testerji delajo le z ustreznimi vrsticami kode.

Ker so mutacijski testi pogosto v zgodnji fazi zagotavljanja kakovosti in so lahko predhodnik celovitega testiranja, lahko ta pristop poveča hitrost, ne da bi pri tem ogrozil natančnost.

 

4. Posodobitve programa

 

Posodobitve programske opreme običajno vključujejo ponovni zagon postopka testiranja, da se prepričamo, da ni novih napak in da se prejšnje napake ne pojavijo znova.

Ponavljanje mutacijskih testov je ključni del tega in pomaga spodbujati dosledne standarde testiranja po večjih spremembah programske opreme.

Ekipa za testiranje morda meni, da temeljiti pregledi po posodobitvi niso potrebni, vendar lahko mutacija kode zagotovi, da se zavedajo pomena testiranja v vseh fazah razvoja.

 

5. Programska oprema za avtomatizacijo

 

Podjetja izvajajo tudi testiranje mutacij, da preverijo svoje avtomatizirane testne komplete in se prepričajo, da so med drugim sposobni zaznati mutirano kodo.

Če lahko aplikacija za testiranje tretje osebe prepozna zunanje spremembe programa in jih morda celo popravi, to pomeni, da lahko organizacija zaupa programski opremi za avtomatizacijo testov.

Bistveno je, da podjetja potrdijo svoj pristop k avtomatizaciji; to zagotavlja mirno vest vsakemu preizkuševalcu.

 

6. Strategija avtomatizacije

 

Kako podjetje vključi avtomatizacijo v svoje procese, je prav tako pomembno kot programska oprema, ki jo uporablja; lahko se na primer odloči za hiperavtomatizacijo. Tako se lahko podjetje pametno odloči, katere mutacije in teste programske opreme bo avtomatiziralo.

Brez močne strategije avtomatizacije, ki upošteva raznolikost kode aplikacije, so lahko nekateri testi nezdružljivi z avtomatizacijo, kar omejuje zmožnosti platforme.

 

7. Aplikacija

 

Čeprav se testiranje mutacij bolj osredotoča na ekipo za testiranje kot na aplikacijo, lahko vseeno izpostavi pomembne informacije o tem programu.

S testiranjem mutacije se na primer pokaže, kako se programska oprema odziva na spremembe v kodi, vključno s tem, ali te težave sporoča na način, ki ga ekipa pričakuje.

Ta pristop ni tehnika testiranja programske opreme, vendar lahko kljub temu ponudi zanimive podatke o njenem notranjem delovanju.

 

Življenjski cikel testov mutacij

Običajni življenjski cikel testiranja mutacij je naslednji:

 

1. Analiza zahtev

 

Prvi korak v življenjskem ciklu testiranja mutacij je natančno ugotoviti, kaj je treba potrditi in kateri deli kode aplikacije bi imeli največ koristi od teh testov.

Ekipa se lahko pogovori z razvijalci in vodstvenimi delavci, da ugotovi njihove pomisleke in jih začne reševati.

 

2. Načrtovanje testiranja

 

Nato testerji začnejo razvijati natančne preglede, ki jih nameravajo izvesti – v tem primeru mutacije, ki bodo omogočile najboljši vpogled.

V tej fazi se določi celotna strategija testiranja mutacij in način, kako bo ekipa učinkovito izvedla predvidene mutacije kode.

 

3. Razvoj testnih primerov

 

Testiranje mutacij vključuje ločeno testno dokumentacijo, vključno z informacijami o mutirani kodi in o tem, kako naj testerji odpravijo težavo.

Dobro vodenje evidenc zagotavlja, da vsi testi potekajo po načrtih, in lahko ekipi pomaga ohraniti zavezanost visokim standardom testiranja.

 

4. Nastavitev preskusnega okolja

 

Preizkuševalci se prepričajo, da je aplikacija pripravljena, da jo lahko spremenijo, in da imajo na voljo postopek za odpravo teh težav, če jih drugi člani ekipe ne morejo odkriti.

Pri tem testerji mutacij vzpostavijo testni strežnik in ga uporabijo kot platno za svoje mutacije.

 

5. Izvedba testov

 

Po končanih pripravah preizkuševalci spremenijo kodo v več sestavnih delih aplikacije; nato počakajo, da drugi preizkuševalci opazijo in odpravijo težave.

Tako preizkuševalci mutacij kot preizkuševalci aplikacij morajo to obširno dokumentirati, da se prepričajo, da so njihovi zapisi zanesljivi.

 

6. Zaključek preskusnega cikla

 

Ko je testiranje končano, testerji mutacij dvakrat preverijo, ali so vse spremembe, ki so jih naredili, popravili testerji aplikacij ali sami.

Nato zaključijo testni cikel in analizirajo rezultate ter razpravljajo o tem, kako so se testerji odzvali na različne napake in kako so jih znali odpraviti.

 

7. Ponavljanje testov

 

Po zaprtju preskusnega cikla ga bo morda treba ponovno aktivirati po prihodnjih posodobitvah programske opreme.

Vsaka sprememba v aplikaciji na nek način spremeni njeno funkcionalnost, kar povzroči nove možnosti, ki jih mora ekipa upoštevati, da zagotovi dovolj natančen postopek testiranja.

 

Prednosti testiranja mutacij

 

Testiranje mutacij prinaša številne prednosti, med drugim:

 

1. Potrjuje postopek testiranja

 

Glavna prednost testiranja mutacij je, da lahko pokaže, kako preizkuševalci v podjetju pristopajo k programski opremi – in njihovo sposobnost prepoznavanja težav s kodiranjem. To zagotavlja tudi, da so testni primeri ekipe dovolj izčrpni in zajemajo vse potrebne teste.

S testi mutacije se preveri celoten postopek testiranja v organizaciji, da se zagotovi, da deluje v skladu s pričakovanji.

 

2. Zagotavlja močno avtomatizacijo

 

S testiranjem mutacij lahko ekipa preveri, ali je platforma za avtomatizacijo testiranja tretje osebe sposobna ustrezno prepoznati napake v kodi in jih odpraviti na pravilen način.

Če jih ta programska oprema ne zazna niti po potrebni kalibraciji, bi bilo morda vredno zamenjati platformo s tisto, ki te preskuse zlahka opravi.

 

3. Dobra pokritost

 

Vsak postopek testiranja programske opreme mora biti sposoben široko pokriti celotno aplikacijo, da se vsakemu vidiku zagotovi potrebna raven pozornosti.

Preizkuševalci mutacij lahko spremenijo kateri koli del programske kode; dobra izvedba omogoča, da ti preizkusi zajamejo vse glavne funkcije. Tako se testerji naučijo iskati težave v celotni aplikaciji.

 

4. Preuči izvorno kodo

 

Ker testiranje mutacije vključuje delo s kodo in po potrebi neposredne spremembe, lahko ta metoda poudari tudi neoptimizirano skriptno pisanje v aplikaciji.

Preizkuševalci programske opreme lahko odobrijo program in izvedejo običajni krog preizkusov le, če je programska koda ustrezna; s temi pregledi lahko preizkuševalci opozorijo na morebitne prihodnje težave.

 

5. Vodi do boljše programske opreme

 

Testiranje mutacij pomaga zagotoviti, da postopki testiranja aplikacije ustrezajo zahtevam programa.

Če analiza mutacij razkrije, da ekipa za zagotavljanje kakovosti ne izvaja pravih postopkov ali da so testni primeri neustrezni, lahko testerji to izboljšajo. Brez te skrbnosti lahko organizacija izda napačen izdelek, ne da bi se tega zavedala.

 

6. Učinkovito za različne jezike

 

Ne glede na jezik, ki ga testna skupina uporablja za svojo aplikacijo, so na voljo možnosti programske opreme, ki lahko zagotovijo visokokakovostno analizo mutacij.

To vključuje številne funkcije kakovosti življenja, ki so značilne za ta jezik in poenostavljajo preglede za večjo zanesljivost. Pristop, prilagojen različnim jezikom, izboljša kakovost vsakega posameznega testa.

 

7. Zelo dostopna orodja

 

Mnoge od najboljših platform za mutacije so v celoti odprtokodne, kar pomeni, da ponujajo več možnosti prilagajanja in obsežen nabor funkcij brezplačno ali po drastično nižjih cenah.

Mutacija kode je v primerjavi s številnimi drugimi oblikami testiranja manj ovir, zato je koristen in priročen način za podjetja, da ocenijo ali celo izboljšajo svoj pristop k zagotavljanju kakovosti.

 

Izzivi testiranja mutacij

izzivi testiranje obremenitve

 

Ta proces je povezan tudi s številnimi izzivi, kot so:

 

1. Zahteva znanje programiranja

 

Da lahko preizkuševalci izvajajo ta preverjanja, morajo imeti celovito znanje o programu in kodi, kar otežuje sodelovanje manj izkušenih preizkuševalcev.

Podjetje lahko testira programsko opremo le na načine, ki ustrezajo obstoječim sposobnostim testerjev, zlasti njihovi zmožnosti urejanja aplikacije in ustvarjanja napak v kodiranju, ki jih je mogoče odpraviti.

 

2. Ni primerno za testiranje črne škatle

 

Testiranje črne škatle vključuje predvsem pregled sprednjega dela aplikacije brez pregleda njenega notranjega delovanja in kode – to je dejansko nezdružljivo s testiranjem mutacije.

Zato so ta preverjanja koristna le za nekatere teste v primerjavi z drugimi metodami, od katerih lahko mnoge zagotavljajo veliko večjo pokritost celotne faze testiranja.

 

3. Načrtovanje mutacijskih testov je zamudno

 

Mutacija kode je lahko zamuden postopek, saj mora ekipa poiskati posamezne komponente, ki bi jih bilo vredno mutirati. Že samo odločanje o tem, katere mutacije je treba uvesti, lahko vzame veliko časa; to je lahko problematično, če druge vrste testiranja dejansko čakajo na te preglede, da bi v celoti potrdili pristop podjetja k testiranju.

 

4. Lahko zahteva veliko mutacij kode

 

Podobno velja tudi za kompleksne projekte, pri katerih je seveda potrebno večje število mutantov, da se zagotovi celovit pristop k testiranju. To podaljša čas faze mutacije in lahko vključuje številne ročne spremembe kode aplikacije.

Brez visokokakovostne programske opreme za avtomatizacijo testiranja z možnostjo mutacije programa bi lahko testerji to težko uspešno izvedli.

 

5. Preizkuševalci morda ne bodo opazili napak

 

Največja skrb, ki jo imajo testerji mutacij in vodje projektov pri izvajanju teh preverjanj, je možnost, da testerji programske opreme (ročni ali avtomatizirani) preprosto ne bodo opazili težav.

To lahko zahteva popolno prenovo postopkov testiranja v podjetju, čeprav lahko testerji s tem pridobijo pomembne informacije o njihovih standardih zagotavljanja kakovosti.

 

6. Lahko zahteva veliko pomnilnika

 

Testiranje mutacij na splošno zahteva veliko procesorske moči, čeprav je to lahko odvisno od aplikacije, ki jo testerji uporabljajo.

Če ima organizacija omejeno število strojev ali če imajo te naprave nizke specifikacije, lahko težko izvajajo preveč hkratnih mutacij. To vpliva na število preverjanj, ki jih lahko opravijo pred koncem faze testiranja.

 

7. Poročila lahko vsebujejo veliko informacij.

 

Čeprav je to odvisno predvsem od vmesnika orodja za testiranje mutacij, ki ga uporablja ekipa, je poročila, ki jih ustvarjajo, težko razčleniti.

To pomeni, da je potreben čas, da jih ročno razvrstimo in poiščemo prave rezultate testov; nekateri programi omogočajo uporabnikom, da prilagodijo dejanski postopek poročanja; to se razlikuje od programa do programa.

 

Značilnosti testov mutacij

Nefunkcionalno testiranje: kaj je, različne vrste, pristopi in orodja

Glavne značilnosti učinkovitih mutacijskih testov so:

 

1. Celovita

 

Ta preverjanja zajemajo vse glavne vidike programske opreme; podjetja z dovolj viri lahko celo oblikujejo mutacijski test za vsak običajni testni primer.

Natančno število je odvisno od zmogljivosti in želja organizacije, vendar pa učinkoviti testi mutacij zajemajo širok razpon kodiranih funkcij.

 

2. Strateški

 

Podobno morajo programske mutacije slediti jasni in dobro načrtovani strukturi, ki olajša doseganje splošnih ciljev organizacije na področju testiranja.

Napake, ki jih ustvarijo, se lahko na primer približajo realističnim napakam pri testiranju, zaradi česar lahko testerji predvidijo te težave, če se naravno pojavijo, kar bistveno izboljša postopek testiranja v podjetju.

 

3. Konstruktivni

 

Namen testiranja mutacij je ugotoviti pomanjkljivosti pri testiranju in pokazati, kako lahko ekipa izboljša svoje preverjanje in odpravi manjše napake, ko se pojavijo.

Testerji mutacij morajo dati prednost “neveljavnim” mutacijam, ki vplivajo na funkcionalnost programske opreme, kar omogoča jasnejše izboljšave testiranja v celotnem projektu.

 

4. Preemptivni

 

Ta preverjanja so namenjena potrditvi splošne strategije ekipe; to pomeni, da testiranje mutacij bolje deluje v zgodnjih fazah razvoja.

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

Če preizkuševalci opazijo pomembne pomanjkljivosti v svojem pristopu k zagotavljanju kakovosti, imajo na ta način dovolj časa, da spremenijo svoje testne primere in se prepričajo, da so ustrezni.

 

5. Dosledno

 

Testiranje mutacij v različnih iteracijah aplikacije bi moralo dati dosledne rezultate, hkrati pa dodati več preverjanj za prilagajanje spremembam programske opreme.

Pri nadaljnjih preverjanjih je treba enako pozornost nameniti podrobnostim, da se ohrani njihova učinkovitost – brez te natančnosti lahko postanejo mutacijski testi manj natančni.

 

6. Subtilno

 

Namen testov mutacije je preveriti sposobnost skupine za zagotavljanje kakovosti, da s svojimi testi in platformami tretjih oseb odkrije napake v kodi.

To pomeni, da testi ne smejo biti takoj očitni vsem, ki pregledujejo programsko opremo; cilj je preučiti, kako se testerji odzivajo na manjše težave s kodo.

 

7. Sodelovanje

 

Kot pri vsakem testiranju programske opreme je tudi mutacija kode proces, ki za svoj uspeh običajno zahteva timsko delo in komunikacijo. Ohranjanje sodelovalnega vzdušja pomaga preprečiti informacijske silose, ki bi lahko povzročili napačno komunikacijo – to tudi zagotavlja, da vsak tester ostane osredotočen na svoje naloge.

 

Vrste testov mutacij

testiranje na koncu peke, orodja, kaj je to, vrste, pristopi

Tri glavne vrste mutacijskih testov so:

 

1. Mutacija vrednosti

 

Vrednostne mutacije neposredno spreminjajo vrednosti v kodi, tako da eno številko ali črko zamenjajo z drugo, kar vpliva na funkcionalnost aplikacije.

Preizkuševalec lahko na primer spremeni natančne parametre programa, na primer številke, na katere se odziva. Preizkuševalci mutacij se lahko posebej osredotočijo na konstantne vrednosti programske opreme, saj te med običajnim delovanjem vedno ostanejo enake.

 

2. Odločitvena mutacija

 

Odločitvene mutacije spreminjajo aritmetične in logične operatorje ter tako učinkovito spreminjajo način, kako se aplikacija odziva na določene situacije.

Na primer, zamenjava operatorja večjega od (>) z operatorjem manjšega od (<) seveda vpliva na izpis programa. Preizkuševalci lahko tudi zamenjajo “ali” z “in” ali obratno, kar bistveno spremeni to programsko opremo in njeno razlago informacij, ki jih posredujejo drugi preizkuševalci in morebitni uporabniki.

 

3. Mutacija izjave

 

Mutacije izjav spreminjajo dejanske izjave v kodi in spreminjajo pravila, ki jih aplikacija uporablja za sprejemanje odločitev. Preizkuševalci lahko spremenijo vsebino teh vrstic, jih podvojijo ali celo izbrišejo, da preverijo, kako mutirani program vpliva na delovanje programske opreme.

Te mutacije spremenijo gradnike programa, pri čemer lahko odstranijo celotne funkcije ali kako drugače preprečijo njihovo delovanje.

 

Razjasnitev nekaterih nejasnosti

– Testiranje mutacij proti testiranju regresije

Primerjava testiranja UAT z regresijskim testiranjem in drugimi testi

Mutacijsko in regresijsko testiranje sta uporabna pristopa k testiranju programske opreme – razumevanje vsake od teh tehnik lahko izboljša splošno zagotavljanje kakovosti v podjetju.

 

1. Kaj je regresijsko testiranje?

 

Regresijsko testiranje je testiranje, pri katerem testerji preverjajo programsko opremo med različnimi iteracijami, da bi se prepričali, da kljub spremembam v kodi še vedno deluje.

Tudi manjše spremembe lahko brez teh preverjanj povzročijo resne težave, zaradi katerih se lahko ponovno pojavijo prejšnje napake. To običajno zahteva avtomatizacijo zaradi zapletene narave ponovnega testiranja vsake komponente; mnoga podjetja se zaradi tega odpovedo regresijskim testom.

Preizkuševalci lahko te preglede izvajajo na posameznih enotah, sestavnih delih ali celotnem izdelku – natančen obseg potrebnih preizkusov je odvisen predvsem od projekta in njegovega obsega.

 

2. Kakšna je razlika med mutacijskimi in regresijskimi testi?

 

Regresijsko testiranje se osredotoča predvsem na preverjanje programa in njegove funkcionalnosti, mutacija kode pa na to, kako se testerji odzivajo na težave.

Prvo se večinoma izvaja po več iteracijah programa, preverjanje mutacij pa se lahko izvede v kateri koli fazi razvoja, vendar običajno v zgodnjih delih faze testiranja.

Tako regresijski kot mutacijski testi se lahko ukvarjajo s posameznimi kodnimi enotami in s tem, kako lahko manjše spremembe povzročijo pomembne težave, ki jih morajo testerji odpraviti.

 

3. Zaključek: Testiranje mutacij v primerjavi z avtomatiziranim testiranjem

Prednosti ustanovitve centra odličnosti za testiranje. Ali se testiranje zmogljivosti razlikuje od funkcionalnega testiranja?

Avtomatizacija je pogosto ključni del testiranja mutacij zaradi velikega števila preverjanj in enot – zato je včasih ključnega pomena za uspešen in celovit postopek testiranja.

Podjetja pogosto uporabljajo mutacije kode za preverjanje svoje platforme za avtomatizacijo tretje osebe in tega, kako dobro prepoznava problematične skripte.

S kombiniranjem temeljitega kataloga pregledov mutacij z avtomatizirano programsko opremo lahko podjetje bistveno poveča pokritost in zagotovi boljše rezultate.

Čeprav gre za dve ločeni praksi testiranja, ni nujno, da si nasprotujeta. Vključevanje robotske avtomatizacije procesov lahko na primer okrepi strategijo podjetja za testiranje mutacij.

 

Kaj potrebujete za začetek testiranja mutacij v inženirstvu programske opreme?

kontrolni seznam postopkov testiranja programske opreme

Običajne zahteve za celovito testiranje mutacij vključujejo:

 

1. Jasna strategija testiranja

 

Skupina za testiranje mora določiti strategijo za testiranje mutacij, vključno s tem, katere komponente in enote je najpomembneje preveriti.

Nekateri vidiki kode so lahko na primer bolj pomembni za uspeh in funkcionalnost aplikacije; preizkuševalci morajo poskrbeti, da je na voljo dovolj mutacij, ki to upoštevajo.

Pomemben dejavnik je tudi urnik testiranja mutacij v podjetju, saj je tako zagotovljeno, da imajo testerji dovolj časa za raziskovanje kode.

 

2. Brez širjenja področja uporabe

 

Tudi s temeljito strategijo, ki določa pristop podjetja k testiranju mutacij, se lahko zgodi, da je število testov bistveno večje, kot je potrebno.

Učinkovitost je pri tem postopku najpomembnejša, zlasti ker lahko ekipa čaka na druge faze testiranja, da najde in uniči mutacije. Preden testerji začnejo spreminjati kodo, morajo jasno opredeliti svoje področje delovanja; tako bodo zagotovili, da bo vse obvladljivo v praktičnem časovnem okviru.

 

3. Stroga dokumentacija

 

Vsakemu postopku testiranja koristi popolna dokumentacija – pogosto v obliki testnih primerov, v katerih so podrobno opisani posamezni pregledi in vse ustrezne spremembe.

To ponazarja trenutni napredek ekipe pri vseh testih, kar je še posebej koristno za vodje in vodstvene delavce. Dokumentiranje vsake mutacije kode testerjem pomaga tudi pri vodenju jasne evidence o spremembah, ki jih izvajajo.

Če ekipa za zagotavljanje kakovosti med testiranjem težko najde te mutacije, ti dokumenti učinkovito služijo kot ključ odgovora.

 

4. Usposobljeni preizkuševalci

 

Preizkuševalci, ki spreminjajo kodo, morajo dobro poznati programsko opremo, vključno s številnimi načini, s katerimi jo lahko spremenijo ali celo pokvarijo.

Testerji mutacij približno vedo, kako bodo njihove spremembe vplivale na aplikacijo in kako bi lahko drugi člani skupine za zagotavljanje kakovosti prepoznali mutirano kodo.

Za to je običajno potrebno dobro znanje programiranja. Da bi bila analiza mutacij učinkovita, morajo imeti tudi preizkuševalci programske opreme dobro razvite spretnosti in izkušnje s preizkušanjem.

 

5. Programska oprema za avtomatizacijo

 

Pred testiranjem mutacij je lahko zaradi številnih preverjanj, ki jih ta postopek pogosto zahteva, potrebna programska oprema za avtomatizacijo tretje osebe. To še posebej velja za zapletene aplikacije z več kode in funkcij, ki jih mora pregledati skupina za zagotavljanje kakovosti.

Podjetja lahko ta preverjanja izvajajo posebej za preizkušanje odziva programske opreme za avtomatizacijo na napake pri kodiranju. To je lahko osrednji del poskusnega postopka podjetja, v katerem se odloči, kateri programi so najbolj uporabni.

 

Postopek testiranja mutacij

kontrolni seznam uat, orodja za testiranje spletnih aplikacij, avtomatizacija in drugo

Običajni koraki, ki jih testerji običajno izvajajo pri analizi mutacij, so:

 

1. Priprava testov

 

Priprava je prvi korak vsakega postopka testiranja. To vključuje pogajanja o natančnih preverjanjih, ki jih je treba izvesti, in pridobitev vseh potrebnih odobritev, na primer od vodstva podjetja in zainteresiranih strani.

Preizkuševalci morajo te preglede pripraviti tako, da se prilagodijo časovnemu načrtu projekta in hkrati pokrijejo vse glavne komponente. Načrtovanje ekipe lahko vpliva na učinkovitost mutacij kode.

 

2. Predstavitev mutantov in napak

 

Ko so priprave končane, testna ekipa začne spreminjati kodo in jo spreminjati v skladu s svojim načrtom za uvedbo določenih napak. Te napake morajo biti razmeroma majhne, saj tako lahko testerji ocenijo sposobnost preostalih članov ekipe, da prepoznajo težave pri kodiranju.

Manjše napake lahko organizaciji pomagajo tudi pri preverjanju občutljivosti programske opreme za avtomatizacijo tretjih oseb.

 

3. Uporaba testnih primerov

 

Testni primeri morajo upoštevati vse možne točke napake v aplikaciji – to lahko zahteva ponovno pisanje, če je mutirani program sposoben delovati brez napak.

Testni primeri programa predstavljajo celoten obseg preverjanj, ki jih izvajajo preizkuševalci; vsak od njih mora preizkuševalcem pomagati odkriti vse skrite mutacije in biti sestavni del uporabnosti programa.

 

4. Primerjava rezultatov

 

Po dodajanju mutacijskih napak v program in uporabi testnih primerov ekipe mora ekipa primerjati rezultate izvirnega in mutiranega programa.

Upamo, da bo za vsako uspešno preverjanje v izvirniku tudi napaka v mutirani aplikaciji. To dokazuje sposobnosti testerjev in orodij, ki jih uporabljajo.

 

5. Ukrepanje na podlagi različnih rezultatov

 

Če se izvorni in mutirani program razlikujeta glede na pričakovanja preizkuševalcev, to pomeni, da lahko testni primer uspešno uniči mutirani program, tako da dokaže njegovo prisotnost.

Testerji lahko nato nadaljujejo z zaupanjem v svojo metodologijo in sposobnost prepoznavanja težav pri kodiranju. Za te posebne teste niso potrebne spremembe testnih primerov.

 

6. Po potrebi zamenjajte ohišja

 

Nekatere mutacije kode lahko privedejo do enakih ugotovitev v različnih programih, kar kaže na to, da testni primeri ne morejo uspešno izpostaviti vseh možnih napak v aplikaciji.

V teh primerih mutant ostane “živ” in lahko še naprej vpliva na programsko opremo na načine, ki jih preizkuševalci ne morejo obravnavati – to vodi k oblikovanju boljših testnih primerov.

 

Kako ustvariti mutirajoče programe

Mutantni programi so dejansko enaki izvirnim programom, razen ene manjše spremembe, ki lahko na funkcionalnost aplikacije vpliva na majhne, a opazne načine.

Celoviti in podrobni testni primeri pomagajo preizkuševalcu ali programskemu paketu natančno določiti te spremembe in napake, ki iz njih izhajajo. Za vsak primer, ki ga podjetje preverja, je treba izdelati izvirni in spremenjeni program, pri čemer so učinki vsake spremembe prikazani ločeno.

Programi običajno ponovijo realne napake, kot so na primer napake pri kodiranju. Prav tako je pomembno, da se preizkuševalci izogibajo “mrtvorojenim” mutantom, ki preprečujejo izvajanje aplikacije – to je za preizkuševalce preveč očitno.

 

Kaj je treba spremeniti v programu mutant?

Kaj je testiranje obremenitve?

Tako kot pri številnih spremenljivkah testiranja programske opreme so natančne spremembe, ki jih testerji izvedejo, odvisne od aplikacije in njene kode.

Večino mutacijskih testov sestavljajo tri kategorije: operandi, izrazi in izjave. S spreminjanjem katere koli od njih lahko ustvarite učinkovit mutirajoči program, ki pokaže, kako različne vrednosti ali pravila vplivajo na samo logiko, ki jo program uporablja.

Te kategorije se nanašajo na tri glavne vrste mutacij, ki jih preiskujejo preizkuševalci; to so mutacije odločitev, vrednosti in izjav. Spremembe morajo biti manjše in ne smejo v celoti preprečiti izvedbe testa.

 

Najboljše prakse za testiranje mutacij

Kaj je testiranje enote

Pri izvajanju testiranja mutacij v okviru testiranja programske opreme je treba upoštevati nekatere prakse, ki zagotavljajo dobre rezultate, kot so:

 

1. Maksimiziranje rezultata mutacije

 

Mutacijski rezultat programa je odstotek mutantov, ki jih lahko ekipa ali aplikacija uspešno prepozna ali “uniči”.

Če je na primer v krogu testiranja mutacij 40 mutacij in testerji najdejo 36 mutacij, je rezultat mutacije 90 % – cilj ekipe je vedno zagotoviti 100 % rezultat.

 

2. Naključno izberite mutante

 

To lahko pomaga pri določanju prednosti določenih komponent in njihovem temeljitejšem preizkušanju, vendar je za preizkuševalce koristno tudi naključno izbiranje mutantov, ki jih bodo dodali – še posebej v kratkem roku.

Če ti pregledi predstavljajo vse pomembne vrste mutacij, lahko skupina za zagotavljanje kakovosti potrdi svojo celotno strategijo testiranja programske opreme.

 

3. Spremembe naj bodo majhne

 

Mutacije kode morajo predstavljati manjša odstopanja od prvotnega programa, saj to ponazarja, kako verjetno je, da bo preizkuševalec odkril določene napake; manjše težave pri kodiranju kažejo tudi, kako občutljiva je njihova programska oprema.

Bistveno je, da testerji mutacij najdejo ravnovesje, ki omogoča, da te manjše spremembe še vedno povzročajo opazne napake.

 

4. Ena mutacija na program

 

Testiranje z mutacijo obravnava posamezne testne primere ločeno in preverja, kako celoviti so. Da bi to lažje dosegli, naj ima vsak mutirani program le eno spremembo v primerjavi z izvirnikom.

Programov z več mutacijami morda ne bo mogoče učinkovito povezati s testnimi primeri; mutacije si lahko med seboj nasprotujejo.

 

5. Skrbno preučite programsko opremo za avtomatizacijo

 

Podjetja pogosto uporabljajo mutacijo kode, da potrdijo, kako ekipa uporablja programsko opremo za avtomatizacijo, in se prepričajo, da je sposobna prepoznati napake enako učinkovito kot človeški preizkuševalec.

To pomeni, da je izbira prave platforme za avtomatizacijo lahko pomemben dejavnik, prav tako pa tudi možnost vključitve robotske avtomatizacije procesov.

 

6. Uporaba testnega razvoja

 

Testno voden razvoj (TDD) se nanaša na posebno tehniko, ki v vsaki fazi razvoja upošteva zahteve za testiranje.

To pomaga zagotoviti, da so testni primeri v celoti združljivi s programsko opremo – tako lahko zlahka opravi mutacijske teste in ustvari boljši program, ki je sinhroniziran s postopki zagotavljanja kakovosti.

 

Vrste rezultatov testa mutacije

prednosti ustanovitve centra odličnosti za testiranje (TCoE)

Mutacijski testi ustvarijo več rezultatov, med drugim:

 

1. Mutantni program

 

Mutacijski programi so naravni rezultat teh preverjanj; testerji jih ustvarijo tako, da odražajo njihove trenutne testne primere in težave, ki jih pomagajo odkriti. Programi običajno odstopajo od svojega izvirnika le v enem manjšem, vendar pomembnem pogledu, da bi zagotovili večjo zanesljivost.

 

2. Živ ali mrtev mutant

 

Po testiranju je mutacija “ubita” ali pa ostane “živa” – to se preprosto nanaša na to, ali je tester (ali njegova programska oprema) uspešno ugotovil težavo pri kodiranju ali ne.

Če mutant ostane pri življenju, je treba testne primere resno spremeniti.

 

3. Testni primer mutacije

 

Ekipa za zagotavljanje kakovosti uporablja ločene testne primere za posamezne mutacije, ki beležijo informacije o svojih mutiranih programih.

Tako lahko ekipa zagotovi izčrpno dokumentacijo za vsako preverjanje; ti dokumenti vključujejo podrobnosti o mutacijah in njihovih učinkih na program.

 

4. Ocena mutacije

 

Končni cilj vsakega testa mutacij je doseči 100-odstotni rezultat mutacij, pri čemer postopki testiranja podjetja uspešno najdejo in uničijo vsakega mutanta. Vse, kar je manj kot to, kaže, da je treba izboljšati njihove testne primere in splošne postopke za prepoznavanje problematične kode.

 

Primeri testiranja mutacij

testiranje in avtomatizacija api

Tukaj so trije primeri testiranja mutacij:

 

1. Primer mutacije vrednosti

 

Mutacije vrednosti vključujejo spreminjanje konstante ali parametra, ki lahko spremeni omejitve programa. Na primer, programska oprema avtomatiziranega blagajniškega avtomata lahko za določitev cene živila uporabi njegovo težo.

Preizkuševalci lahko spremenijo kodo tega programa in spremenijo parametre teže, zaradi česar bo hrana za vsako unčo ali kilogram veliko dražja. Preizkuševalec ali preskusna platforma mora biti sposobna prepoznati učinke različnih vrednosti na ta program.

Ker ta napaka spreminja eno od glavnih funkcij programske opreme, morajo testni primeri to napako opaziti in opozoriti ekipo.

 

2. Primer odločitvene mutacije

 

Mutacije odločitev vključujejo spremembo aritmetičnega ali logičnega operatorja, obračanje ali drugo spremembo načina, kako se aplikacija odziva na uporabniški vnos. Če se vrnemo k primeru samoplačniške blagajne, lahko te naprave označijo izdelek z nepričakovano visoko težo, morda zaradi napake uporabnika.

Strojna koda lahko to stori z odločitvijo “if (a>b)” – pri čemer “b” odraža pričakovano težo, “a” pa ustreza dejanski teži. Ekipa lahko to spremeni v “if (a≤b)”, kar spremeni odziv blagajne; ta bi element označila tudi pri pričakovani teži.

 

3. Primer mutacije izjave

 

Mutacije izjav vključujejo spreminjanje pravila ali izpisa – lahko tudi popolno brisanje izjav iz aplikacije. Te mutacije so lahko bolj opazne kot druge, odvisno od pogostosti posamezne izjave, zato je pomembno, da testerji izjavo izberejo preudarno.

Samoplačniška blagajna lahko na primer prikaže opozorilo, če uporabnik poskuša kupiti izdelek, ki je starostno omejen. Brez ustrezne izjave se lahko stroj poruši ali pa omogoči, da katera koli stranka kupi kateri koli izdelek.

S spreminjanjem izjave in poudarjanjem ekipe lahko preizkuševalci preverijo, ali njihov pristop upošteva te težave.

 

Vrste napak in hroščev, odkritih s testiranjem mutacij

zaptest-runtime-error.png

Mutacijski testi večinoma odkrivajo težave v samem postopku testiranja. V zvezi s tem vam predstavljamo vrsto težav, ki jih lahko odkrijete s temi pregledi:

 

1. Nejasni testni primeri

 

Če analiza mutacij pokaže nizko število mutacij (ali celo kakršno koli število mutacij pod 100 %), to pomeni, da testni primeri ekipe ne morejo upoštevati vseh možnih napak, ki bi lahko vplivale na aplikacijo.

Morda niso dovolj specifični ali široki, da bi ustrezali zahtevam ekipe. Ti dokumenti morajo vključevati vse možnosti, na katere lahko ekipa naleti pri testiranju programske opreme, da se zagotovi zanesljivost.

 

2. Neusposobljena ekipa za testiranje

 

S testi mutacij se lahko pokažejo tudi sposobnosti ekipe, vključno s tem, kako dobro osebno prepoznajo mutacije in druge napake. Če kljub jasnim in podrobnim testnim primerom ne morejo najti mutantov v vseh programih, je to mogoče zato, ker testerji teh primerov niso pravilno uporabili.

Pri mutiranih programih se lahko težave pokažejo med celotnim postopkom testiranja – to lahko vključuje tudi nekvalificirane ali neusposobljene testerje.

 

3. Neustrezna programska oprema za testiranje

 

Če podjetje s temi pregledi preveri lastno platformo za testiranje, lahko ugotovi, da programska oprema ne more natančno prepoznati ali uničiti mutirane kode.

Podjetje se lahko odzove tako, da preuči druge možnosti, dokler ne najde tiste, ki je združljiva z njegovimi testnimi primeri. Če programska oprema za avtomatizacijo ne najde problematične kode, bo verjetno težko ugotovila druge težave, ki vplivajo na programsko opremo.

 

4. Neoptimizirana koda

 

Testiranje mutacij lahko razkrije težave, ki so že prisotne v programski opremi. Testerji lahko na primer poskušajo spremeniti kodo, vendar sami odkrijejo kritične napake.

To je še ena pomembna perspektiva programa, ki kaže, da je mutacija kode koristna tudi zunaj procesa testiranja. Čim več preizkuševalcev preučuje to kodo, tem več težav lahko ekipa odkrije in odpravi v fazi preizkušanja.

 

Skupne metrike testa mutacij

testiranje obremenitve

 

Glavne metrike, ki jih uporabljajo mutacijski testi, vključujejo:

 

1. Ubiti mutanti

 

To se nanaša na število mutantov, ki so jih testerji ali programska oprema uspeli prepoznati in označiti njihov obstoj, da lahko osebje odkrije manjše napake, kot so te.

Količina mutantov, ki jih testerji uničijo, je odvisna od moči njihovih testnih primerov.

 

2. Živi mutanti

 

Živi mutanti so tisti, ki jih preizkuševalec ali programska oprema ne prepoznata in kažejo na morebitne vrzeli v strategiji ekipe za zagotavljanje kakovosti. Če se to zgodi, morajo preizkuševalci ponovno umeriti svoj postopek in testne primere tako, da se prilagodijo tem mutantom, in jih uničiti pri prihodnjih preverjanjih.

 

3. Veljavni mutanti

 

Ta metrika določa število mutacij, ki jih je program lahko uspešno vključil, ne da bi napaka med izvajanjem izničila test in njegovo učinkovitost.

Veljavne mutacije so tiste, ki jih tester in programska oprema za avtomatizacijo lahko preverita; to je posledica tega, da so mutacije razmeroma majhne.

 

4. Neveljavni mutanti

 

Pomembne mutacije lahko vplivajo na aplikacijo tako močno, da je testiranje nepraktično ali celo nemogoče – zato je koristno spremljati, koliko “neveljavnih” mutacij je prisotnih v mutiranem programu.

Če jih prepoznajo, jih lahko preizkuševalci uredijo ali celo odstranijo, s čimer zagotovijo, da bodo preverjanja vključevala le veljavne mutacije.

 

5. Skupno število mutantov

 

Število mutacij ne glede na njihovo veljavnost je še ena metrika, ki jo testerji spremljajo; tako lahko spremljajo mutacije in beležijo njihovo stanje.

Ker je za vsako mutacijo običajno potreben ločen test, seštevek služi tudi kot podatek o številu vseh mutacij kode.

 

6. Ocena mutacije

 

Najkoristnejša metrika za analizo mutacij je običajno rezultat mutacije, ki je dejansko odstotek veljavnih mutacij, ki jih je tester ali paket za avtomatizacijo lahko odkril.

Vse, kar je manj kot 100-odstotno zaznavanje, je lahko znak neustreznih preskusnih postopkov.

 

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

7 napak in pasti pri izvajanju mutirajočih testov

testiranje programske opreme avtomatizacija post

Testiranje mutacij je zapleten postopek, ki ga morajo podjetja izvajati preudarno, da bi se izognila resnim težavam ali napakam. Tukaj je sedem pasti, ki se jim morajo testerji izogniti pri izvajanju testov mutacij:

 

1. Nepravilno skaliranje mutacij

 

Pri analizi mutacij je pomembno upoštevati obseg, saj je namen tega postopka zagotoviti, da preizkuševalci prepoznajo manjše napake v aplikaciji. Če je mutacija za preizkuševalce preveč očitna, to morda ne bo učinkovit način preverjanja njihove zmožnosti, da opazijo ali preprečijo težave s programsko opremo.

 

2. Neveljavne ali žive mutacije

 

Tudi pri ustreznem obsegu so številne mutacije le omejeno učinkovite – na primer, če ne privedejo do napake ali če povzročijo težavo, ki prepreči delovanje aplikacije.

Preizkuševalci morajo biti pozorni na to, kako lahko vsaka sprememba v kodiranju vpliva na celotno programsko opremo.

 

3. Nezdružljivi testni primeri

 

Testni primeri in mutacije se morajo odlično ujemati, da se zagotovi dosledno in harmonično testiranje. Pri odločanju o tem, katere mutacije je treba dodati, ali celo pri oblikovanju začetnih testnih primerov si lahko ekipa za zagotavljanje kakovosti prizadeva zagotoviti, da se ti med seboj ujemajo in na splošno vodijo k bolj tekočemu testiranju.

 

4. Roki in urniki

 

Faze testiranja so različno dolge, vendar morajo vedno upoštevati interne roke podjetja. Podjetja, ki ne bodo pravilno načrtovala svojih testov mutacij, morda ne bodo mogla pravočasno zaključiti postopka.

Preden projekt preide v fazo testiranja, mora ekipa zagotoviti, da je načrt testiranja ustrezno obsežen.

 

5. Neustrezna pokritost s testi

 

Podjetja se lahko odločijo za naključno izvajanje mutacij kodeksov, vendar je še vedno pomembno, da zajemajo širok spekter vprašanj.

Da bi testerji in programska oprema lahko odkrili vse vrste mutacij, morajo pregledi vključevati vsaj več mutacij vrednosti, odločitev in izjav.

 

6. Uporaba mutantov za testiranje programske opreme

 

Čeprav testiranje mutacij ponuja nov pogled na aplikacijo, morajo ekipe to metodo uporabiti le za preverjanje lastnega postopka testiranja. Podjetje mora natančno razumeti zmogljivosti in omejitve testiranja mutacij; ta tehnika je lahko uspešna le skupaj z drugimi pregledi programske opreme.

 

7. Preveč mutantov

 

Za podjetja je najpomembneje, da zagotovijo široko testno pokritost, vendar lahko pri tem uporabijo preveč mutantov. Vsak mutacijski program zahteva precejšnjo količino računske moči, kar omejuje število programov, ki jih lahko organizacija izvaja hkrati.

Zaradi prevelikega števila mutacij je tudi težje upoštevati roke za testiranje.

 

Kontrolni seznam, nasveti in triki za testiranje mutacij

Kontrolni seznam za testiranje programske opreme

Obstajajo številni dodatni nasveti, ki lahko pomagajo vsaki ekipi izboljšati uspešnost postopka testiranja mutacij, na primer:

 

1. Preverite združljivost s programskim jezikom

 

Tako brezplačna kot plačljiva orodja za testiranje mutacij so običajno specializirana za en kodirni jezik, zato je pomembno, da testerji izberejo orodje, ki je združljivo z aplikacijo in platformo za testiranje programske opreme.

Skupina za testiranje mora preučiti več možnosti, da zagotovi uporabo programa, ki ustreza njihovemu proračunu in želenemu jeziku kodiranja.

 

2. Pametno porazdelite teste

 

Različni člani ekipe za testiranje bodo najverjetneje pregledali različne vidike aplikacije, kar je običajno povezano z njihovimi posebnimi prednostmi, slabostmi in splošnimi izkušnjami.

Ko ekipa vsakemu preizkuševalcu dodeli teste mutacij, mora to upoštevati, da dobi predstavo o njihovi usposobljenosti; to kaže, kako dobro bo verjetno potekalo nadaljnje preizkušanje.

 

3. Skrbno izbirajte napake

 

Če je bila v nedavni iteraciji programske opreme napaka, ki je vključevala vrednost ali izjavo, lahko pomagamo, če to ponovimo in preverimo, kako se ekipa ali program odziva.

To pomaga zagotoviti trajnost aplikacije in ponazarja sposobnost ekipe, da opazi prejšnje napake, če se ponovijo – to je ključna sestavina regresijskega testiranja.

 

4. Povečanje računske moči

 

Ker lahko preverjanje mutacij zahteva veliko računske moči, je treba kar najbolje izkoristiti strojno opremo podjetja.

Če imajo na primer nekatere naprave boljše specifikacije, bi bilo koristno, če bi mutante zagnali na teh napravah. Tako se podjetje izogne velikim zamudam, ki bi jih lahko povzročili počasnejši stroji.

 

5. Ne zavračajte živih mutacij

 

Tudi pri strogem urniku morajo preizkuševalci spremeniti in razširiti svoje testne primere, da bi preprečili morebitne mutante, ki preživijo postopek.

Čeprav se te napake morda ne zdijo pomembne, če jih programska oprema ali preizkuševalec ne odkrije, še vedno pomenijo, da testni primeri niso odkrili vseh težav pri kodiranju.

 

6. Preučitev nove programske opreme za avtomatizacijo

 

Če so testni primeri ekipe dovolj podrobni, vendar jih njihov avtomatski testni paket ne more uspešno uporabiti za prepoznavanje vsake mutacije, bi jim lahko koristila drugačna programska oprema.

Na voljo je veliko brezplačnih in plačljivih platform, zato morajo podjetja preveriti vse možnosti, da se prepričajo, da imajo programsko opremo, ki dolgoročno najbolje ustreza njihovim testnim primerom.

 

7. Sinhronizirajte vsak postopek testiranja

 

Sodelovanje je ključna sestavina vsake strategije testiranja – tako lahko zagotovite, da se vsak postopek zlahka poveže, kot si ekipa zamisli.

Ekipa za testiranje bi lahko na primer svoje testne primere razvila z upoštevanjem mutacije, da bi zagotovila višjo raven združljivosti, s čimer bi testerji lažje potrdili svojo strategijo.

 

8. Uporaba testiranja enot

 

Testiranje enot omogoča ekipi za zagotavljanje kakovosti, da pregleduje posamezne dele kode, kar močno poenostavi teste in ekipam olajša odkrivanje težav.

Ta kombinacija je lahko še posebej koristna, če testerje skrbijo roki, saj jim omogoča, da poenostavijo svoje preglede in izboljšajo splošno pokritost, kar vodi k veliko močnejšim testom programske opreme.

 

9. Napisati podrobne testne primere

 

Testni primeri mutacij morajo vsebovati ustrezne informacije o mutaciji in njenem učinku na program ter o tem, kako je testna skupina ali platforma odkrila te napake.

Z zagotavljanjem čim več podrobnosti lahko tester osebno potrdi testni primer in se prepriča, da ekipa natančno ve, kako zagotoviti nemoteno testiranje.

 

5 najboljših orodij za testiranje mutacij

 

 

Na voljo je veliko orodij, ki lahko podjetjem pomagajo pri izpolnjevanju njihovih zahtev glede testiranja mutacij. Tako kot pri aplikacijah za testiranje programske opreme se tudi pri aplikacijah za testiranje programske opreme cene in funkcije razlikujejo od platforme do platforme, zato je ključnega pomena, da organizacije izberejo tisto, ki najbolj ustreza njihovim potrebam.

Nekateri od teh programov so lahko brezplačni ali v celoti odprtokodni, vendar je za večje udobje običajno treba plačati.

 

Glede na to vam predstavljamo pet najboljših orodij za testiranje mutacij.

 

1. Stryker

 

Družba Stryker je specializirana za mutacije JavaScript, saj je ta postopek bistveno poenostavila, da ne bi bilo lažno pozitivnih rezultatov in da bi se zmanjšala skupna količina napora, ki bi ga sicer testerji morali vložiti v vsa preverjanja mutacij.

Platforma Stryker inteligentno oceni programsko opremo in na podlagi zbranih informacij ugotovi, kateri nizi ali segmenti kode bi imeli koristi od mutacije. Ta aplikacija je opremljena s poročevalcem jasnega besedila, ki izpiše povzetek mutanta, vključno s podatkom, ali ga je Strykerju uspelo ubiti.

 

2. PITest

 

PITest je zelo priljubljena izbira po vsem svetu, saj lahko spreminja bajtno kodo Jave in naredi na tisoče mutacij na sekundo. Ta aplikacija uporablja podatke o pokritosti testnih primerov, da takoj ugotovi, kateri testi lahko uničijo mutanta.

Izvede samo teste, za katere ve, da bodo pomembni, s čimer omeji računsko moč, ki jo ta postopek običajno porabi. PITest je združljiv tudi z večino oblik vtičnika za testiranje enot Surefire, vendar ima lahko težave z učinkovitim upravljanjem odvisnosti testnih nalogov.

 

3. Zavarovanje++

 

Program Insure++ ima številne možnosti testiranja, vključno z analizo mutacij, ki platformi omogoča, da odkrije dvoumnosti v programu. Insure++ se v nasprotju z običajnim testiranjem mutacij odpove ustvarjanju okvarjenih mutantov in namesto tega ustvari funkcionalno enakovredne mutacije, ki se ujemajo z izvorno kodo projekta.

S tem se izognemo implicitnim predpostavkam, ki lahko nenamerno omejijo postopek testiranja in morda ne odražajo realnih testnih okolij. Kot pove že ime, je platforma združljiva predvsem s programi v jeziku C++, zato so vse njene funkcije prilagojene temu jeziku.

 

4. Jumble

 

Ta aplikacija je specializirana za ogrodje JUnit JavaScript z obsežnimi vizualnimi kazalniki odziva kode na analizo mutacij. Jumble je odprtokodna platforma, ki deluje v bajtni kodi aplikacij Java in tako skrajša čas vsakega testnega cikla.

Podobni programi, ki uporabljajo izključno izvorno kodo programa, lahko včasih potrebujejo več časa za izvedbo teh preverjanj zaradi postopka ponovnega sestavljanja.

Jumble uporablja tudi hevristiko za dodatno optimizacijo testiranja mutacij, kar poenostavi nadaljnje testiranje.

 

5. MutPy

 

MutPy podpira mutacijske teste za aplikacije, ki temeljijo na Pythonu, in ponuja popolno podporo za mutacije visokega reda ter celovito analizo pokritosti. Vmesnik tega programa je enostaven za uporabo v fazi izpisa, ki uporabnikom jasno prikaže vse bistvene podrobnosti mutacijskih testov ekipe.

Program MutPy ponuja številne možnosti po meri za preizkuševalce, ki lahko to programsko opremo prilagodijo svojim zahtevam. Platforma uporablja abstraktna sintaktična drevesa, ki zagotavljajo jasno strukturo izvorne kode aplikacije, kar testerjem omogoča večje zaupanje v njihove mutacije.

 

Zaključek

Mutacijo kode je mogoče uporabiti v skoraj vseh postopkih testiranja programske opreme, kar podjetjem, ki to tehniko uvedejo, prinaša številne jasne prednosti – zlasti v zgodnejši fazi zagotavljanja kakovosti.

Nobena metodologija ni brez izzivov, zato je nujno, da organizacije pametno preučijo prednosti analize mutacij in hkrati zagotovijo, da se ujema z njihovim običajnim časovnim okvirom razvoja programske opreme.

Te mutacije dajejo testnim skupinam priložnost, da preverijo svoj pristop in ugotovijo njegovo učinkovitost pri iskanju in odpravljanju napak v izvorni kodi. Ta tehnika je še posebej združljiva s postopki avtomatizacije, saj omogoča podjetjem, da potrdijo programsko opremo, ki ji zaupajo izvajanje svojih pregledov.

Preizkušanje mutacij je celovit način, s katerim lahko skupine za zagotavljanje kakovosti bolje razumejo svoje postopke in programsko opremo, vključno s težavami, ki jih sicer ne bi odkrile.

Zato je pomembno, da ekipe za testiranje natančno preučijo to tehniko in ocenijo, ali ustreza potrebam organizacije, vključno s tem, ali je izbrano orodje za mutacijo popolnoma združljivo z njihovim programskim jezikom. Programska oprema za avtomatizirano testiranje ZAPTEST se ponaša s številnimi funkcijami, ki ji omogočajo, da uspešno opravi mutacijske teste, kar ekipam zagotavlja popolno zaupanje v njene sposobnosti.

Tako brezplačna različica kot različica Enterprise ponujata visokokakovosten postopek testiranja, ki se zlahka prilagodi spremembam kode.

 

Pogosta vprašanja in viri

1. Najboljši tečaji o testiranju mutacij

 

Spletni tečaji lahko pomagajo testerjem, ki se prvič učijo osnov mutacije kode, ali pa okrepijo že obstoječe znanje izkušenih članov osebja za zagotavljanje kakovosti. Tudi splošne lekcije o testiranju programske opreme lahko testerjem prinesejo veliko koristi. Najboljši spletni tečaji za preizkuševalce mutacij vključujejo:

– V članku ‘Testiranje mutacij v Javi s programom PITest’ podjetja PluralSight je posebej obravnavano spreminjanje kode Jave in načini, kako bi ta pristop lahko koristil praktičnim postopkom testiranja programske opreme.

– Udemyjev “The Complete 2023 Software Testing Bootcamp” je posebej posodobljen tečaj, ki prikazuje vse ključne komponente testiranja programske opreme, vključno s testiranjem bele škatle.

– Alisonov članek ‘Testiranje programske opreme – strategije testiranja pokritosti pogojev in mutacijskega testiranja’ je brezplačen in podrobno obravnava, kako pametno izvajati mutacijsko testiranje.

– Učbenik PluralSight ‘Osnove testiranja enot’ raziskuje prednosti in značilnosti testiranja enot ter pomaga učencem razumeti natančen postopek pisanja dobrih testov enot.

– Udemyjev “Uvod v testiranje enot” je še en brezplačen tečaj, ki jasno razčlenjuje testiranje enot in pomembnost strategij razvoja, ki temelji na testiranju.

 

2. Katerih je 5 najpomembnejših vprašanj za intervju o testiranju mutacij?

 

Podjetja lahko kandidatom med razgovorom zastavijo številna vprašanja, da preverijo njihove izkušnje ali razumevanje testiranja mutacij in njegovih temeljnih načel. To podjetju omogoča, da se prepriča, da bo najelo usposobljenega preizkuševalca, ki se bo zlahka lotil različnih scenarijev, povezanih z mutacijami.

Natančna vprašanja se razlikujejo, vendar lahko vključujejo vprašanja o lastnih mnenjih ali primerih njihovih spretnosti pri mutaciji kode.

 

Pet najpomembnejših vprašanj za razgovor o testiranju mutacij je:

 

– S katerimi orodji za testiranje mutacij ste že imeli izkušnje, če sploh imate? Katere so bile glavne značilnosti te programske opreme?

– Kako bi med izvajanjem mutacije kode zagotovili zdravo ravnovesje med hitrostjo in globino testiranja?

– V katerih primerih bi bila analiza mutacij nemogoča? Kako bi preverili postopek testiranja v teh primerih?

– Če mutaciji vrednosti uspe preživeti postopek testiranja, kako bi ukrepali, da se to ne bi ponovilo?

– Katere informacije bi vključili v testni primer mutacije, da bi svojim sodelavcem zagotovili podatke, ki jih potrebujejo?

 

3. Najboljše vaje na YouTubu o testiranju mutacij

 

V YouTubu so na voljo brezplačna navodila, spletni seminarji in drugi videoposnetki, ki testerjem pomagajo izboljšati razumevanje testiranja mutacij. Med najbolj uporabnimi videoposnetki in serijami na to temo so:

 

– Software Testing’s ‘Mutation Testing for Programs’, ki vsebuje praktične primere, kako mutacija kode pomaga programom, ter navodila za pisanje natančnih testnih primerov.

– Devoxxovo testiranje mutacij: V njem je predstavljeno, kako analiza mutacij izboljša splošne postopke testiranja za vse vrste projektov programske opreme.

– Konferenca NDC “Ubij vse mutante! Intro to Mutation Testing”, ki raziskuje, kako lahko testni sklopi izkoristijo prednosti mutacije kode in napake, ki jih pomaga ustvariti.

– GOTO Conferences ‘Mutation Testing in Python’, ki posebej preučuje, kako lahko aplikacije, ki temeljijo na Pythonu, uporabljajo mutacijsko analizo za doseganje posebnih ciljev testiranja.

– Diego Pacheco: “Java Mutation Testing With PITest”, ki podobno prikazuje, kako programska oprema JavaScript uporablja mutacijo kode – s poudarkom na programu za mutacijo PITest.

 

4. Kako vzdrževati mutacijske teste?

 

Kombiniranje analize mutacij z regresijskim testiranjem in drugimi dolgoročnimi strategijami podjetjem omogoča, da tudi po izdaji zagotovijo visoke standarde zagotavljanja kakovosti.

Kasnejše posodobitve lahko povzročijo spremembe kode, ki zahtevajo nadaljnje preverjanje. Mutacijsko testiranje pokaže, da so programska oprema za avtomatizacijo in testerji dosledni v različnih različicah iste programske opreme, kar ponovno potrdi njihov poseben pristop.

Nove funkcije zahtevajo nove testne primere, zlasti če te funkcije vplivajo na že obstoječe.

Poleg tega uporaba testno vodenega razvoja članom ekipe omogoča, da načrtujejo trajnost programske opreme in testirajo združljivost kot del lastnega razvojnega cikla.

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