Top Qs
Chronologie
Chat
Contexte

Test de mutation

De Wikipédia, l'encyclopédie libre

Remove ads

Les tests de mutation sont des procédures mises au point et utilisées pour concevoir des tests logiciels et évaluer la qualité de ceux qui existent. Ils reposent sur des modifications mineures apportées à un programme afin d'avoir un comportement qui diffère du programme original[1]. Ces versions mutées sont appelées mutant. Le but étant que les tests détectent et "tuent" les mutants. Les suites de tests sont mesurées par le pourcentage de mutants qu'elles tuent. Les mutants sont basés sur des opérateurs de mutation bien définis qui imitent les erreurs de programmation typiques (comme l'utilisation d'un opérateur ou d'un nom de variable incorrect) ou forcent la création de tests précieux (comme la division de chaque expression par zéro). L'objectif est d'aider le testeur à développer des tests efficaces ou à localiser les faiblesses dans les données de test utilisées pour le programme ou dans des sections du code qui sont rarement ou jamais consultées pendant l'exécution. Les tests de mutation sont une forme de test en boîte blanche[2].

Remove ads

Objectifs

Les objectifs des tests de mutation sont :

  • identifier les morceaux de code avec des (ceux pour lesquels les mutants ne sont pas tués)[1]
  • calculer le score de mutation[3], le score de mutation est le nombre de mutants tués / nombre total de mutants.
  • en savoir plus sur la propagation des erreurs et l'infection de l'état dans le programme.

Présentation des tests de mutation

Par exemple, considérons cet extrait de code Java:

public boolean exemple(Boolean a, Boolean b){

    if (a && b) {
      return true;
    } else {
      return false;
    }
    
}

L'opérateur de mutation va remplacer && par || et produire le mutant suivant :

public boolean exemple(Boolean a, Boolean b){

    if (a || b) {
      return true;
    } else {
      return false;
    }
    
}

Pour qu'un test tue un mutant, les trois conditions suivantes doivent être remplies :

  1. Un test doit atteindre la zone mutée.
  2. Les données d'entrée de test doivent infecter l'état du programme en provoquant des résultats différents pour le mutant et le programme d'origine. Par exemple, un test avec a = true et b = false respecte cette condition.
  3. L'état incorrect du programme (la valeur retournée) doit se propager à la sortie du programme et être vérifié par le test.

Ces conditions sont collectivement appelées le modèle RIP[4],[5].

Remove ads

Références

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads