La couverture de code

Mesurer ce que les tests exécutent : couverture des instructions, des branches, des conditions et des chemins, lecture d'un taux de couverture, et pourquoi 100 % ne prouve pas que le code est juste.

  • 27 cartes
  • 6 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Les chiffres
  5. Mises en situation
  6. Comprendre

Quelques cartes du deck

  • Couverture de code : de quoi s'agit-il ?

    Voir la réponse

    Part du code source que l'exécution des tests a effectivement parcourue, mesurée par un outil et exprimée en pourcentage.

    Elle dit ce que les tests exécutent, jamais ce qu'ils vérifient : un code parcouru sans aucune assertion compte quand même comme couvert.

  • Le seul test appelle remise(120, True). Quelle couverture donne-t-il ?

    ```python
    def remise(montant, membre):
    if montant > 100:
    montant = montant - 10
    if membre:
    montant = montant * 0.9
    return montant
    `

    • 100 % des instructions, mais 2 branches sur 4
    • 100 % des instructions et 100 % des branches
    • 2 instructions sur 5 et 2 branches sur 4
    • 100 % des instructions, mais 1 branche sur 4
    Voir la réponse

    100 % des instructions, mais 2 branches sur 4

    L'appel traverse les deux if du côté vrai, donc toutes les instructions s'exécutent. Les deux côtés faux (montant <= 100 et membre faux) ne sont jamais pris : 2 branches sur 4.

  • Un if sans else compte … branches : une où la condition est vraie, une où elle est fausse et où l'on enchaîne directement après le bloc.

    Voir la réponse

    Un if sans else compte deux branches : une où la condition est vraie, une où elle est fausse et où l'on enchaîne directement après le bloc.

    La branche « faux » existe même sans code écrit : c'est elle qu'un test oublie le plus souvent.

  • Couverture des instructions : de quoi s'agit-il ?

    Voir la réponse

    Proportion des instructions du programme exécutées au moins une fois par l'ensemble des tests.

    C'est le critère le plus faible : un if sans else est entièrement exécuté quand sa condition est vraie, même si le cas « faux » n'a jamais été essayé.