Un mutant est la modification d’une classe par une transformation syntaxique. Un mutant est le résultat de la modification d’une seule ligne. Il ne peut pas y avoir qu’une et une seule ligne modifiée par mutant.

Voici une classe simple :

public class MaClasse
{
    public string Compare(int a, int b)
    {
        if (a == b)
        {
            return "Identique";
        }
        else if (a > b)
        {
            return "a supérieur à b";
        }
        else if (a < b)
        {
            return "a inférieur à b";
        }
        else
        {
            throw new NotImplementedException;
        }
    }
}

Il est possible de générer plusieurs mutant par diverse transformation (ou mutation) :

  • == en !=, >=, <=, > ou < : soit 5 mutations,
  • > en ==, !=, >=, <=, < : soit 5 mutations,
  • < en ==, !=, >=, <=, > : soit 5 mutations.

Au final 15 mutations possibles et dans le cadre de cette classe 15 mutants possible.

Voici quelques mutants de cette classe :

  • == en != :

 

public class MaClasse
{
    public string Compare(int a, int b)
    {
        if (a != b)
        ...
    }
}

 

  • == en >= :

 

public class MaClasse
{
    public string Compare(int a, int b)
    {
        if (a >= b)
        ...
    }
}

 

  • > en == :

 

public class MaClasse
{
    public string Compare(int a, int b)
    {
        ...
        else if (a == b)
        {
            return "a supérieur à b";
        }
        ...
    }
}

 

  • < en != :

 

public class MaClasse
{
    public string Compare(int a, int b)
    {
        ...
        else if (a != b)
        {
            return "a inférieur à b";
        }
        ...
    }
}

 

Et ainsi de suite.

Last edited Apr 5, 2012 at 2:13 PM by niccoudev, version 3

Comments

No comments yet.