Upload
mickey
View
38
Download
0
Embed Size (px)
DESCRIPTION
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 …. - PowerPoint PPT Presentation
Citation preview
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 boucleDonné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 DTExemple 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 absentOublie du traitement du premier ou du
dernier record d’un fichierDépassement de tableauDé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
Tableau Elément Table CléSortie(trouv, A)
1 seule valeur Dans le tableau [17] 17 (true, 0)
1 seule valeur Pas dans le tableau [17] 27 (false, ???)
Plus d’une valeur 1er élément dans le tableau [3,17,33,42,58] 3 (true, 0)
Plus d’une valeur dernier élément dans le tableau [3,17,33,42,58] 58 (true, 4)
Plus d’une valeur médian dans le tableau [3,17,33,42,58] 33 (true, 2)
Plus d’une valeur non présent dans le tableau [3,17,33,42,58] 1 (false, ???)
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’équivalencesNombre de paramètres : 3 CENombre de caractères du nom : 2 CE Borne inférieure précédée par «=»: 2 CEBorne supérieure précédée par «To»: 2 CEBorne inférieure entier positive : 4 CEBorne supérieure entier positive : 4 CE
384 combinaison
Tests Combinatoires – Approche PairWise
No
mb
re d
e p
ara
mè
tres
No
mb
re d
e c
ara
ctè
res
du
no
m
Bo
rne
infé
rieu
re p
réc
éd
ée
pa
r «=
»
Bo
rne
su
pé
rieu
re p
réc
éd
ée
pa
r «T
o»
Bo
rne
infé
rieu
re e
ntie
r po
sitiv
e
Bo
rne
su
pé
rieu
re e
ntie
r po
sitiv
e
0 2 non oui 5 -10.5 for 5 to -10.5
0 3 oui non 50 5 for =50 5
2 2 oui oui -10.5 5 for ii,jj =-10.5 to 5
1 3 non non 5 50 for AAA 5 50
1 3 oui non -10.5 -10.5 for AAA =-10.5 -10.5
2 3 non oui -10 5 for AAA, BBB -10 TO 5
1 2 oui non 5 5 for AA=-10 -10.5
2 2 oui non -10 -10.5 for AA,BB=-10 -10.5
1 2 non oui 50 -10 for AA 50 TO -10
2 2 oui oui 50 50 for AA,BB=5 TO 50
2 3 oui non 5 -10 for AAA,BBB=5 -10
0 2 non non -10.5 -10 for -10.5 -10
0 2 oui non -10.5 50 for =-10.5 50
2 3 oui non 50 -10.5 for AAA,BBB=5 -10.5
1 3 oui oui -10 -10 for AAA=-10 to -10
0 2 oui non -10 50 for =-10 50
Tests Combinatoires – Approche PairWise
Risque de passer à coté du bugPossibilité de préciser le modèle de
génération des fichiers de testExemple : 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 grammaireConstruire l’arbre de dérivation de la
grammaireConstruire 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>
2<Sources>
3<Fic Zip>
4<Supp Source>
5<Fichiers>OU
6<Repertoires> 7
O8N
OU
9<Fichier>
11<Repertoire>
10,<Fichier>
12,<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 …