Tests et Validation du logiciel 02/2007 – 06/2007
Approche fonctionnelle – Tests aléatoires Différents des autres techniques « déterministes » Tests aléatoires approche probabiliste Génération des DT assez facilement automatisable Problématique d’automatisation de l’oracle
Approche fonctionnelle – Tests aléatoires Objectivité des DTs produites Quasi impossibilité de générer des ensembles de paramètres cohérents sur des programmes de taille industriel Selon « Le test des logiciels » Hermes, des études ont montrés que les tests aléatoires sont à peine moins performants que les approches déterministes p104L1
Approche fonctionnelle – Tests aléatoires
Approche fonctionnelle Couverture du graphe fonctionnel Réalisation de graphe dans des perspectives de tests Modélisation du comportement du logiciel sous forme d’automate Sommet = un état du logiciel (émission d’un message d’erreur, lecture d’un fichier, attente utilisateur, …) Arc = changement d’état
Approche fonctionnelle Couverture du graphe fonctionnel Menu1 Msg1 Menu 2 Msg2 Msg3 Fin Msg4 Choix 1 Choix 2 A C Erreur La modélisation doit faciliter la conception du test Critères de couvertures Tous les nœuds Tous les arcs Tous les chemins Technique utile pour les tests IHM, mais modélisation vite complexe
Approche fonctionnelle Graphes cause-effet Concept de G. J. Myers Relie les effets d’un programme (sorties) aux causes (causes) Analyse minutieuse des spécifications du programme
Approche fonctionnelle Graphes cause-effet Quatre types de symboles : Identité Négation OU logique ET logique
Approche fonctionnelle Graphes cause-effet Construction d’un graphe cause-effet : Spécifications : « Le caractère dans la colonne 1 doit être un « A » ou un « B ». La colonne 2 doit contenir un chiffre. Ces deux conditions signifient que le fichier est à jour. Si la première colonne est fausse, on affiche le message M1. Si la seconde colonne est fausse, on affiche le message M2.
Approche fonctionnelle Graphes cause-effet Synthèse de causes (Entrées) E1 : le caractère de la colonne 1 est « A » E2 : le caractère de la colonne 1 est « B » E3 : le caractère de la colonne 2 est un chiffre Synthèse des effets (Sorties) S1 : Fichier à jour S2 : Message M1 S3 : Message M2
Approche fonctionnelle Graphes cause-effet
Approche fonctionnelle Graphes cause-effet Table de vérité Doit contenir l’ensemble des combinaisons des causes possibles. Donc ici 8 possibilités Le remplissage s’effectue en trouvant les effets à 1 DT Causes Effets E1 E2 E3 S1 S2 S3 1 2 3 4 5 6 7 8 Cas impossibles vu les spécifications
Approche fonctionnelle Graphes cause-effet Constats 2 DT pour tester le fichier à jour 2 DT pour tester le message M1 3 DT pour tester le message M2 DT Causes Effets E1 E2 E3 S1 S2 S3 1 2 3 4 5 6 7 8
Approche fonctionnelle Graphes cause-effet Problème des états intermédiaires C1 B3 B2 A1 B1 A3 A2 C1 dépend de B2, B3 mais aussi de A1, A2 et A3. Le nombre de DT augmente de façon importante
Approche fonctionnelle Graphes cause-effet Règles de simplification Forme Disjonctive (OU) R1 : si x doit être à 1, ne pas prendre la situation ou A=B=1 R2 : si x doit être à 0, énumérer toutes les situations ou A=B=0 X B A
Approche fonctionnelle Graphes cause-effet Règles de simplification Forme Conjonctive (ET) R3 : si x doit être à 1, énumérer toutes les situations ou A=B=1 R4 : si x doit être à 0, R4.1 Inclure une seule situation ou A=B=0 R4.2 Pour les autres combinaisons (avec un paramètre à 1), choisir une seule échantillon de causes générant cette valeur à 1. X B A
Approche fonctionnelle Graphes cause-effet Pour chaque combinaison, il faut prévoir toutes les valeurs de A1, A2, A3, A4 les produisant. Exemple A1 A2 B1 1 c1 b2 a1 b1 a2 a3 a4 B1 B2 C1 Nb DT 1*3=3 1 1*1=1 3*3=9 3*1=3 A3 A4 B2 1 Avant simplification : 13 DTs pour C1=0 3 DTs pour C1=1
Approche fonctionnelle Graphes cause-effet B1 1 B1 B2 C1 1 R1 A3 A4 B2 1
Approche fonctionnelle Graphes cause-effet B1 1 Cas 1 : C1=1 R3 B1=1 {A1,A2}={0,1}{1,0}. R1 exlus {1,1} B2=1 {A3,A4}={1,1} DT={0,1,1,1}{1,0,1,1} B1 B2 C1 1 R1 A3 A4 B2 1
Approche fonctionnelle Graphes cause-effet B1 1 Cas 2 : C1=0 R4.1 Une seule situation ou B1=B2=0 DT={0,0,0,0} B1 B2 C1 1 R1 A3 A4 B2 1
Approche fonctionnelle Graphes cause-effet B1 1 Cas 3 : C1=0 R4.2 Cas 3.1 {0,1} DT={0,0,1,1} Cas 3.2 {1,0} R4.2 : un seul échantillon générant le B1=1 DT={1,0} B2=0 DT={0,0},{0,1}{1,0} DTs={1,0,0,0}{1,0,0,1}{1,0,1,0} B1 B2 C1 1 R1 A3 A4 B2 1
Approche fonctionnelle Graphes cause-effet Avant simplification Après simplification a1 A2 a3 a4 c1 1 a1 A2 a3 a4 c1 1