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 :