I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel



Documents pareils
Quatrième partie IV. Test. Test 15 février / 71

Cours d algorithmique pour la classe de 2nde

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Programmation par contraintes. Laurent Beaudou

Test de logiciel dans les méthodes agiles

Qualité du logiciel: Méthodes de test

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

STAGE IREM 0- Premiers pas en Python

Représentation d un entier en base b

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

6. Les différents types de démonstrations

Chapitre 2 Le problème de l unicité des solutions

Initiation à la programmation en Python

Cours d Analyse. Fonctions de plusieurs variables

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

BACCALAUREAT GENERAL MATHÉMATIQUES

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

MIS 102 Initiation à l Informatique

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R.

Limites finies en un point

Résolution de systèmes linéaires par des méthodes directes

DOCM Solutions officielles = n 2 10.

Licence Sciences et Technologies Examen janvier 2010

Qu est-ce qu une probabilité?

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Université Paris-Dauphine DUMI2E 1ère année, Applications

Correction du baccalauréat ES/L Métropole 20 juin 2014

Compilation (INF 564)

CONJUGUÉ D'UN POINT PAR RAPPORT À UN TRIANGLE

Recherche dans un tableau

TP 1. Prise en main du langage Python

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Bruno Legeard Fabrice Bouquet Laboratoire d Informatique de l Université de Franche-Comté

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Les structures de données. Rajae El Ouazzani

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Examen Médian - 1 heure 30

Problèmes de Mathématiques Filtres et ultrafiltres

Correction : E = Soit E = -1,6. F = 12 Soit F = y = 11. et G = -2z + 4y G = 2 6 = 3 G = G =

1S Modèles de rédaction Enoncés

Algorithmique et Programmation, IMA

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Initiation à l algorithmique

Quelques Algorithmes simples

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Les droites (d 1 ) et (d 2 ) sont sécantes en A Le point A est le point d intersection des 2 droites

2.4 Représentation graphique, tableau de Karnaugh

Angles orientés et trigonométrie

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Pourquoi l apprentissage?

Vérification et Validation

Les chaînes de caractères

Corrigé des TD 1 à 5

Peut-on imiter le hasard?

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

Formula Negator, Outil de négation de formule.

Équations non linéaires

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Logiciel Libre Cours 3 Fondements: Génie Logiciel

3 Approximation de solutions d équations

5 ème Chapitre 4 Triangles


données en connaissance et en actions?

Algorithmique et programmation : les bases (VBA) Corrigé

CHAPITRE 10. Jacobien, changement de coordonnées.

Conversion d un entier. Méthode par soustraction

Mathématiques I Section Architecture, EPFL

Algèbre binaire et Circuits logiques ( )

Machines virtuelles Cours 1 : Introduction

Programmation C++ (débutant)/instructions for, while et do...while

Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur

Notes du cours MTH1101 Calcul I Partie II: fonctions de plusieurs variables

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

CH.6 Propriétés des langages non contextuels

ACTIVITÉ DE PROGRAMMATION

1. Structure d'un programme FORTRAN 95

Introduction à la théorie des graphes. Solutions des exercices

Baccalauréat S Nombres complexes Index des exercices sur les complexes de septembre 1999 à juin 2012 Tapuscrit : DENIS VERGÈS

Exercices - Nombres complexes : corrigé. Formes algébriques et trigonométriques, module et argument

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

CONCOURS D ENTREE A L ECOLE DE 2007 CONCOURS EXTERNE. Cinquième épreuve d admissibilité STATISTIQUE. (durée : cinq heures)

Chapitre 10 Arithmétique réelle

L informatique en BCPST

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Chapitre 6. Fonction réelle d une variable réelle

Rappels et compléments, première partie : Nombres complexes et applications à la géométrie

Du Premier au Second Degré

Évaluation et implémentation des langages

Fonctions de deux variables. Mai 2011

Transcription:

I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel

Introduction Notre contexte : pas possible d exprimer toutes les combinaisons de DT. Le test fonctionnel est basé sur la spécification/interface du programme : il n examine pas le programme, mais son comportement. Chaque technique de test fonctionnel fournit une méthode avec un critère de sélection/production des DT (à partir des spécifications) : 1. Analyse partitionnelle 2. Test aux limites 3. Graphe Cause-Effet 4. Test syntaxique 5. Etc 116

Analyse partitionnelle : un exemple Élaboration d un logiciel de traitement des notes du BAC On distingue les différents profils de lycéens, On suppose que si le calcul est bon pour un lycéen A avec un certain profil, il sera exact pour tout lycéen B de même profil Exemple de profil : lycéen redoublant sa terminale ES option math, ne repassant pas l épreuve anticipée de Français, mais repassant l épreuve anticipée SVT. Problème : comment construire ces différentes classes? domaine des valeurs d entrées 117

