Wat is mutatietesten? (Voorbeeld)

Wat is mutatietesten?

Mutatie testen is een vorm van softwaretesten waarbij bepaalde uitspraken in de broncode worden gewijzigd/gemuteerd om te controleren of de testgevallen fouten in de broncode kunnen vinden. Het doel van Mutation Testing is het waarborgen van de kwaliteit van testgevallen in termen van robuustheid, zodat de gemuteerde broncode niet zou slagen.

De wijzigingen die in het mutantprogramma worden aangebracht, moeten uiterst klein worden gehouden, zodat deze de algemene doelstelling van het programma niet beïnvloeden. Mutatietesten wordt ook wel op fouten gebaseerde teststrategie genoemd, omdat het gaat om het creëren van een fout in het programma en het is een soort Wit Box Testen waar vooral voor wordt gebruikt Testen van een eenheid.

Mutatie werd oorspronkelijk voorgesteld in 1971, maar verloor zijn enthousiasme vanwege de hoge kosten die ermee gemoeid waren. Nu heeft het opnieuw stoom gewonnen en wordt het veel gebruikt voor talen zoals Java en XML.

Hoe voer je een Mutatietest uit?

Mutatietesten uitvoeren

Hieronder volgen de stappen voor het uitvoeren van mutatietesten (mutatieanalyse):

Stap 1: Fouten worden in de broncode van het programma geïntroduceerd door het creëren van vele versies die mutanten worden genoemd. Elke mutant zou één enkele fout moeten bevatten, en het doel is om de mutantversie te laten mislukken, wat de effectiviteit van de testgevallen aantoont.

Stap 2: Testgevallen worden toegepast op het oorspronkelijke programma en ook op het mutantprogramma. A Testgeval zou voldoende moeten zijn, en het is aangepast om fouten in een programma te detecteren.

Stap 3: Vergelijk de resultaten van een origineel en een mutantprogramma.

Stap 4: Als het originele programma en de mutantprogramma's de verschillende uitvoer genereren, wordt de mutant gedood door de testcase. Daarom is de testcase goed genoeg om de verandering tussen het originele en het mutante programma te detecteren.

Stap 5: Als het originele programma en het mutantprogramma dezelfde uitvoer genereren, wordt Mutant in leven gehouden. In dergelijke gevallen moeten effectievere testgevallen worden gecreëerd die alle mutanten doden.

Hoe Mutant-programma's maken?

Mutantprogramma's maken

Een mutatie is niets anders dan een enkele syntactische wijziging die in de programma-instructie wordt aangebracht. Elk mutantprogramma moet met één mutatie verschillen van het oorspronkelijke programma.

Origineel programma Mutantenprogramma
Als (x>y)

Afdrukken “Hallo”

Anders

Druk “Hallo” af

Als(x <y)

Afdrukken “Hallo”

Anders

Druk “Hallo” af

Wat moet er veranderd worden in een Mutant Programma?

Er zijn verschillende technieken die kunnen worden gebruikt om mutantprogramma's te genereren. Laten we ze eens bekijken

Operand vervangende operatoren Expressiewijziging Operaverdraaid Wijziging verklaring Operaverdraaid
Vervang de operand door een andere operand (x door y of y door x) of door de constante waarde. Vervang een operator of voeg nieuwe operatoren toe in een programma-instructie. Programmatische instructies worden aangepast om mutante programma's te maken.
Voorbeeld-

If(x>y) vervang x- en y-waarden

Als(5>y) vervang x door constante 5

Voorbeeld-

Als(x==y)

We kunnen == vervangen door >= en een mutantprogramma hebben als

If(x>=y) en het invoegen van ++ in de instructie

Als(x==++y)

Voorbeeld-

Verwijder het else-gedeelte in een if-else-instructie

Verwijder de volledige if-else-instructie om te controleren hoe een programma zich gedraagt

Enkele voorbeelden van mutatie-operatoren:

  • GOTO-labelvervanging
  • Vervanging retourverklaring
  • Verklaring verwijderen
  • Invoegen van een unaire operator (zoals – en ++)
  • Vervanging van logische connectoren
  • Vergelijkbare vervanging van de arraynaam
  • Verwijderen van else-gedeelte in de if-else-instructie
  • Toevoegen of vervangen van operatoren
  • Vervanging van verklaringen door de gegevens te wijzigen
  • Gegevenswijziging voor de variabelen
  • Wijziging van gegevenstypen in het programma

Automatisering van mutatietests

Het testen van mutaties is uiterst tijdrovend en ingewikkeld om handmatig uit te voeren. Om het proces te versnellen, is het raadzaam om voor automatiseringstools te kiezen. Automatiseringstools verlagen ook de testkosten.

Lijst met beschikbare tools-

Soorten mutatietesten

In Software EngineeringMutatietesten kunnen fundamenteel worden onderverdeeld in drie typen: statement-mutatie, beslissingsmutatie en waardemutatie.

  1. Verklaring Mutatie – de ontwikkelaar knipt en plakt een deel van een code, waarvan het resultaat het verwijderen van enkele regels kan zijn
  2. Waardemutatie– waarden van primaire parameters worden gewijzigd
  3. Beslissingsmutatie– controleverklaringen moeten worden gewijzigd

Mutatiescore

De mutatiescore wordt gedefinieerd als het percentage gedode mutanten met het totale aantal mutanten.

  • Mutatiescore = (Gedode Mutanten / Totaal aantal Mutanten) * 100

Mutatiescore

Testgevallen zijn mutatie-adequaat als de score 100% is. Experimentele resultaten hebben aangetoond dat mutatietesten een effectieve aanpak zijn om de geschiktheid van de testgevallen te meten. Maar het belangrijkste nadeel zijn de hoge kosten voor het genereren van de mutanten en het uitvoeren van elke test tegen dat mutantprogramma.

Voordelen van mutatietesten

Hieronder volgen de voordelen van mutatietesten:

  • Het is een krachtige aanpak om een ​​hoge dekking van het bronprogramma te bereiken.
  • Met deze tests kan het mutantprogramma uitgebreid worden getest.
  • Mutatietests zorgen voor een goed niveau van foutdetectie voor de softwareontwikkelaar.
  • Deze methode brengt dubbelzinnigheden in de broncode aan het licht en heeft het vermogen om alle fouten in het programma te detecteren.
  • Klanten profiteren van deze tests omdat ze een uiterst betrouwbaar en stabiel systeem krijgen.

Nadelen van mutatietesten

Aan de andere kant zijn er de volgende nadelen aan mutanttesten:

  • Het testen van mutaties is extreem kostbaar en tijdrovend, omdat er veel mutantprogramma's moeten worden gegenereerd.
  • Omdat het tijdrovend is, kunnen we met recht zeggen dat dit testen niet kan worden uitgevoerd zonder een automatiseringstool.
  • Elke mutatie zal hetzelfde aantal testgevallen hebben dan dat van het originele programma. Het kan dus nodig zijn een groot aantal mutantprogramma's te testen aan de hand van de originele testsuite.
  • Omdat deze methode wijzigingen in de broncode met zich meebrengt, is deze in het geheel niet van toepassing Zwart Box Testen.

Conclusie

Wilt u uw applicatie uitvoerig testen? Het antwoord is Mutatietesten. Het is de meest uitgebreide techniek om een ​​programma te testen. Dit is de methode die de effectiviteit en nauwkeurigheid van een testprogramma controleert om de fouten of fouten in het systeem op te sporen.