Tests Logiciels PDF
Document Details
Uploaded by RightPeridot8225
ISSOUFOU NIKIEMA
Tags
Summary
This presentation covers software testing topics, including testing methodologies, techniques, and concepts. It details the principles of white-box and black-box testing.
Full Transcript
INF4000 Génie Logiciel Tests Logiciels ISSOUFOU NIKIEM A Tests Logiciels INF4000-GL (UVBF/GL/DI/PD) 2 I. NIKIEMA Plan Introduction Tests Boite Blanche Tests Boite Noire...
INF4000 Génie Logiciel Tests Logiciels ISSOUFOU NIKIEM A Tests Logiciels INF4000-GL (UVBF/GL/DI/PD) 2 I. NIKIEMA Plan Introduction Tests Boite Blanche Tests Boite Noire 3 3 Tests Logiciels : Tests Boite Blanche 4 4 Tests Boite Tests boite blanche ouBlanche tests structurels Tests basés sur la structure interne du code ◦Nécessitent de connaître le code ◦détectent principalement les erreurs commises Plusieurs techniques ◦ Couverture du flot de contrôle ◦ Couverture du flot des données ◦ Test par mutation 5 5 Couverture du Flot de Contrôle Graphe de Flot de Contrôle Un graphe de flot de contrôle (Control Flow Graph –CFG) est une représentation sous forme de graphe orienté de tous les chemins xy possibles dans un programme xy x=y Les nœuds sont des blocs d’instructions séquentielles 7 7 Graphe de Flot de Contrôle Les arêtes (encore appelées arcs ou branches) sont des transferts de contrôle xy Les arêtes peuvent être étiquetées avec un attribut représentant la condition du transfert xy x= de contrôle y Chaque graphe comporte un nœud « entrée » et un nœud « sortie » 8 8 Graphe de Flot de Contrôle Public int x, int y) computeGCD(int Int gcd { while (x!=y){ if (x>y){ x!=y x= x – y; }else{ xy x=y y = y – x; } } gcd = x; return gcd; } 9 9 Principes du CFG Séquence Si-Alors-Sinon Boucle tant que Commutateur (If-Then-Else) (While loop) (Switch) 10 10 Principes du CFG Ammann & Offutt 11 11 Principes du CFG Ammann & Offutt 12 12 Principes du CFG Ammann & Offutt 13 13 Principes du CFG Ammann & Offutt 14 14 Principes du CFG 15 15 Principes du CFG Ammann & Offutt 16 16 Principes du CFG Ammann & Offutt 17 17 Principes du CFG Ammann & Offutt 18 18 Principes du CFGle graphe de contrôle Construire de la fonction suivante 1.public int factorial(int n){ 2. int i, result = 1; 3. for (i=2; i x=y-1; 0 y< }e =0 f 22 22 Chemin de Contrôle Chaque exécution correspond à un chemin de contrôle a dans le graphe de contrôle y< If (y 0){ b ◦Attention, tout chemin n'est pas 0 x=y+1; } exécutable c If (y>0) 1. Pour chaque chemin dire s’il est exécutable ou non d { y> x=y-1; 2. Trouver des données de test permettant 0 y< }e d’exécuter chaque chemin de contrôle =0 exécutable f 23 23 Critère de Un critère est unCouverture ensemble de règles définies sous certaines hypothèses et qui décrivent les propriétés qu'un jeu de tests doit satisfaire La couverture de code est une mesure utilisée en génie logiciel pour décrire le taux de code source testé d'un programme ◦ Mesure la qualité des tests effectués 24 24 Critère de Couverture Il existe de nombreux critères de couvertures Exemples de critères de couverture 1.Couverture des fonctions (Function Coverage) - Chaque fonction dans le programme a-t-elle été appelée ? 2.Couverture des instructions (Statement Coverage) - Chaque ligne du code a-t-elle été exécutée et vérifiée ? 25 25 Critère de Couverture Il existe de nombreux critères de couvertures Exemples de critères de couverture 3.Couverture des points de tests (Condition Coverage) - Chaque point de décision a-t-il été exécuté et vérifié ? (Le point de test teste-t-il ce qu'il faut ?) 4.Couverture des chemins d'exécution (Path Coverage) - Chaque chemin d’excution possible a-t-il été exécuté et vérifié ? 26 26 Couverture des Nœuds Exige de couvrir tous les nœuds dans le CFG (toutes les instructions du code) Important car il est impossible de découvrir des anomalies si les instructions les contenant ne sont pas exécutées Taux de couverture=|{nœuds couverts}| /|{nœuds}| 27 27 Couverture des Nœuds En pratique, plusieurs entrées (données de test) exécutent les mêmes instructions Pouvons-nous minimiser les cas de test à utiliser pour couvrir tous les nœuds? Incomplétude : Un taux de couverture de 100% des nœuds ne signifie pas la couverture de tous les cas 28 28 Couverture des Nœuds La couverture des instructions peut mener à l’incomplétude if (x < 0){ x = -x; } Un cas x < 0 couvre toutes les instructions. z = 1/x; --------------- Mais le cas x >= 0 n’est pas pris en compte. Le code if (x < 0){ implicite (en italique et rouge) n’est pas couvert x = -x; }else Ne rien faire pour le cas x >= 0 peut s’avérer faux, voire null; dangereux et devrait être testé z = 1/x; 29 29 Couverture des Arêtes Exige de visiter au moins une fois toutes les arêtes du graphe de flot de contrôle ◦ Exercer toutes les conditions qui gouvernent le flot de contrôle du programme avec des valeurs vraies et fausses Taux de couverture=|{Arêtes couvertes}| /|{Arêtes}| 30 30 Exercice int puissance(int X, int N) { int S = 1; Construire le graphe de contrôle de int P = N; la fonction ci- contre while(P >= 1) { Donner un jeu de test pour couvrir if( tous les nœuds P mo Donner un jeu de test pour couvrir d2 != toutes les branches (arêtes ou arcs) 0) { P = P - 1; S = S * X; } 3 31 1 S = S * S; P = P/2; } Couverture des Conditions if (c1) if (c2) if (c1 && st c2) st; ; else els sf; e s f; e Comparer ces deux bouts l de code? s 32 32 e s f ; Couverture des Conditions if (c1 && if (c1) c2) st; if else (c2) sf; st; else sf; e l Deux programmes équivalents s ◦Lequel écririez vous? e s Couverture des arêtes f ◦ne couvrirait pas obligatoirement les; arêtes “masquées”, ◦ex.: C2 = false peut ne pas être couvert La couverture des conditions peut le faire 33 33 Couverture des Conditions Exige que chaque condition atomique (condition ne contenant aucun opérateur logique) soit évaluée à Vrai et Faux Quelles conditions atomiques du code ont été évaluées "vraies" ET "fausses" ? La couverture des conditions n’implique pas la couverture de toutes les arêtes If( a || b) // instr a=T, else // b=F instr 34 a=F, 34 b=T Couverture des Chemins Exige que chaque chemin de contrôle (conduisant du nœud initial au nœud final) du graphe de flot de contrôle soit traversé En pratique, le nombre de chemins est trop grand, sinon infini Certains chemins sont infaisables Important pour déterminer les “chemins critiques » 35 35 Couverture des if (x!= 0)chemins Construire le graphe de contrôle de y = 5; la fonction ci- contre else Donner une jeu de test z = z – x; pour couvrir toutes les if (z > 1) arêtes z = z / x; else Donner un jeu de test pour z = 0; couvrir tous les chemins de contrôle Quel est le problème avec ce code? 36 36 Couverture des Chemins T1 = {, } if (x!= 0) exécute toutes les arêtes mais ne montre y = 5; pas un risque de division par 0 else z = z – x; T2 = {, } trouverait le problème en exerçant les flots de contrôle if (z > 1) restants possibles à travers le fragment du programme z = z / x; else z = 0; T1 T2 -> tous les chemins couverts 37 37 Couverture des Chemins Cas Chercher les conditions desles boucles qui exécutent boucles : ◦zéro fois, ◦un nombre maximum de fois, ◦un nombre moyen de fois (critère statistique) Par exemple, dans un algorithme de recherched’un élément dans une table, on peut : ◦sauter une boucle (la table est vide), ◦exécuter la boucle une ou deux fois et par la suite trouver l’élément, ◦chercher dans toute la table sans trouver l’élément désiré. 38 38 Autres Critères de Couverture Couverture des Conditions/Décisions : exige que chaque arête du flot de contrôle soit traversée et chaque condition atomique évaluée à Vrai et Faux Couverture modifiée des conditions/décisions (MC/DC) : vérifie que chaque condition atomique d’une décision ait un impact sur la décision 39 39 Autres Critères de Couverture Couverture des Conditions Multiples (CCM) : exige que chaque combinaison de valeurs booléennes possibles pour les conditions atomiques soient évaluées en plus du critère de couverture de conditions 40 40 Couverture du CFG en Pratique Il arrive, dans les programmes du monde réel, que certaines instructions ne soient pas atteignables Il n’est pas toujours possible de décider automatiquement si une instruction est atteignable, ni même le pourcentage des instructions atteignables Quand on n’atteint pas une couverture de 100%, il est parfois très diffi cile d’en déterminer la raison 41 41 Couverture du CFG en Pratique Des outils sont nécessaires pour supporter cette activité La recherche est très active afin de proposer des algorithmes efficaces pour dériver automatiquement des jeux de tests présentant des bons niveaux de couverture Le test de flot de contrôle est, en général, plus adapté pour tester les petits cas 42 42 Références Références Ce cours est basé sur le cours Méthodes de test et validation du Logiciel du Pr. Antoniol Giuliano de l’Ecole Polytechnique de Montréal INF4000-GL (UVBF/GL/DI/PD) 7 I. NIKIEMA 4