Code Coverage

Code Coverage

Couverture de code

La couverture de code (en anglais code coverage) est une mesure utilisée en génie logiciel pour décrire le taux de code source testé d'un programme. Ceci permet de mesurer la qualité des tests effectués.

La mesure de ce taux implique souvent l'utilisation de test unitaire.

Sommaire

Méthodes de couverture de code

Il y a de nombreuses méthodes pour mesurer la couverture de code. Les principales sont :

  • Couverture des instructions (Statement Coverage) - Chaque ligne du code a-t-elle été exécutée et vérifiée ?
  • Couverture des points de tests (Condition Coverage) - Chaque point d'évaluation (tel que le test d'une variable) a-t-il été exécuté et vérifié ? (Le point de test teste-t-il ce qu'il faut ?)
  • Couverture des chemins d'exécution (Path Coverage) - Chaque parcours possible (par exemple les 2 cas vrai et faux d'un test) a-t-il été exécuté et vérifié ?

Certaines méthodes sont liées, par exemple :

  • La couverture des chemins implique à la fois la couverture des instructions et la couverture des points de tests.
  • La couverture des instructions n'implique pas la couverture des points de tests, comme le montre le code ci-dessous (écrit en langage C) :
void foo(int bar)
{
   printf("this is ");
   if (bar < 1)
   {
      printf("not ");
   }
   printf("a positive integer");
}

Si la fonction "foo" est appelée avec l'argument "bar = -1", alors on assure la couverture des instructions (elles sont toutes exécutées) ; par contre, la couverture des points de tests n'est pas assurée.

Une couverture complète des chemins est généralement très difficile à accomplir, voire impossible :

  • Tout code contenant une succession de n points de tests contient potentiellement 2n chemins différents; les boucles peuvent aboutir à un nombre infini de chemins possibles.
  • Certains chemins sont parfois infranchissables, dans le sens où il n'existe pas de paramètre d'entrée du programme permettant de suivre ce chemin en particulier (les tests empêchant ce chemin sont souvent placés « par sécurité » au niveau d'une fonction).
  • Il n'existe pas d'algorithme général déterminant les chemins infranchissables (sinon un tel algorithme permettrait de résoudre le problème de l'arrêt).

La couverture de chemins consiste plus à regrouper les chemins par ressemblance (par exemple, ne différant que par le nombre de parcours de boucles) et à tester ces chemins « de base ».

Pour faciliter les tests, on instrumente le code source de façon à tracer l'exécution au cours des tests. La « trace » résultante est ensuite analysée pour identifier les chemins et les zones de code qui n'ont pas été vérifiés, puis les tests sont mis à jour (si nécessaire) pour améliorer la couverture. Combinée à d'autres méthodes, il est possible d'aboutir à un ensemble abordable (réaliste) de tests de non-régression.

La couverture de code accomplie est exprimée sous forme de pourcentage du code total. La signification de ce pourcentage dépend des types de couvertures effectuées : tester « 67% des chemins possibles » est plus utile que « 67% des instructions ».

Voir aussi

Outils de couverture de code

Notes

Ce document provient de « Couverture de code ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Code Coverage de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • Code coverage — is a measure used in software testing. It describes the degree to which the source code of a program has been tested. It is a form of testing that inspects the code directly and is therefore a form of white box testing.[1] Code coverage was among …   Wikipedia

  • Code Coverage — Die kontrollflussorientierten Testverfahren, auch Überdeckungstests genannt, gehören zu der Gruppe der strukturorientierten Testmethoden. Die kontrollflussorientierten Testverfahren orientieren sich am Kontrollflussgraphen des Programms. Es… …   Deutsch Wikipedia

  • EMMA (code coverage tool) — EMMA is an open source toolkit for measuring and reporting Java code coverage. EMMA is distributed under the terms of Common Public License v1.0.EMMA features at a glance: * EMMA can instrument classes for coverage either offline (before they are …   Wikipedia

  • Code integrity — is a measurement used in software testing. It measures the how high is the source code s quality when it is passed on to the QA, and is affected by how extensively the code was unit tested and integration tested. Code integrity is a combination… …   Wikipedia

  • Coverage — may refer to: Contents 1 Filmmaking 2 Media and journalism 3 Music …   Wikipedia

  • Code of ethics in media — The code of ethics in media was created by a suggestion from the 1947 Hutchins Commission. They suggested that newspapers, broadcasters and journalists had started to become more responsible for journalism and thought they should be held… …   Wikipedia

  • Couverture De Code — La couverture de code (en anglais code coverage) est une mesure utilisée en génie logiciel pour décrire le taux de code source testé d un programme. Ceci permet de mesurer la qualité des tests effectués. La mesure de ce taux implique souvent l… …   Wikipédia en Français

  • Branch Coverage — Die kontrollflussorientierten Testverfahren, auch Überdeckungstests genannt, gehören zu der Gruppe der strukturorientierten Testmethoden. Die kontrollflussorientierten Testverfahren orientieren sich am Kontrollflussgraphen des Programms. Es… …   Deutsch Wikipedia

  • Decision Coverage — Die kontrollflussorientierten Testverfahren, auch Überdeckungstests genannt, gehören zu der Gruppe der strukturorientierten Testmethoden. Die kontrollflussorientierten Testverfahren orientieren sich am Kontrollflussgraphen des Programms. Es… …   Deutsch Wikipedia

  • Path Coverage — Die kontrollflussorientierten Testverfahren, auch Überdeckungstests genannt, gehören zu der Gruppe der strukturorientierten Testmethoden. Die kontrollflussorientierten Testverfahren orientieren sich am Kontrollflussgraphen des Programms. Es… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”