Mutationstestning, eller programmutation, är en testteknik som hjälper företag att utveckla en rad nya programvarukontroller samtidigt som de granskar ett projekts nuvarande processer. Detta är ett relativt nytt tillvägagångssätt som säkerställer att både utvecklare och testare arbetar enligt en hög standard.
En applikation är bara så framgångsrik eller bra som dess egna kvalitetssäkringsprocedurer, vilket innebär att det är viktigt att organisationer använder mer än en typ av testteknik.
Genom att lära sig mer om mutationstestning kan testgrupperna öka sina kunskaper och sin allmänna repertoar, så att de kan förbättra tillförlitligheten i dessa kontroller. Mutationstestning är en komplex och känslig process, så det är viktigt att testarna noggrant undersöker fördelarna, utmaningarna och programmen från tredje part som kan garantera ett framgångsrikt genomförande.
I den här artikeln tittar vi på mutationstestning och hur den förbättrar kvalitetssäkringen samt andra viktiga överväganden för testteam för programvara.
Vad är mutationstestning i programvarutestning?
När det gäller programvara innebär mutationstestning att ett kvalitetssäkringsteam avsiktligt introducerar fel – eller “mutationer” – i en programkod för att se hur teamet reagerar. Målet är att skapa ett fel och se till att testsviten kan identifiera varje ändring av programmet.
När en mutationstestare redigerar programkoden kan han eller hon byta ut ett sant/falsk-uttryck, ta bort ett uttalande eller helt enkelt ändra ett värde. Dessa fel kan visa sig på flera olika sätt under andra programvarukontroller, och alla dessa fel kan lätt upptäckas av ett skickligt och erfaret testteam.
Själva mutationerna är ofta mycket små, vilket gör det möjligt för testaren som muterar koden att observera hur teamet upptäcker dessa ändringar. Betydande förändringar skulle vara uppenbara även vid en ytlig titt – så mindre fel är vanligtvis det bästa sättet att se till att företaget använder sig av robusta testmetoder.
Den här tekniken tittar särskilt på effektiviteten hos teamets testfall, dvs. de dokument som innehåller testinformationen. Teamet kan också använda sig av en tredjeparts programvara för automatisering för att utföra dessa kontroller, och i så fall undersöker mutationstester hur väl denna plattform kan upptäcka fel i programkoden.
1. När behöver du göra mutationstestning?
Eftersom syftet med mutationstestning är att validera och förbättra de nuvarande kvalitetssäkringskontrollerna är det viktigt att grupperna genomför detta tidigt i testfasen. Detta innebär att om testsviten inte kan identifiera och “döda” mutanterna finns det tillräckligt med tid för att göra genomgripande förändringar av någon omfattning i organisationens testprocedurer.
Eftersom detta är en mycket mångsidig metod kan mutationstestning tillämpas på praktiskt taget alla typer av programvara, inklusive webb-, mobil och datorprogram. Detta fungerar bäst under enhetstesterna, där man undersöker applikationens minsta komponenter.
2. När du inte behöver göra mutationstestning
Det finns fortfarande vissa scenarier där mutation och allmän white-box-testning inte är lämpliga för ett program; detta kan bero på olika orsaker.
Till exempel om testarna bara vill kontrollera med black-box-testning – i så fall skulle de i stället fokusera på front-end för den sessionen eller till och med på det övergripande teststadiet.
Vissa företag anser att white-box-testning är tråkigt och tidskrävande, vilket kan leda till att de hoppar över processen. Starka, välkontrollerade testfall kan också undvika behovet av mutationstestning eftersom det visar teamets noggrannhet och engagemang för korrekta testförfaranden.
3. Vem är involverad i mutationsanalys?
Det finns ett antal olika roller som är involverade i mutationsanalyser, bland annat:
– Mutationsgranskare
De förändrar koden genom att införa olika mindre fel för att se till att testprocessen fungerar som förväntat. Dessa testare är vanligtvis redan befintliga medlemmar av kvalitetssäkringsteamet.
– Testare av tillämpningar
De kontrollerar koden regelbundet för att se om det finns några problem och identifierar och korrigerar alla mutationer som de hittar. De utför white-box-tester för att hitta kodningsfel – men använder även andra tekniker.
– Applikationsutvecklare
De utformar programmets funktioner och skriver den ursprungliga koden. De åtgärdar också eventuella problem som testarna hittar och ser till att programvaran är i ett stabilt skick innan den släpps.
– Projektledare
De ger vägledning om tillämpningen och kan arbeta tillsammans med mutationstestarna för att se hur effektiva deras egna team är. De säkerställer starka standarder i alla utvecklingsstadier.
Vad testar vi med mutationstest?
Mutationstestning fokuserar mer på testprocesser än på applikationen. I detta syfte undersöks följande:
1. Testfall
Testfall är dokument som innehåller detaljerad information om varje test, inklusive de resultat som testarna förväntar sig av varje enskild kontroll. Med konsekventa och korrekta testfall får medlemmarna i kvalitetssäkringsteamet en uppfattning om hur programmet fungerar och hur dess prestanda motsvarar företagets förväntningar.
Informationen i dessa testfall kan avgöra testarens förmåga att upptäcka vissa fel – inklusive de fel som mutationstestning ger upphov till.
2. Provningsstandarder
Mutationstesterna granskar noggrant de nuvarande testförfarandena för att säkerställa att teammedlemmarna kan identifiera även mindre problem som kan påverka användarens uppfattning om programvaran.
Testarnas noggrannhet och kompetens kan till och med vara de viktigaste faktorerna som ett företag bedömer med dessa kontroller. Om man inte är noga med detaljerna i varje steg kan testarna missa allvarliga mutationer som finns i programmet.
3. Enskilda kodenheter
Mutationstester är vanliga under utvecklingens enhetstestning. Detta ser till enskilda komponenter för att upprätthålla ett starkt fokus på varje test, vilket optimerar hela processen avsevärt genom att se till att testarna endast arbetar med relevanta kodrader.
Eftersom mutationstesterna ofta är tidiga i kvalitetssäkringsfasen och kan vara en föregångare till fullskalig testning, kan detta tillvägagångssätt öka hastigheten utan att kompromissa med noggrannheten.
4. Programuppdateringar
Programuppdateringar innebär vanligtvis att testprocessen startas om för att se till att det inte finns några nya fel och att tidigare fel inte dyker upp igen.
Att upprepa mutationstester är en viktig del av detta och bidrar till att främja konsekventa teststandarder efter större programvaruändringar.
Testteamet kanske anser att grundliga kontroller efter uppdatering är onödiga, men genom kodmutation kan man se till att de förstår vikten av testning i varje utvecklingsstadium.
5. Programvara för automatisering
Företag utför också mutationstestning för att inspektera sina automatiserade testsviter och se till att de kan upptäcka bland annat muterad kod.
Om ett testprogram från en tredje part kan identifiera externa ändringar i ett program och eventuellt till och med åtgärda det, betyder det att organisationen kan lita på att programmet automatiserar testerna.
Det är viktigt att företagen validerar sin automatiseringsmetod, vilket ger varje testare sinnesro.
6. Strategi för automatisering
Hur företaget integrerar automatiseringen i sina processer är lika viktigt som vilken programvara som används; företaget kan till exempel besluta sig för att införa hyperautomatisering. På så sätt kan företaget på ett intelligent sätt bestämma vilka mutationer och programvarutester som ska automatiseras.
Utan en stark automatiseringsstrategi som tar hänsyn till den stora variationen i en applikations kod kan vissa tester vara oförenliga med automatisering – vilket begränsar plattformens möjligheter.
7. Ansökan
Även om mutationstestning fokuserar mer på testteamet än på programmet kan den ändå lyfta fram viktig information om programmet.
Mutationstestning visar till exempel hur programvaran reagerar på ändringar i koden, inklusive om den signalerar dessa problem på det sätt som teamet förväntar sig.
Detta tillvägagångssätt är inte en teknik för programvarutestning, men kan ändå ge intressanta uppgifter om dess interna verksamhet.
Livscykel för mutationstester
Den vanliga livscykeln för mutationstestning är följande:
1. Analys av krav
Det första steget i en livscykel för mutationstestning är att ta reda på exakt vad som behöver valideras och vilka delar av programkoden som skulle ha störst nytta av dessa tester.
Teamet kan prata med utvecklare och chefer för att ta reda på deras problem och börja åtgärda dem.
2. Testplanering
Testarna börjar sedan utveckla de exakta kontroller som de avser att genomföra – i det här fallet de mutationer som kommer att ge den bästa insikten.
I detta skede bestäms den övergripande strategin för testning av mutationer och hur teamet ska genomföra de avsedda kodmutationerna på ett effektivt sätt.
3. Utveckling av testfall
Testning av mutationer innebär en egen separat testdokumentation, inklusive information om den muterade koden och hur testarna förväntas åtgärda problemet.
En god bokföring säkerställer att alla tester går som planerat och kan hjälpa teamet att upprätthålla sitt engagemang för höga teststandarder.
4. Inställning av testmiljön
Testarna ser till att programmet är redo för dem att ändra – och att de har ett förfarande för att ta itu med dessa problem om andra teammedlemmar inte kan upptäcka dem.
Som en del av detta upprättar mutationstestarna en testserver och använder den som mall för sina mutationer.
5. Utförande av testet
Efter att ha slutfört sina förberedelser ändrar testarna koden i flera delar av programmet och väntar sedan på att andra testare ska upptäcka och åtgärda problemen.
Både mutationstestare och apptestare måste dokumentera detta utförligt för att se till att deras register är tillförlitliga.
6. Avslutning av testcykeln
När testningen är klar dubbelkollar mutationstestarna att alla ändringar som de gjort har korrigerats antingen av apptestarna eller av dem själva.
De avslutar sedan testcykeln och analyserar resultaten, och diskuterar hur testarna reagerade på de olika felen och deras förmåga att rätta till dem.
7. Upprepning av testet
Efter att ha stängt testcykeln kan det bli nödvändigt att återaktivera den efter framtida programuppdateringar.
Varje ändring av en applikation ändrar dess funktionalitet på något sätt, vilket leder till nya möjligheter som teamet måste ta hänsyn till för att säkerställa att testprocessen är tillräckligt noggrann.
Fördelar med mutationstestning
Det finns många fördelar med att utföra mutationstester, bland annat:
1. Validerar testprocessen.
Den största fördelen med mutationstestning är att den kan visa hur företagets testare närmar sig programvaran – och deras förmåga att känna igen kodningsproblem. Detta säkerställer också att teamets testfall är tillräckligt omfattande och täcker alla nödvändiga tester.
Mutationstester undersöker organisationens övergripande testförfarande för att garantera att det fungerar som förväntat.
2. Säkerställer en stark automatisering.
Mutationstestning hjälper teamet att kontrollera om deras plattform för testautomatisering från tredje part kan identifiera fel i koden och åtgärda dem på rätt sätt.
Om programvaran inte kan upptäcka dessa även efter den nödvändiga kalibreringen kan det vara värt att byta ut plattformen mot en som klarar dessa tester utan problem.
3. Bra täckning
Varje process för testning av programvara måste kunna täcka hela applikationen i stort sett för att säkerställa att varje aspekt får den uppmärksamhet som krävs.
Mutationstestare kan ändra vilken del som helst av ett programs kod; ett bra genomförande gör att dessa tester kan omfatta alla viktiga funktioner. Detta lär testarna att söka efter problem i hela applikationen.
4. Undersöker källkoden
Eftersom mutationstestning innebär att man arbetar med koden och gör direkta ändringar där det är lämpligt, kan denna metod också lyfta fram ooptimerade skript som finns i applikationen.
Mjukvarutestare kan endast godkänna programmet och utföra sina normala tester om programkoden är tillräcklig. Dessa kontroller gör det möjligt för testarna att belysa potentiella framtida problem.
5. Leder till bättre programvara
Mutationstestning hjälper till att se till att applikationens testprocesser är anpassade till programmets krav.
Om en mutationsanalys avslöjar att kvalitetssäkringsteamet inte följer rätt förfaranden eller att testfallen är otillräckliga kan testarna arbeta för att förbättra detta. Utan denna noggrannhet kan organisationen släppa en felaktig produkt utan att inse det.
6. Effektivt för olika språk
Oavsett vilket språk testteamet använder för sin tillämpning finns det programvarualternativ som kan erbjuda högkvalitativ mutationsanalys.
Detta inkluderar ett antal livskvalitetsfunktioner som är specifika för språket och som effektiviserar kontrollerna för att öka tillförlitligheten. Ett skräddarsytt tillvägagångssätt för olika språk förbättrar kvaliteten på varje enskilt test.
7. Mycket lättillgängliga verktyg
Många av de bästa mutationsplattformarna är helt öppna källkodsplattformar, vilket innebär att de erbjuder mer anpassning och ett omfattande utbud av funktioner gratis eller till drastiskt lägre kostnader.
Med färre hinder jämfört med många andra former av testning är kodmutation ett användbart och bekvämt sätt för företag att utvärdera, eller till och med förbättra, sin kvalitetssäkring.
Utmaningar i samband med mutationstestning
Denna process är också förenad med många utmaningar, t.ex:
1. Kräver kunskaper i programmering
För att testare ska kunna utföra dessa kontroller måste de ha en omfattande förståelse för programmet och koden, vilket gör det svårt för mindre erfarna testare att bidra.
Ett företag kan bara testa programvara på ett sätt som passar testarnas befintliga färdigheter, särskilt deras förmåga att redigera ett program och skapa ett korrigerbart kodningsfel.
2. Inte lämplig för black-box-testning.
Black-box-testning innebär huvudsakligen att man tittar på en applikations front-end utan att inspektera dess inre arbete och kod – detta är i praktiken oförenligt med mutationstestning.
Därför är dessa kontroller endast användbara för vissa tester jämfört med andra metoder, som i många fall kan ge en mycket bättre täckning av hela testfasen.
3. Det är tidskrävande att utforma mutationstester.
Kodmutation kan vara en tråkig process eftersom teamet måste hitta enskilda komponenter som är värda att mutera. Att bestämma vilka mutationer som ska genomföras kan i sig ta mycket tid, vilket kan vara problematiskt när andra testtyper i själva verket väntar på att dessa kontroller ska bekräfta företagets testmetod fullt ut.
4. Kan kräva många kodmutationer.
På samma sätt är det naturligt att komplexa projekt kräver ett större antal mutanter för att säkerställa en heltäckande testmetod. Detta förlänger mutationsfasen och kan medföra många manuella ändringar i programkoden.
Utan högkvalitativ programvara för testautomatisering med möjligheter till programmutation kan det vara svårt för testarna att genomföra detta på ett framgångsrikt sätt.
5. Testarna kanske inte märker felen
Den största oron som mutationstestare och projektledare ofta har när de implementerar dessa kontroller är risken för att programvarutestare (manuella eller automatiserade) helt enkelt inte märker problemen.
Detta kan kräva en fullständig översyn av företagets testförfaranden – även om detta fortfarande kan ge testarna viktig information om deras kvalitetssäkringsstandarder.
6. Kan vara minneskrävande
Mutationstestning kräver i allmänhet en stor mängd processorkraft, även om detta kan bero på vilket program testarna använder.
Om organisationen har ett begränsat antal maskiner eller om enheterna har låga specifikationer kan de ha svårt att köra för många samtidiga mutationer. Detta påverkar hur många kontroller de kan utföra innan testfasen avslutas.
7. Rapporterna kan vara informationstunga.
Även om detta främst beror på gränssnittet för teamets verktyg för mutationstestning kan rapporterna som de genererar vara svåra att tolka.
Detta innebär att det tar tid att manuellt sortera igenom dem och hitta rätt testresultat; vissa program låter användarna anpassa själva rapporteringsprocessen; detta varierar från program till program.
Egenskaper hos mutationstester
De viktigaste kännetecknen för effektiva mutationstest är:
1. Omfattande
Dessa kontroller täcker alla viktiga aspekter av programvaran; företag med tillräckliga resurser kan till och med utforma ett mutationstest för varje vanligt testfall.
Det exakta antalet beror på organisationens kapacitet och önskemål, men effektiva mutationstester täcker ett brett spektrum av kodade funktioner.
2. Strategisk
Programmutationer bör också följa en tydlig och välplanerad struktur som underlättar organisationens övergripande testmål.
De fel som de producerar kan till exempel närma sig realistiska testfel, vilket gör det möjligt för testarna att förutse dessa problem om de uppstår naturligt, vilket avsevärt förbättrar företagets testprocess.
3. Konstruktivt
Syftet med mutationstestning är att identifiera brister i testningen – att visa hur teamet kan förbättra sina kontroller och rätta till mindre fel när de dyker upp.
Mutationstestare måste prioritera “ogiltiga” mutanter som påverkar programvarans funktionalitet, vilket gör det möjligt att göra tydligare testförbättringar i hela projektet.
4. Förebyggande
Dessa kontroller finns till för att validera teamets övergripande strategi, vilket innebär att mutationstestning fungerar bättre under de tidiga utvecklingsfaserna.
Om testarna upptäcker några betydande brister i sin kvalitetssäkringsmetod ger detta dem den tid de behöver för att ändra sina testfall så att de är tillräckliga.
5. Konsekventa
Mutationstestning i olika iterationer av en applikation bör ge konsekventa resultat, samtidigt som fler kontroller läggs till för att ta hänsyn till programvaruförändringar.
Efterföljande kontroller måste vara lika noggranna för att behålla sin effektivitet – utan denna precision kan mutationstesterna bli mindre exakta.
6. Subtilt
Mutationstester syftar till att undersöka kvalitetssäkringsteamets förmåga att identifiera kodfel genom sina tester och plattformar från tredje part.
Detta innebär att testerna inte ska vara omedelbart uppenbara för alla som inspekterar programvaran; syftet är att undersöka hur testare reagerar på mindre kodproblem.
7. Samarbete
Som med alla mjukvarutester är kodmutation en process som ofta kräver lagarbete och kommunikation för att lyckas. Genom att upprätthålla en samarbetsatmosfär undviker man informationssilos, vilket kan leda till missförstånd – detta garanterar också att alla testare fokuserar på sina uppgifter.
Typer av mutationstest
De tre huvudtyperna av mutationstest är:
1. Mutation av värden
Värdemutationer ändrar direkt värdena i koden och byter ut en siffra eller bokstav mot en annan på ett sätt som påverkar programmets funktionalitet.
Testaren kan till exempel ändra programmets exakta parametrar, t.ex. de siffror som programmet reagerar på. Mutationstestare kan särskilt rikta in sig på en programvaras konstanta värden eftersom dessa alltid förblir desamma under normal drift.
2. Beslutsmutation
Beslutsmutationer ändrar aritmetiska och logiska operatörer och ändrar på ett effektivt sätt hur programmet reagerar på specifika situationer.
Om man till exempel byter ut en större än-operator (>) mot en mindre än-operator (<) påverkas naturligtvis programmets utdata. Testare kan också byta ut “eller” mot “och” eller vice versa, vilket i grunden ändrar programvaran och hur den tolkar den information som andra testare och eventuella användare tillhandahåller.
3. Mutering av uttalanden
Statementmutationer ändrar kodens faktiska uttalanden och ändrar de regler som programmet använder för att fatta sina beslut. Testare kan ändra innehållet i dessa rader, duplicera dem eller till och med radera dem för att kontrollera hur det muterade programmet påverkar programvarans funktionalitet.
Dessa mutationer ändrar ett programs byggstenar och kan eventuellt ta bort hela funktioner eller på annat sätt hindra dem från att fungera.
Att reda ut en del förvirring
– Mutationstestning kontra regressionstestning
Mutations- och regressionstestning är båda användbara metoder för programvarutestning – att förstå var och en av dessa tekniker kan förbättra företagets övergripande kvalitetssäkring.
1. Vad är regressionstestning?
Regressionstestning innebär att testare undersöker programvaran mellan olika iterationer för att se till att den fortfarande fungerar trots ändringar i koden.
Även mindre ändringar kan leda till allvarliga problem utan dessa kontroller, vilket kan leda till att tidigare fel uppstår på nytt. Detta kräver i allmänhet automatisering eftersom det är komplicerat att testa varje komponent på nytt, och många företag avstår därför från regressionstester.
Testarna kan utföra dessa kontroller på enskilda enheter, enskilda komponenter eller hela produkten – vilka tester som krävs beror främst på projektet och dess omfattning.
2. Vad är skillnaden mellan mutations- och regressionstest?
Regressionstestning fokuserar främst på att kontrollera programmet och dess funktionalitet, medan kodmutation istället tittar på hur testarna reagerar på problem.
Den förstnämnda metoden sker också ofta efter flera iterationer av ett program, medan mutationskontroller kan ske i vilket utvecklingsstadium som helst – dock vanligtvis i början av testfasen.
Både regressions- och mutationstester kan hantera enskilda kodningsenheter och hur små förändringar kan leda till betydande problem som testarna måste arbeta för att rätta till.
3. Slutsats: Mutationstestning vs. automatiserad testning
Automatisering är ofta en viktig del av mutationstestning på grund av den stora omfattningen av kontroller och enheter – detta gör att det ibland är avgörande för en framgångsrik och omfattande testprocess.
Företag använder ofta kodmutationer för att undersöka sin tredjepartsplattform för automatisering och hur väl den identifierar problematiska skript.
Genom att kombinera en grundlig katalog över mutationskontroller med automatiserad programvara kan man avsevärt öka företagets täckning och säkerställa bättre resultat.
Även om detta är två separata testmetoder behöver de inte stå i motsatsförhållande till varandra. Att integrera robotprocessautomatisering kan till exempel förbättra ett företags strategi för mutationstestning.
Vad behöver du för att börja med mutationstestning inom programvaruteknik?
De vanliga kraven för omfattande mutationstestning är följande:
1. En tydlig teststrategi
Testteamet måste fastställa en strategi för mutationstestning, inklusive vilka komponenter och enheter som är viktigast att undersöka.
Vissa aspekter av koden kan till exempel vara mer integrerade för en applikations framgång och funktionalitet; testarna bör se till att det finns tillräckligt många ändringar för att ta hänsyn till detta.
Företagets schema för mutationstestning är också en viktig faktor, eftersom det säkerställer att testarna har tillräckligt med tid för att undersöka koden.
2. Ingen krypande omfattning
Även med en grundlig strategi som beskriver företagets tillvägagångssätt för mutationstestning är det möjligt att antalet tester är betydligt högre än nödvändigt.
Effektivitet är av största vikt under hela förfarandet, särskilt eftersom andra teststeg kan vänta på att teamet ska hitta och döda mutationerna. Testarna måste tydligt definiera sitt område innan de börjar ändra koden, vilket garanterar att allt är hanterbart inom en praktisk tidsram.
3. Noggrann dokumentation
Varje testprocess gynnas av fullständig dokumentation – ofta i form av testfall som beskriver de enskilda kontrollerna och alla relevanta mutanter.
Detta illustrerar teamets aktuella framsteg i testerna, vilket är särskilt användbart för chefer och ledare. Att dokumentera varje kodmutation hjälper också testarna att hålla tydliga register över de ändringar de gör.
Om kvalitetssäkringsteamet har svårt att hitta dessa mutationer under testningen kan dessa dokument fungera som en svarsnyckel.
4. Skickliga testare
De testare som ändrar koden måste ha en god förståelse för programvaran – inklusive de många sätt på vilka de kan ändra eller till och med bryta den.
Mutationstestare vet ungefär hur deras ändringar kommer att påverka programmet och hur andra medlemmar i kvalitetssäkringsteamet kan identifiera den muterade koden.
Detta kräver i allmänhet goda kunskaper i programmering. För att mutationsanalysen ska vara effektiv bör testarna av programvaran också ha välutvecklade färdigheter och erfarenhet av testning.
5. Programvara för automatisering
Automatiseringsmjukvara från tredje part kan vara nödvändig före mutationstestning på grund av det antal kontroller som denna process ofta kräver. Detta gäller särskilt för komplicerade program med mer kod och funktioner som kvalitetssäkringsteamet måste granska.
Företag kan genomföra dessa kontroller specifikt för att testa hur programvara för automatisering reagerar på kodningsfel. Detta kan vara en central del av företagets prövningsprocess för att avgöra vilka program som är mest användbara.
Processen för mutationstestning
De vanliga stegen som testare brukar följa när de utför en mutationsanalys är följande:
1. Förbered testerna
Förberedelse är det första steget i varje testprocess. Detta inkluderar att förhandla om exakt vilka kontroller som ska genomföras och att få alla nödvändiga godkännanden – t.ex. från företagets ledning och intressenter.
Testarna måste utveckla dessa kontroller på ett sätt som passar projektets tidslinje samtidigt som alla viktiga komponenter täcks. Gruppens planering kan avgöra hur effektiva kodförändringarna är.
2. Introducera mutanter och fel
När förberedelserna är klara börjar testteamet att ändra koden och mutera den i enlighet med sin plan för att införa specifika fel. Dessa fel bör vara relativt små eftersom testarna på så sätt kan bedöma resten av teamets förmåga att identifiera kodningsproblem.
Mindre fel kan också hjälpa organisationen att inspektera känsligheten hos sin programvara för automatisering från tredje part.
3. Tillämpa testfallen
Testfallen måste ta hänsyn till alla möjliga felpunkter i ett program – detta kan kräva en omskrivning om det muterade programmet kan fungera utan fel.
Ett programs testfall representerar hela bredden av de kontroller som testarna utför; varje testfall ska hjälpa testarna att avslöja dolda förändringar och vara en del av programmets användbarhet.
4. Jämför resultaten
Efter att ha lagt till mutationsfel i programmet och tillämpat teamets testfall måste teamet jämföra resultaten från både det ursprungliga och det muterade programmet.
Förhoppningen är att för varje lyckad kontroll i originalet ska det också finnas ett fel i den muterade tillämpningen. Detta visar på förmågorna hos både testarna och de verktyg de använder.
5. Agera på olika resultat
Om det finns olika resultat mellan det ursprungliga och det muterade programmet, vilket testarna förväntar sig, betyder det att testfallet framgångsrikt kan döda mutanten genom att visa att den finns där.
Testarna kan sedan fortsätta med förtroende för sin metodik och sin förmåga att identifiera kodningsproblem. Inga ändringar av testfallen är nödvändiga för dessa särskilda tester.
6. Ändra fodral om det behövs.
Vissa kodmutationer kan leda till identiska slutsatser i de olika programmen, vilket tyder på att testfallen inte kan belysa alla möjliga fel i programmet.
I dessa fall förblir mutanten “levande” och kan fortsätta att påverka programvaran på ett sätt som testarna inte har något ramverk för att hantera – detta leder till att bättre testfall skapas.
Hur man skapar muterade program
Mutantprogram är i praktiken identiska med originalprogrammen, med undantag för en mindre förändring som kan påverka programmets funktionalitet på ett litet men märkbart sätt.
Omfattande och detaljerade testfall hjälper en testare eller programvarusvit att identifiera dessa förändringar och de fel som uppstår. Varje fall som företaget kontrollerar kräver både ett ursprungligt och ett förändrat program, vilket visar effekterna av varje förändring i isolering.
Programmen replikerar vanligtvis realistiska fel, t.ex. kodningsfel. Det är också viktigt för testare att undvika “dödfödda” mutanter som hindrar programmet från att köras – detta är alltför uppenbart för testare.
Vad ska man ändra i ett mutantprogram?
Som med många variabler för testning av programvara beror de exakta ändringar som testarna gör på programmet och dess kod.
Det finns tre kategorier som omfattar majoriteten av mutationstesterna: operander, uttryck och påståenden. Genom att ändra någon av dessa kan man skapa ett effektivt mutantprogram som visar hur olika värden eller regler påverkar själva logiken som ett program använder.
Dessa kategorier är relaterade till de tre huvudtyperna av mutationer som testare undersöker; dessa är besluts-, värde- respektive uttalande-mutationer. Ändringarna ska vara små och får inte helt förhindra att testet utförs.
Bästa praxis för mutationstestning
När du utför mutationstestning i samband med programvarutestning finns det vissa metoder som är värda att följa för att säkerställa goda resultat, t.ex:
1. Maximera mutationsresultatet
Ett programs mutationsresultat är den procentandel mutanter som ett team eller program kan identifiera eller “döda”.
Om en omgång av mutationstestning till exempel har 40 mutanter och testarna hittar 36, är mutationspoängen 90 % – teamets mål är alltid att uppnå 100 %.
2. Välj mutanter slumpmässigt.
Det kan hjälpa att prioritera vissa komponenter och testa dem mer noggrant, men det är också användbart för testare att slumpmässigt välja vilka mutanter som ska läggas till – särskilt när tidsfristen är kort.
Så länge dessa kontroller representerar alla viktiga typer av mutationer kan kvalitetssäkringsteamet validera sin övergripande strategi för testning av programvara.
3. Håll ändringarna små.
Kodmutationerna bör representera mindre avvikelser från det ursprungliga programmet eftersom detta visar hur sannolikt det är att en testare kommer att upptäcka vissa fel.
Det är viktigt att mutationstestare hittar en balans som gör att dessa mindre förändringar fortfarande kan ge märkbara fel.
4. En mutation per program.
Mutationstestning tittar på enskilda testfall i isolering för att kontrollera hur omfattande de är. För att underlätta detta bör varje muterat program endast ha en ändring jämfört med originalet.
Program med flera mutationer kanske inte kan kopplas ihop med testfall på ett effektivt sätt; mutationerna kan komma i konflikt med varandra.
5. Överväg noggrant automationsprogram.
Företag använder ofta kodmutation för att validera teamets användning av automatiseringsprogramvara och se till att den kan identifiera fel lika effektivt som en mänsklig testare.
Detta innebär att det kan vara viktigt att välja rätt automationsplattform, liksom möjligheten att integrera robotiserad processautomatisering.
6. Använd testdriven utveckling
Testdriven utveckling (TDD) är en särskild teknik som tar hänsyn till testkraven i varje utvecklingsskede.
Detta bidrar till att säkerställa att testfallen är helt kompatibla med programvaran, så att den enkelt kan klara mutationstesterna och skapa ett bättre program som är synkroniserat med kvalitetssäkringsprocesserna.
Typer av resultat från ett mutationstest
Mutationstesterna genererar flera resultat, bland annat:
1. Mutantprogram
De muterade programmen är ett naturligt resultat av dessa kontroller; testarna skapar dem för att återspegla sina aktuella testfall och de problem som de hjälper till att upptäcka. Programmen avviker vanligtvis endast på ett litet men viktigt sätt från den ursprungliga motsvarigheten för att garantera större tillförlitlighet.
2. Levande eller död mutant
Efter testerna “dödas” mutationen eller förblir “levande” – det handlar helt enkelt om huruvida testaren (eller programvaran) lyckas identifiera ett kodningsproblem eller inte.
Om mutanten fortsätter att leva kan testfallen vara i behov av allvarliga ändringar.
3. Testfall för mutation
Kvalitetssäkringsteamet använder separata mutationsspecifika testfall som loggar information om deras mutantprogram.
Detta bidrar till att säkerställa att teamet har omfattande dokument för varje kontroll; dessa dokument innehåller detaljer om mutationerna och deras effekter på programmet.
4. Mutationsresultat
Slutmålet för alla mutationstester är att uppnå en mutationspoäng på 100 % genom att företagets testförfaranden lyckas lokalisera och döda alla mutanter. Allt annat tyder på att deras testfall och allmänna processer behöver förbättras för att identifiera problematisk kod.
Exempel på mutationstestning
Här är tre exempel på mutationstestning:
1. Exempel på värdemutation
Värdemutationer innebär att man ändrar en konstant eller parameter som potentiellt kan ändra programmets gränser. Till exempel kan programvaran för en automatisk kassautomat använda en livsmedelsartikelns vikt för att bestämma priset.
Testarna kan ändra koden bakom programmet för att ändra viktparametrarna och göra maten mycket dyrare för varje gram eller pund. Testaren eller testplattformen bör kunna identifiera de olika värdenas effekter på programmet.
Eftersom detta fel ändrar en av programvarans huvudfunktioner bör testfallen uppmärksamma felet och varna teamet.
2. Exempel på beslutsmutation
Beslutsmutationer innebär att man ändrar en aritmetisk eller logisk operatör, vänder eller på annat sätt ändrar hur programmet reagerar på användarinmatning. Om vi återgår till exemplet med en självutcheckning kan dessa maskiner flagga för en vara med oväntat hög vikt, eventuellt på grund av ett användarfel.
Maskinkoden skulle kunna göra detta genom ett “if (a>b)”-beslut – där “b” motsvarar den förväntade vikten och “a” motsvarar den faktiska vikten. Teamet kan ändra detta till “if (a≤b)”, vilket ändrar hur kassan reagerar; den skulle flagga varan även om den har den förväntade vikten.
3. Exempel på en mutationsförklaring
Statementmutationer innebär att man ändrar en regel eller ett resultat – det kan till och med innebära att man tar bort uttalanden från programmet helt och hållet. Dessa mutationer kan vara mer märkbara än andra, beroende på hur ofta det specifika uttalandet förekommer; det är viktigt att testarna väljer uttalandet med omsorg.
En självutcheckningsmaskin kan till exempel visa en varning om en användare försöker köpa en produkt med åldersbegränsning. Utan motsvarande uttalande kan maskinen krascha eller tillåta en kund att köpa en artikel.
Genom att ändra uttalandet och lyfta fram det för teamet kan testarna verifiera att deras tillvägagångssätt tar hänsyn till dessa problem.
Typer av fel och buggar som upptäcks genom mutationstestning
Mutationstester avslöjar främst problem i själva testprocessen. Med detta i åtanke följer här en rad problem som dessa kontroller kan hjälpa till att identifiera:
1. Otydliga testfall
Om mutationsanalysen visar ett lågt mutationsresultat (eller till och med ett resultat under 100 %) tyder det på att teamets testfall inte kan ta hänsyn till alla möjliga fel som kan påverka ett program.
De kanske inte är tillräckligt specifika eller breda för att motsvara teamets krav. Dessa dokument bör omfatta alla möjligheter som teamet kan stöta på när de testar programvaran för att säkerställa tillförlitligheten.
2. Otränad testgrupp
Mutationstester kan också illustrera lagets förmåga, inklusive hur väl de personligen identifierar mutationer och andra fel. Om de inte kan hitta mutanter i alla program trots tydliga och detaljerade testfall kan det bero på att testarna inte tillämpat dessa fall korrekt.
Muterade program kan visa problem under hela testprocessen – detta kan även gälla okvalificerade eller outbildade testare.
3. Otillräcklig testprogramvara
Om ett företag använder dessa kontroller för att inspektera sin egen testplattform kan det upptäcka att programvaran inte kan identifiera eller döda mutantkod på ett korrekt sätt.
Företaget kan reagera genom att undersöka andra alternativ tills det hittar ett som är förenligt med testfallen. Om automatiseringsmjukvaran misslyckas med att hitta problematisk kod kommer den sannolikt att ha svårt att identifiera andra problem som påverkar programvaran.
4. Ooptimerad kod
Mutationstestning kan avslöja problem som redan finns i programvaran. Testare kan till exempel försöka ändra koden men själva upptäcka kritiska fel.
Detta är ytterligare ett viktigt perspektiv på programmet och visar att kodmutation ger fördelar utöver testprocessen. Ju fler testare som undersöker koden på något sätt, desto fler problem kan teamet upptäcka och åtgärda under testfasen.
Mätvärden för gemensamma mutationstester
De viktigaste mätvärdena som används i mutationstester är följande:
1. Dödade mutanter
Detta avser antalet mutanter som testarna eller programvaran kunde identifiera, och som markerar deras existens för att säkerställa att personalen kan hitta mindre fel som dessa.
Antalet mutanter som testarna dödar beror på hur starka deras testfall är.
2. Levande mutanter
Levande mutanter är sådana som testaren eller programvaran inte lyckas identifiera – vilket visar på eventuella luckor i teamets kvalitetssäkringsstrategi. Om detta händer bör testarna omkalibrera sin process och sina testfall för att ta hänsyn till dessa mutanter och döda dem i framtida kontroller.
3. Giltiga mutanter
Detta mått bestämmer hur många mutationer som programmet kunde inkludera utan att ett körtidsfel förstörde testet och dess effektivitet.
Giltiga mutanter är sådana som testaren och automationsprogrammet kan undersöka, eftersom mutationerna är relativt små.
4. Ogiltiga mutanter
Betydande mutationer kan påverka programmet tillräckligt mycket för att göra testning opraktisk eller till och med omöjlig – därför är det bra att hålla reda på hur många “ogiltiga” mutanter som finns i det muterade programmet.
Genom att identifiera dessa kan testarna redigera eller till och med ta bort dem och se till att kontrollerna endast omfattar giltiga mutationer.
5. Totalt antal mutanter
Antalet mutationer oberoende av deras giltighet är ett annat mått som testarna följer upp, vilket gör att de kan övervaka mutanterna och registrera deras status.
Eftersom varje mutation vanligtvis kräver ett separat test, fungerar totalsumman också som ett räknevärde för antalet totala kodmutationer.
6. Mutationsresultat
Det mest användbara måttet för analys av mutationer är vanligen mutationspoängen, som i praktiken är den procentuella andelen giltiga mutanter som testaren eller automatiseringsuppsättningen kunde upptäcka.
Allt mindre än 100 % upptäckt kan vara ett tecken på felaktiga testförfaranden.
7 misstag och fallgropar vid implementering av mutanttester
Mutationstestning är en komplex process som företagen måste genomföra på ett klokt sätt för att undvika allvarliga problem eller misstag. Här är sju fallgropar som testare bör undvika när de utför mutationstester:
1. Felaktig skalning av mutationer
Skalan är en viktig faktor vid mutationsanalyser, eftersom denna process är till för att se till att testare identifierar mindre fel i ett program. Om mutationen är alltför uppenbar för testarna är detta kanske inte ett effektivt sätt att kontrollera deras förmåga att upptäcka eller motverka programvaruproblem.
2. Ogiltiga eller levande mutationer
Många mutationer har även i rätt skala endast begränsad effektivitet – till exempel om de inte leder till ett fel eller om de leder till ett problem som gör att programmet inte fungerar.
Testare bör vara uppmärksamma på hur ändringar i kodningen kan påverka hela programvaran.
3. Inkompatibla testfall
Testfallen och mutationerna måste passa perfekt ihop för att säkerställa en konsekvent och harmonisk testning. När kvalitetssäkringsteamet beslutar vilka mutationer som ska läggas till eller till och med när de utformar de första testfallen kan de arbeta för att garantera att dessa passar ihop och leder till smidigare testning överlag.
4. Tidsfrister och tidtabeller
Testfaserna varierar i längd men bör alltid följa företagets interna tidsfrister. Företag som inte planerar sina mutationstester på rätt sätt kan inte hinna slutföra processen i tid.
Innan ett projekt når teststadiet måste teamet se till att testplanen är tillräckligt omfattande.
5. Otillräcklig testtäckning
Företag kan välja att införa sina kodförändringar slumpmässigt – men det är ändå viktigt att de täcker ett brett spektrum av frågor.
För att säkerställa att både testarna och programvaran kan upptäcka alla typer av mutanter bör kontrollerna minst omfatta flera värde-, besluts- och uttalande-mutationer.
6. Användning av mutanter för att testa programvaran
Även om mutationstestning ger ett nytt perspektiv på en applikation får teamet endast använda denna metod för att kontrollera sin egen testprocess. Företaget måste förstå de exakta möjligheterna och begränsningarna med mutationstestning, eftersom denna teknik endast kan fungera tillsammans med andra programvarukontroller.
7. För många mutanter
Det är av största vikt att företagen säkerställer en bred testtäckning, men det kan hända att de implementerar för många mutanter i processen. Varje mutationsprogram kräver en betydande mängd datorkraft, vilket begränsar hur många en organisation kan genomföra samtidigt.
Att köra för många mutationer kan också göra det svårare att hålla tidsfristerna för testning.
Checklista, tips och tricks för mutationstestning
Det finns ett antal ytterligare tips som kan hjälpa alla team att förbättra framgången med sin mutationstestningsprocess, till exempel:
1. Kontrollera kompatibiliteten med programmeringsspråket
Både kostnadsfria och betalda verktyg för mutationstestning är vanligtvis specialiserade på ett kodningsspråk, vilket gör det viktigt att testarna väljer ett verktyg som är kompatibelt med applikationen och plattformen för programvarutestning.
Testteamet bör undersöka många alternativ för att se till att de använder ett program som passar deras budget och det kodningsspråk de föredrar.
2. Fördela testerna på ett klokt sätt
Olika medlemmar i testteamet kommer troligen att titta på olika aspekter av programmet, vilket vanligtvis beror på deras specifika styrkor, svagheter och övergripande erfarenhet.
När teamet tilldelar varje testare mutationstester bör de ha detta i åtanke för att få en uppfattning om deras kompetens; detta visar hur bra ytterligare tester sannolikt kommer att gå.
3. Välj fel med omsorg
Om en nyligen genomförd version av programvaran hade ett fel som gällde ett värde eller ett uttalande kan det vara bra att upprepa detta och undersöka hur teamet eller programmet reagerar.
Detta bidrar till att garantera applikationens livslängd och illustrerar teamets förmåga att upptäcka tidigare fel om de återkommer – detta är en viktig del av regressionstestning.
4. Maximera beräkningskraften
Eftersom mutationskontroller kan kräva mycket beräkningskraft för att köras hjälper det att utnyttja företagets hårdvara på bästa sätt.
Om vissa maskiner har starkare specifikationer kan det till exempel vara bra att köra mutanterna på dessa enheter. På så sätt kan företaget undvika betydande förseningar som långsammare maskiner kan leda till.
5. Avvisa inte levande mutationer
Även med ett strikt schema bör testarna arbeta för att ändra och bredda sina testfall för att bekämpa eventuella mutanter som överlever processen.
Även om dessa fel kanske inte är så viktiga om programvaran eller testaren inte upptäcker dem, är de ändå ett tecken på att testfallen inte har lyckats identifiera alla kodningsproblem.
6. Undersöka ny programvara för automatisering.
Om gruppens testfall är tillräckligt detaljerade men deras automatiserade testprogram inte kan använda dem för att identifiera varje mutation, kan de ha nytta av annan programvara.
Det finns många kostnadsfria och betalda plattformar, och företag bör kontrollera alla alternativ för att se till att de har den programvara som passar bäst för deras testfall på lång sikt.
7. Synkronisera varje testprocess
Samarbete är en central del av varje teststrategi – det hjälper till att se till att varje process enkelt kan passa ihop som teamet vill.
Testteamet kan till exempel utveckla sina testfall med mutation i åtanke för att säkerställa en högre grad av kompatibilitet, vilket gör det lättare för testarna att validera sin strategi.
8. Använd enhetstestning
Med enhetstestning kan kvalitetssäkringsteamet inspektera delar av koden isolerat, vilket effektiviserar testerna avsevärt och gör det lättare för teamet att identifiera problem.
Den här kombinationen kan vara särskilt användbar om testarna oroar sig för deadlines, vilket ger dem möjlighet att förenkla sina kontroller och förbättra den totala täckningen – vilket leder till mycket starkare programvarutester.
9. Skriv detaljerade testfall.
Testfall för mutationer bör innehålla tillräcklig information om mutanten och dess effekt på programmet samt hur testgruppen eller plattformen lokaliserade dessa fel.
Genom att tillhandahålla så många detaljer som möjligt kan testaren personligen validera testfallet och se till att teamet vet exakt hur man ska säkerställa en smidig testning.
De 5 bästa verktygen för mutationstestning
Det finns ett brett utbud av verktyg som kan hjälpa företag med deras krav på mutationstestning. Som ofta är fallet med program för programvarutestning varierar priserna och funktionerna från en plattform till en annan, vilket gör det viktigt att organisationer väljer den som bäst passar deras behov.
En del av dessa program kan erbjuda gratis motsvarigheter eller vara helt öppna källkoder, men det är oftast nödvändigt att betala för större bekvämlighet.
Med detta i åtanke följer här de fem bästa verktygen för mutationstestning.
1. Stryker
Stryker har specialiserat sig på JavaScript-mutationer och har effektiviserat denna process avsevärt för att garantera att inga falska positiva resultat uppstår och för att minska den totala arbetsinsatsen som testarna annars skulle behöva göra för alla mutationskontroller.
Stryker-plattformen bedömer programvaran på ett intelligent sätt och använder den insamlade informationen för att ta reda på vilka strängar eller segment av koden som skulle gynnas av mutation. Denna applikation har en rapport med klartext som ger en sammanfattning av mutanten, inklusive om Stryker lyckades döda den.
2. PITest
PITest är ett mycket populärt val över hela världen på grund av dess förmåga att ändra Java-bytekoden och göra tusentals mutationer per sekund. Den här applikationen använder data om testfallstäckning för att omedelbart lära sig vilka tester som kan döda en mutant.
Den kör endast tester som den vet kommer att vara relevanta, vilket begränsar den beräkningskraft som denna procedur vanligtvis tar i anspråk. PITest är också kompatibelt med de flesta former av Surefire-plugin för enhetstestning, men kan ha svårt att hantera testorderberoenden på ett effektivt sätt.
3. Försäkra++
Insure++ har många testfunktioner, inklusive mutationsanalys, vilket gör att plattformen kan upptäcka tvetydigheter i ett program. Insure++ skiljer sig från konventionell mutationstestning genom att inte generera felaktiga mutanter utan istället skapa funktionellt likvärdiga mutationer som matchar projektets källkod.
Detta för att undvika implicita antaganden som oavsiktligt kan begränsa testprocessen och som kanske inte återspeglar realistiska testmiljöer. Som namnet antyder är plattformen huvudsakligen kompatibel med C++-program och alla funktioner är anpassade till detta språk.
4. Jumble
Det här programmet är specialiserat på JUnit JavaScript-ramverket, med omfattande visuella indikatorer på hur koden reagerar på mutationsanalys. Jumble är en plattform med öppen källkod och fungerar i byte-koden i Java-program för att minska tiden för varje testcykel.
Liknande program som enbart använder ett programs källkod kan ibland ta längre tid att utföra dessa kontroller på grund av deras omkompileringsprocess.
Jumble använder sig också av heuristik för att optimera mutationstestningen ytterligare, vilket gör efterföljande testkörningar enklare.
5. MutPy
MutPy stöder mutationstester för Python-baserade program och erbjuder fullt stöd för mutationer av hög ordning samt omfattande täckningsanalyser. Programmets gränssnitt är lätt att använda i utdatafasen och visar tydligt alla viktiga detaljer i lagets mutationstester.
MutPy erbjuder många skräddarsydda valmöjligheter för testare – vilket gör att de kan kalibrera programvaran specifikt efter sina behov. Plattformen använder abstrakta syntaxträd som ger en tydlig struktur för applikationens källkod, vilket ger testare större förtroende för sina mutationer.
Slutsats
Kodmutation kan användas i nästan alla programvarutestningsprocesser och erbjuder ett antal tydliga fördelar för företag som tillämpar denna teknik – särskilt tidigare i kvalitetssäkringsfasen.
Ingen metodik är utan utmaningar, vilket innebär att det är viktigt att organisationer klokt överväger fördelarna med mutationsanalys och samtidigt ser till att den passar in i deras vanliga tidsplan för mjukvaruutveckling.
Dessa mutationer ger testteamen en chans att granska sin egen metod och avgöra hur effektiv den är när det gäller att hitta och åtgärda fel i källkoden. Den här tekniken är särskilt kompatibel med automatiseringsförfaranden och gör det möjligt för företagen att validera den programvara som de litar på för att hantera sina kontroller.
Mutationstestning är ett omfattande sätt för kvalitetssäkringsteam att utveckla en bättre förståelse för sina egna processer och programvaror, inklusive de problem som de annars inte skulle upptäcka.
Därför är det viktigt att testteamen undersöker den här tekniken noga för att bedöma om den motsvarar organisationens behov – inklusive om mutationsverktyget de väljer är fullt kompatibelt med deras programmeringsspråk. Den automatiserade testprogramvaran ZAPTEST har många funktioner som gör att den klarar mutationstester, vilket gör att team har fullt förtroende för dess förmåga.
Både Free- och Enterprise-versionen erbjuder en högkvalitativ testprocess som enkelt kan hantera kodförändringar.
Vanliga frågor och resurser
1. De bästa kurserna om mutationstestning
Onlinekurser kan hjälpa nyanställda testare att lära sig grunderna i kodmutation eller stärka de redan befintliga kunskaperna hos erfarna kvalitetssäkringsmedarbetare. Allmänna lektioner i programvarutestning kan också erbjuda många fördelar för testare. De bästa onlinekurserna för mutationstestare är bland annat:
– PluralSights “Mutation Testing in Java with PITest” tittar specifikt på hur man ändrar Java-kod och hur detta tillvägagångssätt kan gynna praktiska testprocesser för programvara.
– Udemy’s “The Complete 2023 Software Testing Bootcamp” är en särskilt uppdaterad kurs som illustrerar alla viktiga komponenter i programvarutestning, inklusive white-box-testning.
– Alison’s “Software Testing – Condition Coverage and Mutation Testing Strategies” är gratis och undersöker noga hur man på ett klokt sätt kan genomföra mutationstestning.
– PluralSights “Unit Testing Fundamentals” utforskar fördelarna och funktionerna med enhetstestning och hjälper eleverna att förstå den exakta processen för att skriva starka enhetstester.
– Udemys “Introduktion till enhetstestning” är en annan gratis kurs som ger en tydlig uppdelning av enhetstestning och vikten av testdrivna utvecklingsstrategier.
2. Vilka är de 5 vanligaste intervjufrågorna om mutationstestning?
Det finns ett antal frågor som företag kan ställa till kandidater under en intervju för att verifiera deras erfarenhet eller förståelse av mutationstestning och dess huvudprinciper. På så sätt kan ett företag se till att de anställer en kvalificerad testare som enkelt kan hantera olika scenarier som rör mutationer.
De exakta frågorna varierar, men de kan till exempel vara att fråga efter deras egna åsikter eller efter exempel på deras färdigheter i kodmutation.
De fem vanligaste intervjufrågorna om mutationstestning är:
– Vilka verktyg för mutationstestning har du tidigare erfarenhet av, om några? Vilka var de viktigaste funktionerna i denna programvara?
– Hur skulle du arbeta för att säkerställa en sund balans mellan testhastighet och testdjup när du genomför kodmutation?
– I vilka situationer skulle mutationsanalys vara omöjlig? Hur skulle du inspektera testförfarandet i dessa scenarier?
– Om en värdemutation lyckas överleva testprocessen, vad skulle du göra för att förhindra att det händer igen?
– Vilken information skulle du inkludera i ett mutationstestfall för att garantera att dina kollegor får de uppgifter de behöver?
3. De bästa YouTube-handledningarna om mutationstestning
Gratis handledning, webbseminarier och andra videoklipp finns på YouTube för att hjälpa till att öka testpersonernas förståelse för mutationstestning. Några av de mest användbara videorna och serierna i ämnet är:
– Software Testing’s “Mutation Testing for Programs”, som ger praktiska exempel på hur kodmutation hjälper program, tillsammans med hur man skriver grundliga testfall.
– Devoxx’ “Mutation Testing”: Did my test break my code?”, som handlar om hur mutationsanalys förbättrar de övergripande testförfarandena för alla typer av mjukvaruprojekt.
– NDC:s konferens “Döda alla mutanter! Intro to Mutation Testing”, där man undersöker hur testsviter kan dra nytta av kodmutation och de fel som den bidrar till att skapa.
– GOTO Conferences’ “Mutation Testing in Python”, där man särskilt undersöker hur Python-baserade tillämpningar kan använda mutationsanalys för att nå specifika testmål.
– Diego Pachecos “Java Mutation Testing With PITest”, som på liknande sätt illustrerar hur JavaScript-programvara använder kodmutation – med fokus på mutationsprogrammet PITest.
4. Hur upprätthåller man mutationstester?
Genom att kombinera mutationsanalyser med regressionstestning och andra långsiktiga strategier kan företag säkerställa en stark standard för kvalitetssäkring även efter lanseringen.
Senare uppdateringar kan leda till kodändringar som kräver ytterligare kontroller. Mutationstestning visar att automatiseringsprogramvaran och testarna är konsekventa i olika versioner av samma programvara, vilket återigen bekräftar deras särskilda tillvägagångssätt.
Nya funktioner kräver nya testfall, särskilt om dessa funktioner interagerar med redan existerande testfall.
Användningen av testdriven utveckling gör det dessutom möjligt för teammedlemmarna att planera för programvarans livslängd och testa kompatibiliteten som en del av den egna utvecklingscykeln.