Couverture des tests dans les tests logiciels : comment la mesurer
โก Rรฉsumรฉ intelligent
La couverture des tests logiciels mesure la proportion d'une application effectivement testรฉe par un ensemble de tests. Elle rรฉvรจle les exigences non testรฉes, les chemins d'exรฉcution et les risques, permettant ainsi aux รฉquipes d'ajouter des cas ciblรฉs et de procรฉder ร des mises en production avec un niveau de confiance mesurable.

Quโest-ce que la couverture des tests ?
La couverture des tests est dรฉfinie comme une mรฉtrique dans les tests logiciels qui mesure la quantitรฉ de tests effectuรฉs par un ensemble de tests. Cela comprendra la collecte d'informations sur les parties d'un programme qui sont exรฉcutรฉes lors de l'exรฉcution de la suite de tests afin de dรฉterminer quelles branches d'instructions conditionnelles ont รฉtรฉ prises.
En termes simples, il s'agit d'une technique permettant de garantir que vos tests testent votre code ou la quantitรฉ de code que vous avez exercรฉe en exรฉcutant le test.
ร quoi sert la couverture des tests ?
Dans le cadre d'un projet en production, la couverture des tests prend en charge quatre activitรฉs pratiques :
- Trouver le domaine d'une exigence non implรฉmentรฉe par un ensemble de cas de test
- Aide ร crรฉer des cas de test supplรฉmentaires pour augmenter la couverture
- Identifier une mesure quantitative de la couverture des tests, qui est une mรฉthode indirecte de contrรดle de qualitรฉ
- Identifier les cas de test dรฉnuรฉs de sens qui n'augmentent pas la couverture
Avantages de la couverture des tests en gรฉnie logiciel
Ces activitรฉs se traduisent par des avantages concrets en matiรจre d'ingรฉnierie.
- Il peut assurer la qualitรฉ du test
- Cela peut aider ร identifier quelles parties du code ont รฉtรฉ rรฉellement touchรฉes pour la version ou le correctif.
- Il peut identifier tous les points de dรฉcision et les chemins non testรฉs de votre application, ce qui vous permet d'amรฉliorer la couverture des tests.
- Prรฉvenir dรฉfaut fuite
- Le temps, la portรฉe et les coรปts peuvent รชtre maรฎtrisรฉs
- Prรฉvention des dรฉfauts ร un stade prรฉcoce du cycle de vie du projet
- Les lacunes dans les exigences, les cas de test et les dรฉfauts au niveau de l'unitรฉ et du code peuvent รชtre dรฉtectรฉs facilement.
Types de couverture de test
La couverture ne se rรฉsume jamais ร un seul chiffre. รquipes tracIl existe plusieurs types de questions simultanรฉment, car chacune rรฉpond ร une question diffรฉrente concernant la mรชme suite. Le tableau ci-dessous regroupe les types les plus courants.
| Type de couverture | Ce qu'il mesure | Meilleur utilisรฉ pour |
|---|---|---|
| Couverture de la dรฉclaration (ligne) | Les lignes exรฉcutables s'exรฉcutent au moins une fois. | Tests unitaires et audits de code existant |
| Couverture de branche ou de dรฉcision | Rรฉsultat vrai et faux de chaque dรฉcision | Logique conditionnelle et de validation |
| Couverture des conditions | Chaque sous-expression boolรฉenne est considรฉrรฉe comme vraie ou comme fausse. | Expressions composรฉes ET ou OU |
| Couverture du chemin | Itinรฉraires uniques empruntรฉs ร travers un module | Flux critiques pour la sรฉcuritรฉ et flux financiers |
| Couverture fonctionnelle | Fonctions ou mรฉthodes appelรฉes par les tests | couches API et de service |
| Couverture des exigences | Exigences associรฉes ร au moins un test | Acceptation et consentementtracsignature รฉlectronique |
| Couverture des risques | Zones ร haut risque identifiรฉes | cycles de libรฉration courts |
Les cinq premiers types sont des mesures au niveau du code et appartiennent ร test boรฎte blanche, tandis que les exigences et la couverture des risques se situent au niveau du plan de test.
Quelles sont les principales diffรฉrences entre Code Couverture et couverture des tests ?
Code couverture et la couverture des tests sont des techniques de mesure qui vous permettent d'รฉvaluer la qualitรฉ du code de votre application.
Voici quelques diffรฉrences critiques entre les cabines de ces mรฉthodes de couverture :
| Paramรจtres | Code Couverture | Couverture de test |
|---|---|---|
| Dรฉfinition | Code Terme de couverture utilisรฉ lorsque le code d'une application est exรฉcutรฉ pendant son exรฉcution. | La couverture des tests signifie le plan de test global. |
| Objectif | Code Les indicateurs de couverture peuvent aider l'รฉquipe ร surveiller ses tests automatisรฉs. | La couverture des tests fournit des dรฉtails sur le niveau auquel le codage รฉcrit d'une application a รฉtรฉ testรฉ. |
| Sous-types | Code La couverture est divisรฉe en sous-types tels que la couverture des relevรฉs, la couverture des conditions, la couverture des succursales, Togglcouverture รฉlectronique, couverture FSM. | Aucun sous-type de mรฉthode de couverture de test. |
Formule de couverture des tests
Pour calculer la couverture des tests, vous devez suivre les รฉtapes ci-dessous :
รtape 1) que vous avez Y, le nombre total de lignes de code dans le logiciel que vous utilisez vers les tests
รtape 2) que vous avez X, le nombre de lignes de code que tous les cas de test exรฉcutent actuellement
Maintenant, vous devez trouver (X divisรฉ par Y) multipliรฉ par 100. Le rรฉsultat de ce calcul est votre % de couverture de test.
Par exemple :
Si un composant systรจme comporte 500 lignes de code et que 50 lignes ont รฉtรฉ exรฉcutรฉes au total pour l'ensemble des tests existants, alors votre couverture de test est :
(50 / 500) * 100 = 10% // executed lines divided by total lines
Exemples de couverture de test
Le pourcentage ร lui seul ne dit jamais tout, comme le montrent les exemples ci-dessous.
Exemple 1:
Par exemple, si vous souhaitez tester un couteau, vous devez vรฉrifier s'il coupe les fruits et lรฉgumes avec prรฉcision. Cependant, d'autres aspects sont ร prendre en compte, comme le confort d'utilisation.
Exemple 2:
Par exemple, si vous souhaitez tester l'application Bloc-notes, il est indispensable de vรฉrifier ses fonctionnalitรฉs essentielles. Cependant, il faut รฉgalement s'assurer que l'application fonctionne correctement lorsqu'on utilise d'autres applications, que l'utilisateur comprend son fonctionnement, qu'elle ne plante pas lorsqu'il effectue une action inhabituelle, etc.
Techniques de couverture des tests
Les deux exemples convergent vers la mรชme conclusion : atteindre un objectif de couverture dรฉpend moins de la quantitรฉ de tests รฉcrits que du choix dโune technique de conception de tests appropriรฉe. Les techniques ci-dessous permettent dโรฉlargir la couverture tout en maintenantโฆping la suite est petite.
- Analyse des valeurs limites : Sรฉlectionne les entrรฉes situรฉes aux extrรฉmitรฉs de chaque plage valide, lร oรน les dรฉfauts sont les plus concentrรฉs. Voir analyse des valeurs limites pour les dossiers traitรฉs.
- Partitionnement par รฉquivalence : Regroupe les entrรฉes que l'application traite de maniรจre identique, de sorte qu'un seul cas puisse reprรฉsenter en toute sรฉcuritรฉ une classe entiรจre de valeurs.
- Tests de table de dรฉcision: Couvre les combinaisons de conditions et leurs rรฉsultats attendus au sein d'une mรชme grille.
- test de transition d'รฉtat: Effectue tous les mouvements valides et invalides entre les รฉtats de l'application.
- Tests de chemin de base: Dรฉduit l'ensemble minimal de chemins indรฉpendants du graphe de flux de contrรดle.
- Tests basรฉs sur les risques: Classe les fonctionnalitรฉs en fonction de leur impact sur l'activitรฉ et traite en premier celles prรฉsentant le risque le plus รฉlevรฉ.
- Essais exploratoires: Rรฉvรจle des lacunes que les รฉtudes de cas scรฉnarisรฉes et les rapports de couverture n'exposent jamais.
Comment assurer une couverture de test optimale ?
Une fois les techniques choisies, quatre itinรฉraires รฉtablis assurent la couverture.
- La couverture des tests peut รชtre effectuรฉe en appliquant les techniques d'examen statique telles que les examens par les pairs, les inspections et la procรฉdure pas ร pas.
- En transformant les dรฉfauts ad hoc en cas de tests exรฉcutables
- Au niveau du code ou au niveau des tests unitaires, la couverture des tests peut รชtre obtenue en utilisant les outils automatisรฉs de couverture de code ou de couverture de tests unitaires.
- La couverture des tests fonctionnels peut รชtre effectuรฉe ร l'aide d'outils de gestion de tests appropriรฉs
Comment amรฉliorer la couverture des tests
L'รฉtablissement de la couverture est le point de dรฉpart ; son extension est une procรฉdure rรฉguliรจre. Suivez cette sรฉquence au dรฉbut de chaque cycle de publication.
- รtablir la base du nombre actuel. Exรฉcutez un rapport de couverture et enregistrez sรฉparรฉment la couverture des instructions, des branches et des exigences, afin que les lacunes restent visibles par module plutรดt que d'รชtre cachรฉes dans une moyenne globale du projet.
- Associer les tests aux exigences. Construire un tracGrille de test reliant chaque exigence ร au moins un cas de test. Une ligne vide indique une lacune confirmรฉe, et non une simple suspicion.
- Classer les modules par niveau de risque. Les logiques de paiement, d'authentification et de migration des donnรฉes mรฉritent une couverture bien plus approfondie qu'un simple รฉcran d'aide statique ; il faut donc consacrer le budget lร oรน une dรฉfaillance serait la plus prรฉjudiciable.
- Ajouter les cas nรฉgatifs et les cas limites. Les entrรฉes vides, les valeurs surdimensionnรฉes, les dรฉlais d'attente rรฉseau et les erreurs d'autorisation atteignent des branches que les tests de scรฉnario nominal n'atteignent jamais.
- Superposez les niveaux de test. Combiner tests unitaires, test d'intรฉgrationet des contrรดles de bout en bout, car chaque niveau couvre ce que les autres ne peuvent pas structurellement couvrir.
- Automatisez la suite de tests de rรฉgression. Promoles cas stables dans tests d'automatisation et les exรฉcuter ร l'intรฉrieur du Pipeline CI / CD aprรจs chaque commit.
- Supprimer les dossiers redondants. Supprimez les tests dupliquรฉs qui ajoutent des minutes d'exรฉcution sans ajouter une seule ligne non couverte.
- RevSuivre la tendance ร chaque sprint. Traccouverture k ร cรดtรฉ de densitรฉ de dรฉfautsUne fuite croissante sur une surface plane est un signe avant-coureur d'un angle mort.
โ ๏ธ Attention : Ne visez pas 100 %. Une suite de tests couvrant 85 % du code, avec des assertions robustes, protรจge bien mieux une version que 95 % de contrรดles superficiels qui exรฉcutent du code sans vรฉrifier aucun rรฉsultat.
Inconvรฉnients de la couverture des tests
La couverture reste prรฉcieuse, mais elle comporte des limites qu'il convient de prรฉciser avant de communiquer tout pourcentage.
- La plupart des tรขches de la couverture des tests sont manuelles car il n'existe aucun outil ร automatiser. Par consรฉquent, il faut beaucoup dโefforts pour analyser les exigences et crรฉer des cas de test.
- La couverture des tests vous permet de compter les fonctionnalitรฉs, puis de les mesurer par rapport ร plusieurs tests. Cependant, il y a toujours de la place pour des erreurs de jugement.
