250 likes | 378 Views
Tests et Validation du logiciel. 02/2007 – 06/2007. Tests aux limites. Constat : les bugs se cachent dans les coins ! Un aspect des méthodes fonctionnelles les plus efficaces. Qu’est ce qu’une limite ? Valeurs très élevée, nulle,… Valeurs des bornes d’une boucle Données non valides ….
E N D
Tests et Validation du logiciel 02/2007 – 06/2007
Tests aux limites • Constat : les bugs se cachent dans les coins ! • Un aspect des méthodes fonctionnelles les plus efficaces. • Qu’est ce qu’une limite ? • Valeurs très élevée, nulle,… • Valeurs des bornes d’une boucle • Données non valides • …
Tests aux limites • Identification des intervalles de variation des données pour en déduire des jeux de tests qui solliciteront le composant logiciel avec des valeurs choisies juste à l’intérieur et juste à l’extérieur des bornes de ces domaines. • Remarque : Souvent utilisée avec la technique de partitionnement : les valeurs aux limites peuvent être des valeurs aux frontières des partitions
Tests aux limites • Variable dans un intervalle de valeurs [a,b] : • a, b, a +/- Δ, b +/- Δ (Δ : plus petite variation possible) • Variable dans un ensemble de valeurs {a1, a2, …/… , an} : • a1, a2, an-1, an
Tests aux limites • Cas général : pour un paramètre appartenant à un interval, génération de 6 DT • Exemple P appartient à [0 – 100]. • Liste des DTs : -1, 0, 1, 99, 100, 101
Tests aux limites • Exemples de bugs aux limites ? • Table de base vide, Fichier absent • Oublie du traitement du premier ou du dernier record d’un fichier • Dépassement de tableau • Dépassement de capacité d’une variable typée
Tests aux limites - Exemple • Un programme de classification de triangles prend en entrée un triplet de réels (a,b,c) correspondants aux longueurs des 3 côtés d’un triangle. Le programme doit préciser la nature du triangle (équilatéral, isocèle, scalène, impossible) • Donner des exemples de valeurs aux limites.
Tests aux limites - Exemple • (0,0,0) un point, voire rien… • (0.1,0.1,0.1) un petit triangle, • (1,1,2) un segment, • (1,1,1.999) un triangle bien plat, • (4,0,3) une des longueurs est nulle • (4,4,4.000001) presque équilatéral
Tests aux limites - Exemple • Fonction faisant une recherche dichotomique dans un tableau (trié)
Tests aux limites - Exemple • Fonction faisant une recherche dichotomique dans un tableau (trié) • Exemple DT avec limite
Partitionnelle - Limite • L’analyse partitionnelle est une méthode qui vise à diminuer le nombre de cas de tests par calcul de classes d’équivalence • Le choix de conditions d’entrée aux limites est une heuristique solide de choix de données d’entrée au sein des classes d’équivalence • Le test aux limites produit à la fois des cas de test nominaux (dans l’intervalle) et de robustesse (hors intervalle)
Tests Combinatoires • Les combinaisons de valeurs de domaines d’entrée donne lieu a explosion combinatoire. • Exemple : Options d’une boite de dialogue MS Word. • 21^2* 3 = 12 288 combinaisons
Tests Combinatoires – Approche PairWise • Tester un fragment des combinaisons de valeurs qui garantissent que chaque combinaison de 2 variables est testé • Idée sous-jacente : la majorité des fautes sont détectées par des combinaisons de 2 valeurs de variables • Exemple : 4 variables avec 3 valeurs possibles chacune • 81 combinaisons • 9 paires
Tests Combinatoires – Approche PairWise • L’approche Pairwisese décline avec des triplets, des quadruplets, …. mais le nombre de tests augmente très vite • http://www.pairwise.org/default.html • Problème du Pairwise: • Le choix de la combinaison de valeurs n’est peut-être pas celle qui détecte le bug … • Le résultat attendu de chaque test doit être fournis manuellement
Tests Combinatoires – Approche PairWise • Exemple adapté : classe d’équivalences • Nombre de paramètres : 3 CE • Nombre de caractères du nom : 2 CE • Borne inférieure précédée par «=»: 2 CE • Borne supérieure précédée par «To»: 2 CE • Borne inférieure entier positive : 4 CE • Borne supérieure entier positive : 4 CE • 384 combinaison
Tests Combinatoires – Approche PairWise • Risque de passer à coté du bug • Possibilité de préciser le modèle de génération des fichiers de test • Exemple : Microsoft PICT
Tests syntaxiques • Permet de définir les DT à partir d’une description formelle des données d’entrée. • Approche adaptée aux applications qui nécessitent de données d’entrée respectant une syntaxe rigide et bien définie.
Approche fonctionnelle Tests syntaxiques • 3 phases : • Définir la grammaire • Construire l’arbre de dérivation de la grammaire • Construire les DTs
Approche fonctionnelle Tests syntaxiques • Première phase : Définition de la grammaire • Exemple : Programme « ZipFic » respectant la grammaire d’appelle suivante : • <commande> :== <Sources> <Fic Zip> <Supp source> • <Sources> :== <fichiers> | <Répertoires> • <Fichiers> :== 1 à N <Fichier> séparés par « , » • <Répertoires> :== 1 à N <Répertoire> séparés par « , » • <Supp source> :== O | N « :== » signifie « est composé par ». Le « | » représente un « ou » logique.
Approche fonctionnelle Tests syntaxiques • Seconde phase : Construire l’arbre de dérivation complet de la grammaire. • Les nœuds terminaux sont ceux n’admettant pas d’autres sous branches vers le bas. • Les nœuds non terminaux sont ceux qui se décomposent en sous branches
Approche fonctionnelle Tests syntaxiques 1 <Commande> 4 <Supp Source> 2 <Sources> 3 <Fic Zip> 5 <Fichiers> 6 <Repertoires> 8 N OU 7 O OU 9 <Fichier> 10 ,<Fichier> 12 ,<Repertoire> 11 <Repertoire>
Approche fonctionnelle Tests syntaxiques • Troisième phase : Définir les DTs • Commandes valides: • Couvrir tous les nœuds non-terminaux • FIC1 FIC_ZIP O • REP1 FIC_ZIP2 O • Couvrir tous les nœud terminaux au moins une fois • FIC1,FIC2 FIC_ZIP N • REP1,REP2 FIC_ZIP N
Approche fonctionnelle Tests syntaxiques • Commandes invalides : • Nombre non défini • Erreurs par niveaux • Omission de nœuds à chaque niveau • FIC_ZIP O • REP1 N • FIC1,FIC2 FIC_ZIP • Syntaxe des nœuds terminaux • FIC1, REP1 FIC_ZIP • FIC1 FIC_ZIP Z • …