Tests de chemin et tests de chemin de base dans les logiciels avec exemples

⚡ Résumé intelligent

Le test de chemin de base est une technique de boîte blanche qui dérive des cas de test à partir des chemins logiques d'un programme, en utilisant un graphe de flux de contrôle et la complexité cyclomatique pour trouver l'ensemble minimal de chemins indépendants.

  • Idée de base : Les cas de test proviennent de la structure du code plutôt que du document des exigences.
  • (I.e. Quatre étapes : Dessinez le graphe de flux de contrôle, calculez la complexité cyclomatique, dérivez l'ensemble de base, écrivez un test par chemin.
  • (I.e. Nombre de cas de test : Le nombre de chemins indépendants est égal à la complexité cyclomatique, ce qui donne un objectif à atteindre.
  • (I.e. Méthode hybride : Il combine les tests de branches et les tests de chemins pour atteindre une couverture maximale avec un minimum de tests.
  • Garantie de couverture : L'exécution de l'ensemble de base exécute chaque instruction du module au moins une fois.
  • ⚠️ Limite connue : Il ne peut pas détecter les exigences manquantes, car il ne teste que le code déjà existant.

Test de chemin de base

Qu’est-ce que le test de chemin dans les tests logiciels ?

Le test de chemin est une méthode de test structurel qui consiste à utiliser le code source d'un programme afin de trouver tous les chemins exécutables possibles. Il permet de déterminer toutes les erreurs contenues dans un morceau de code. Cette méthode est conçue pour exécuter tout ou partie du chemin via un programme informatique.

Tout programme complexe comporte de nombreux chemins d'exécution possibles. Tester chacun d'eux est à la fois difficile et chronophage, et la plupart se chevauchent. Le test des chemins de base réduit cette redondance en identifiant le plus petit ensemble de chemins qui exécute chaque instruction et chaque branche au moins une fois.

Tests de chemin de base en génie logiciel

Test du chemin de base en génie logiciel est un Blanc Box Tests méthode dans laquelle les cas de test sont définis en fonction de flux ou de chemins logiques qui peuvent être empruntés à travers le programme. L'objectif des tests de chemin de base est de définir le nombre de chemins indépendants, de sorte que le nombre de cas de test nécessaires puisse être défini explicitement pour maximiser la couverture des tests.

In génie logicielLes tests de chemin de base impliquent l'exécution de tous les blocs possibles dans un programme et permettent d'obtenir une couverture de chemin maximale avec le moins de cas de test. Il s'agit d'une méthode hybride de tests de branche et de méthodes de test de chemin.

Un exemple simple permet de concrétiser l'idée.

Tests de chemin de base en génie logiciel

Le diagramme de flux ci-dessus contient des instructions conditionnelles ; le contrôle peut donc atteindre la sortie par plusieurs chemins. Trois chemins indépendants sont nécessaires pour la parcourir :

  • chemin 1: 1,2,3,5,6, 7
  • chemin 2: 1,2,4,5,6, 7
  • chemin 3: 1, 6, 7

Comment dessiner un graphe de flux de contrôle

Chaque étape du test du chemin de base dépend du graphe de flux de contrôle ; il est donc important d'être précis sur la manière dont il est construit.

  • Nœud: Une séquence d'instructions qui s'exécutent toujours ensemble est représentée par un cercle. Une suite d'instructions sans branchement se réduit à un seul nœud.
  • Bord: Un transfert de contrôle d'un nœud à l'autre, représenté par une flèche. Les arêtes sont le seul moyen de transmission du contrôle.
  • Nœud de prédicat : Un nœud contenant une condition, auquel s'ajoutent au moins deux arêtes. Ces éléments déterminent le niveau de complexité.
  • Région: Une zone délimitée par des arêtes et des nœuds. Le nombre de régions plus une est également égal à la complexité cyclomatique.

Prenons l'exemple d'un court module comportant deux décisions :

if (a > b) {          // node 1, predicate
    max = a;          // node 2
} else {
    max = b;          // node 3
}
if (max > limit) {    // node 4, predicate
    alert();          // node 5
}
return max;           // node 6

Le graphe possède 6 nœuds et 6 arêtes, ce qui donne V(G) = 6 – 6 + 2 = 2 d'après la formule des arêtes. Le dénombrement des prédicats donne le même résultat plus rapidement : 2 décisions plus 1 équivalent à 3 chemins indépendants à travers les deux branches prises ensemble. Utilisez la méthode de calcul la plus fiable et vérifiez votre résultat avec l'autre.

Deux règles qui permettent d'éviter la plupart des erreurs. Premièrement, une affection complexe telle que si (x > 0 && y > 0) Cela compte comme deux nœuds de prédicat, et non un seul, car le court-circuit crée une seconde décision. De plus, une boucle contribue à un nœud de prédicat, quel que soit le nombre d'itérations.

Étapes du test du chemin de base

Les étapes de base impliquées dans les tests de chemin de base comprennent

  • Dessinez un graphique de contrôle (pour déterminer différents chemins de programme)
  • Calculer le Complexité cyclomatique (métriques pour déterminer le nombre de chemins indépendants)
  • Trouver un ensemble de chemins de base
  • « Générer » cas de test pour exercer chaque chemin

Avantages et limites des tests de chemin de base

Avantages des tests de chemin de base

  • Cela aide à réduire les tests redondants
  • Il concentre l'attention sur la logique du programme
  • Elle remplace la sélection arbitraire des cas de test par une base analytique
  • Les cas de test qui exercent un ensemble de bases exécuteront chaque instruction d'un programme au moins une fois.

Limites des tests de chemin de base

  • Il est impossible de trouver le code manquant. Une exigence jamais implémentée n'a pas de chemin d'accès, donc aucun test ne sera généré pour elle. Les tests de chemin d'accès de base doivent être associés aux tests basés sur les exigences.
  • Le nombre de chemins augmente rapidement. Les boucles imbriquées et les conditions composées augmentent rapidement la complexité, et un module avec V(G) supérieur à 20 devient difficile à couvrir de cette manière.
  • La couverture n'est pas synonyme d'exactitude. L'exécution d'un chemin d'exécution prouve que le code s'exécute, mais pas qu'il produit la bonne réponse. Chaque test nécessite toujours une assertion pertinente.
  • Chemins dépendants des données. Certains chemins ne sont accessibles qu'avec des combinaisons d'entrées spécifiques qui peuvent être difficiles, voire impossibles, à construire.

FAQ

Les tests de chemin visent à exécuter tous les chemins possibles, ce qui est irréalisable dans un module contenant des boucles. Les tests de chemin de base n'exécutent que les chemins indépendants, un ensemble beaucoup plus restreint qui couvre néanmoins chaque instruction et branche.

Il s'agit précisément de la complexité cyclomatique du module. Si V(G) vaut 4, alors il existe 4 chemins indépendants et 4 cas de test sont nécessaires pour une couverture complète des branches.

Non. Cela ne fait que tester le code existant ; une exigence jamais implémentée ne génère donc aucun chemin d’exécution ni aucun test en échec. Les deux techniques sont complémentaires.

Les outils d'IA génèrent des valeurs d'entrée qui atteignent des branches spécifiques, ce qui représente la partie manuelle la plus lente du travail. Ils signalent également les chemins inaccessibles, indiquant du code mort.

Oui. Les outils d'analyse statique génèrent depuis des années des graphes de flux de contrôle et des figures de complexité, et les outils assistés par l'IA ajoutent désormais des suggestions d'entrées de test pour chaque chemin indépendant.

Résumez cet article avec :