1 / 24

Tests et Validation du logiciel

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 ….

mickey
Download Presentation

Tests et Validation du logiciel

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tests et Validation du logiciel 02/2007 – 06/2007

  2. 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 • …

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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.

  8. 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

  9. Tests aux limites - Exemple • Fonction faisant une recherche dichotomique dans un tableau (trié)

  10. Tests aux limites - Exemple • Fonction faisant une recherche dichotomique dans un tableau (trié) • Exemple DT avec limite

  11. 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)

  12. 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

  13. 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

  14. 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

  15. 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

  16. Tests Combinatoires – Approche PairWise

  17. 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

  18. 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.

  19. Approche fonctionnelle Tests syntaxiques • 3 phases : • Définir la grammaire • Construire l’arbre de dérivation de la grammaire • Construire les DTs

  20. 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.

  21. 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

  22. 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>

  23. 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

  24. 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 • …

More Related