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.
- Notions
- Questions
- Ranger et relier
- Les chiffres
- Mises en situation
- 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
ifdu côté vrai, donc toutes les instructions s'exécutent. Les deux côtés faux (montant <= 100etmembrefaux) ne sont jamais pris : 2 branches sur 4.Un
ifsanselsecompte … 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
ifsanselsecompte 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
ifsanselseest entièrement exécuté quand sa condition est vraie, même si le cas « faux » n'a jamais été essayé.