Analyse partitionnelle Un programme P traite des données en entrée : P : D R On partitionne D en différentes classes D i telles que : 1. D= D 0 U D 1 U / U D N 2. D i D j = si i j 3. On sélectionne un seul cas de test par classe D i Hypothèse de test : i [1,N], d,d D i : P(d) correct P(d )correct 118

Analyse partitionnelle : exercices Soit les spécifications suivantes : 1 - «Si la valeur n est négative : un message d erreur est affichée. Si n est dans [1,20[ on affiche la valeur exacte de Factoriel(n). Si n est dans [20,200] on affiche une approximation de Factoriel(n) en virgule flottante avec une précision de 0,1%. Si n>200 un message d erreur est affichée.» 2 - «Écrire un programme qui calcule F(x)=(1/x) 1/2» 3 - «L instruction FOR n accepte qu un seul paramètre en tant que variable auxiliaire. Son nom ne doit pas dépasser 2 caractères non blancs. Une borne supérieure et une borne inférieure doivent être précisées: la borne inférieure est précédée du mot-clé = et la borne supérieure est précédée par le mot-clé TO. Les bornes sont des entiers positifs.» On se propose de tester des programmes correspondants à ces spécifications : donner un jeu de test associé à chaque spécification. 119

Analyse partitionnelle : exercices/solutions 1 - «Si la valeur n est négative : un message d erreur est affichée. Si n est dans [1,20[ on affiche la valeur exacte de Factoriel(n). Si n est dans [20,200] on affiche une approximation de Factoriel(n) en virgule flottante avec une précision de 0,1%. Si n>200 un message d erreur est affichée.» 5 classes : entiers négatifs ; {0} ; [1,20[ ; [20,200] ; entiers supérieurs à 200. 2 - «Écrire un programme qui calcule F(x)=(1/x) 1/2» 3 classes : réels négatifs, {0}, réels positifs 3 - «L instruction FOR n accepte qu un seul paramètre en tant que variable auxiliaire. Son nom ne doit pas dépasser 2 caractères non blancs. Une borne supérieure et une borne inférieure doivent être précisées: la borne inférieure est précédée du mot-clé = et la borne supérieure est précédée par le mot-clé TO. Les bornes sont des entiers positifs.» FOR A=1 TO 10 ; FOR A=10 TO 10 ; FOR AA=1 TO 10 ; FOR A=1,B=1 TO 10 ; FOR AAA=1 TO 10 ; FOR A=100 TO 10 ; FOR =1 TO 10 ; FOR A=1 TO 10 ; FOR A=1.5 TO 10 ; FOR A=1 TO 10.5 ; FOR A=1 TO ; Etc. 120

Test aux limites Constat : erreurs souvent dues au fait que le programmeur n avait pas prévu le comportement du logiciel pour des valeurs aux limites (aussi appelées valeurs de bord): Valeurs très grandes Valeur de boucle nulle, négative, maximale Données non valides Etc Remarque : Souvent utilisée avec la technique de partitionnement : les valeurs aux limites peuvent être des valeurs aux frontières des partitions Exemple de choix des valeurs de test. Variable dans un intervalle de valeurs [a,b] : a, b, a ± Δ, b ± Δ (Δ : plus petite variation possible) Variable dans un ensemble de valeurs ordonnées {a 1, a 2, a 3, /,a n } : a 1, a 2, a n-1, a n (premier, second, avant dernier, dernier) 121

Test aux limites : des exemples Une variable a dans le domaine [1,10] Valeurs à tester : 0,1,2,9,10,11 Deux variables a et b dans le domaine [1,10] 2 6x6=36 valeurs à tester : {0,1,2,9,10,11} 2 La notion de limite n est pas toujours évidente! Deux variables a et b dans le domaine [-10,10] 2 Rajouter les valeurs au voisinage de 0, les valeurs où a=b, etc. (selon son intuition en fonction de la spécification, conception ) 122

Test aux limites : Exercice 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. 123

Test syntaxique But : déterminer des DT à partir d une description formelle (sous forme BNF ou automate à états finis) des données Type d application visé : application nécessitant des données d entrée respectant une syntaxe (analyseur d expression, interpréteur, compilateur, etc.) Méthode : 1. Définir une grammaire 2. Construire l arbre de dérivation générique 3. Produire des DT en se basant sur l arbre de dérivation Couverture des nœuds Terminaux, des nœuds Non Terminaux Deux cas : 1. Entrées valides 2. Entrées non valides 125

Test syntaxique : exercice Interpréteur qui reconnaît des commandes du type : copy <fic1> to <fic2> rename <fic1> to <fic2> Où <fic1> et <fic2> sont des noms de fichiers formés sur une ou deux lettres prises dans l ensemble {a,b}. 1-Donner une grammaire 2-Donner un arbre de dérivation générique 3-Produire des DT 126

Test syntaxique : exercice (solution) 1-Une grammaire <commande>::=<nom_commande><nom_fichier>to<nom_fichier> <nom_commande>::=copy rename <nom_fichier>::= <lettre> <lettre><lettre> <lettre>::=a b 2-Un arbre de dérivation générique A faire 3-Des DT A faire 127

Graphes Cause-Effet Approche proposée par G.J Myers Méthode : proposer un graphe/réseau qui relie les effets du programme (sorties) aux causes (entrées) qui sont à leur origine. Syntaxe: Op::=And Or Nand Nor C1 C2 Op E1 C1 E1 C3 ~ E1 128

Graphes Cause-Effet : exercice P prend en entrée une longueur (entier entre 1 et 20), une chaîne de caractères de cette longueur, et un caractère. P retourne sa position dans la chaîne ou un message d erreur. Il est possible de cherche d autres caractères. Précises les causes et les effets Donner le graphe Cause-Effet En déduire des DT 129

Exercice Une procédure de classification de triangles reçoit en entrées 3 réels a, b et c qui sont les longueurs des côtés d'un triangle. La procédure retourne comme résultat 0 si le triangle défini par a, b et c est invalide, 1 si le triangle est équilatéral, 2 si le triangle est isocèle et 3 pour un triangle valide quelconque (ni isocèle, ni équilatéral). a) Proposez un partitionnement des données en entrée pour tester cette procédure. b) En déduire un jeu d'essai pour cette procédure. 131

Partie I : Le test. 3: Le test structurel

Statique / Dynamique Analyse dynamique : nécessite l exécution du code binaire Principe : à partir du code source et spécification, produire des DT qui exécuteront un ensemble de comportements, comparer les résultats avec ceux attendus 1. Techniques de couverture du graphe de contrôle a) Couverture du flot de contrôle b) Couverture du flot de données 2. Test mutationnel (test par injection de défaut) 3. Exécution abstraite 4. Test évolutionniste (algorithme génétique) 5. Analyse statique : ne nécessite pas l exécution du code binaire 1. Revue de code 2. Estimation de la complexité 3. Preuve formelle (prouveur, vérifieur ou model-checking) 4. Exécution symbolique 5. Interprétation abstraite 133

Test structurel dynamique avec technique de couverture du graphe de contrôle But: produire des DT qui exécuteront un ensemble de comportements du programme Utilise : spécification, code source et code exécutable a Un programme => un graphe de contrôle x<=0 x>0 begin if (x<=0)then x:=-x else x:=1-x; if (x=-1)then x:=1 else x:=x+1; end x:=-x x:=1 b x=-1 f d c x:=1-x x!=-1 e x:=x+1 Un sommet entrée (a) et un sommet sortie (g) Un sommet = un bloc d instructions Un arc = la possibilité de transfert de l exécution d un nœud à un autre g Writeln(x) Une exécution possible = un chemin de contrôle dans le graphe de contrôle [a,c,d,e,g] est un chemin de contrôle [b,d,f,g] n est pas un chemin de contrôle 134

Expression des chemins d un graphe de contrôle Soit M l ensemble des chemins de contrôle du graphe G : a M = abdfg+abdeg+acdfg+acdeg x<=0 x>0 = a.(bdf+bde+cdf+cde).g x:=-x b c x:=1-x = a.(b+c)d.(e+f).g (expression des chemins de G) d Construction de l expression des chemins : x=-1 x!=-1 séquentielle alternative répétitive x:=1 f e x:=x+1 a a a g Writeln(x) b c b G b d c d ab a.(b+c).d ab.(cb) *. d ab.(cb) 4.d 135

Chemin exécutable begin if (x<=0)then x:=-x else x:=1-x; if (x=-1)then x:=1 else x:=x+1; end x:=-x x<=0 b a d x>0 c x:=1-x DT1={x=2} DT1 sensibilise le chemin [acdfg] : [acdfg] est un chemin exécutable x:=1 x=-1 f x!=-1 e x:=x+1 [abdgf] est un chemin non exécutable : aucune DT capable de sensibiliser ce chemin Sensibiliser un chemin peut parfois être difficile : intérêt des outils automatiques (mais attention problème de trouver des DT qui sensibilise un chemin est non décidable) Existence de chemins non exécutables : signe de mauvais codage? g Writeln(x) 136

Chemin exécutable / chemin non exécutable Nombre de chemins de contrôle de G : se déduit directement de l expression des chemins de G a(b+c)d(e+f)g => 1.(1+1).1.(1+1).1 = 4 chemins de contrôle Nb chemins exécutables + Nb chemins non exécutables Parfois le Nb chemins non exécutables peut être important : begin s:=0; for i:=1 to 1000 do s:=s+a[i]; end a b s:=0 i:=1 i<=1000 i>1000 Expression des chemins de G2 : a.b.(cb) 1000.d c s:=s+a[i] i:=i+1 d Nombre de chemins : G2 1.1.(1.1) 1000.1 = 1 1000 = 1+1 1 +1 2 + +1 1000 =1001 Parmi ces 1001 chemins, un seul est exécutable: a.b.(cb) 1000.d 137

Exercice 1 lire(b,c,x); if b<c then begin d :=2*b ; f :=3*c if x>=0 then begin y := x ; e := c ; if (y=0) then begin a :=f-e ; if d<a then begin writeln(a) end else begin writeln (d) end end end end Donner le graphe de contrôle G(P3) associé au programme P3. Donner 3 chemins de contrôle du graphe G(P3). Donner l expression des chemins de contrôle de G(P3). Soit DT1={b=1,c=2,x=2}. Donner le chemin sensibilisé par DT1. On s intéresse aux instructions en italique Donner des DT qui vont couvrir ces instructions. Donner un chemin de contrôle non exécutable de G(P3). 138

Exercice 2 Lire(choix) if choix=1 then x=x+1 ; if choix=2 then x=x-1 ; writeln(choix ; 1. Donner le graphe de contrôle correspondant au programme P4. 2. Donner l expression des chemins de contrôle de G(P4). En déduire le nombre de chemins de contrôle. 3. Donner les chemins de contrôle non exécutables. Conclure. 4. Proposer une nouvelle solution pour ce programme. Construisez son graphe de contrôle et donner l expression des chemins de contrôle ainsi que le nombre de chemins de contrôle. 141

Exercice 3 1. Écrivez un algorithme de recherche de l emplacement d un élément e dans un tableau T (on suppose que T contient l élément e). 2. Donner le graphe de contrôle associé. 3. Donner l expression des chemins. 4. Dans le cas où le tableau a une taille de 3, donner le nombre de chemins de contrôle. 144

Satisfaction d un test structurel avec couverture Soit T un test structurel qui nécessite la couverture d un ensemble de chemins {δ 1,, δ k } du graphe de contrôle. On notera : T= {δ 1,, δ k } Soit DT une donnée de test qui sensibilise le chemin de contrôle C. Définition: DT satisfait T ssi C couvre tous les chemins de T. Exemple : considérons le graphe de contrôle G5 Soient δ 1 =cdebcde et δ 2 =ce et T1= {δ 1, δ 2 }. DT1={a[1]=-2, a[2]=3, a[3]=17,i=1} sensibilise : M1=abcebcdebcdebf M1= abcebcdebcdebf couvre δ 1 =cdebcde M1=abcebcdebcdebf couvre δ 2 =ce Donc DT1 satisfait T1 a b c e i<=3 read(i); s:=0; i>3 a[i]<=0 a[i]>0 f d i:=i+1; G5 s:=s+a[i]; 147

Hiérarchie des techniques de test structurel Exemple : considérons le graphe de contrôle G5 Soient δ 1 =de et δ 2 =b et δ 3 =cd et T2= {δ 1, δ 2, δ 3 }. DT1={a[1]=-2, a[2]=3, a[3]=17,i=1} sensibilise : M1=abcebcdebcdebf M1= abcebcdebcdebf couvre δ 1 =de M1=abcebcdebcdebf couvre δ 2 =b M1=abcebcdebcdebf couvre δ 3 =cd a b c i<=3 read(i); s:=0; i>3 a[i]>0 f Donc DT1 satisfait T2 Lorsque T1 est satisfait, T2 l est aussi : T1 T2 (T1 est un test plus fiable (ie. fort ) que T2) T1 T2 et T2 T3 alors T1 T3 (Transitivité) e a[i]<=0 i:=i+1; G5 d s:=s+a[i]; Hiérarchie entre les différentes techniques structurelles de test (relation d ordre partielle) 148

Deux Catégories de critère de couverture Approche Flot de contrôle avec couverture de tous les arcs : DT1={x=-2, y=0} sensibilise le chemin M1=abcd DT2={x=1, y=0} sensibilise le chemin M2=ace Si l affectation du nœud b est erronée, cette erreur ne sera pas détectée par DT1 et DT2. Approche Flot de données L affectation de y au nœud b n est pas utilisée par DT1 et DT2 : il faudrait tester le chemin abce sensibilisé par la DT3={x=2, y=0} x pair y:=y+x/2 b x<0 y:=-x d writeln(y) a read(x,y) x impair c writeln(y/x) x>=0 e writeln(y) G4 149