Tests et Validation du logiciel

Slides:



Advertisements
Présentations similaires
La recherche de chemin optimal
Advertisements

Tests et Validation du logiciel
Tests et Validation du logiciel
Portée des variables VBA & Excel
Fonctions & procédures
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Test statistique : principe
Programme de seconde 2009 Géométrie
GEF 243B Programmation informatique appliquée Boucles §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
Niveau: 4ème Math Prof: Donia JEBALI Année Scolaire 2007/2008
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Exercices Algorithmiques
et évaluation des compétences
Erreur, défaut, anomalie
Tests et Validation du logiciel
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Les fonctions.
Par Clément en vacances sur la Côte d’Azur Le 17 décembre 2011
Cours Systèmes logiques
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Récursivité.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Expressions et assignations
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Les structures de données arborescentes
Les algorithmes: complexité et notation asymptotique
Mise en situation... m g l = 1 m l2 = 1 Positions: Vitesses:
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
1.2 COMPOSANTES DES VECTEURS
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
1 Exercice : longueur d’un mot est-elle paire ?  Test fonctionnel  Quel ensemble de valeur choisir / spécification  Test structurel  Soit le code d’un.
Introduction à l’algorithmique
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Courbes de Bézier.
Notre calendrier français MARS 2014
IFT 6800 Atelier en Technologies d’information
8PRO107 Éléments de programmation
Chapitre 3 Syntaxe et sémantique.
Partie II Sémantique.
CSI 1502 Principes fondamentaux de conception de logiciels
Parcours d'une séquence de longueur fixe
Tutorat en bio-informatique Le 21 novembre Exercices 2 et 3 (MAT1400) - solutions Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez.
Atelier de formation : MAT optimisation II (les graphes).
Répéter dans un programme avec une Instruction itérative
Programmation linéaire en nombres entiers : les méthodes de troncature
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
Animateur : Med HAIJOUBI
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
10 paires -. 9 séries de 3 étuis ( n° 1 à 27 ) 9 positions à jouer 5 tables Réalisé par M..Chardon.
CALENDRIER-PLAYBOY 2020.
Algorithmique Les structures Rappel L'enchaînement séquentiel
LES PILES ET FILES.
La Boucle Repeat Cours LCS N°1 Présenté par Mr: LALLALI.
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
CYCLE 6 : FONCTIONS Faire un programme en C avec des FONCTIONS 1- A quoi servent les FONCTIONS ? 2- Comment écrire un programme avec FONCTIONS ? 3- Comment.
Objectifs de vérification logiciels GEF492A 2014 Référence: [HvV §14.1] Capt Vincent Roberge Collège Militaire Royal du Canada Génie électrique et génie.
Chapitre 3 :Algèbre de Boole
Université de Sherbrooke
Algorithmes de tri et de recherche
Créer des packages.
Un survol du language C.
Cours LCS N°4 Présenté par Mr: LALLALI
Scripts et fonctions Instructions de contrôle
Transcription de la présentation:

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

Expression et nombre de chemins Rappel : Nb de chemins de contrôles = Nb de chemins exécutables + Nb de chemins non exécutables Certaines instructions comme le « for » génèrent énormément de chemins non exécutables

Expression et nombre de chemins For i:=1 to 1000 do s:=s+a[i]; Expression des chemins ? Nombre de chemins de contrôle ? Nombre de chemins exécutables et non exécutables ?

Hiérarchie des tests techniques Soit T1 un test structurel qui nécessite la couverture des chemins Soient δ1=cdebcde et δ2=ce T1= {δ1, δ2}. Soit DT1={a[1]=-2, a[2]=3, a[3]=17,i=1} une donnée de test qui sensibilise le chemin de contrôle M1= abcebcdebcdebf M1 couvre δ1=cdebcde et δ2=ce Donc DT1 satisfait T1

Hiérarchie des tests techniques Rappel : M1= abcebcdebcdebf Soient T1 = {cdebcde , ce} Soit un T2 nécessitant les couvertures des chemins suivantes T2={bcd, e} On remarque que si T1 satisfait, alors T2 l’est aussi On écrit : T1 T2 T1 est un test plus fort et plus fiable que T2 Règle de transitivité T1T2 et T2 T3 alors T1 T3

Catégories de critères 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 M1=ace Si l’affectation du noeud 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 noeud b n’est pas utilisée par DT1 et DT2 : il faudrait tester le chemin sensibilisé par la DT3={x=2, y=0}

Couverture de flot de contrôle Couverture de tous-les-noeuds But : sensibiliser tous les chemins de contrôle qui nous permettent de visiter tous les noeuds du graphe. Nom du critère de couverture : «tous les noeuds» A chaque critère de couverture est associée une valeur que l’on appelle taux de couverture ou mesure de complétude. Taux de couverture : TER1 (Test Effectiveness Ratio 1 ou C1) TER1 = {noeuds couverts} / {noeuds} TER1=1  C1=1  Tous-les-nœuds est satisfait  Toutes les instructions ont été exécutées au moins une fois

Couverture de flot de contrôle Exemple Function sum (x,y: integer) : integer; Begin If (x=0) then sum := x Else sum := x + y; End; Un test fonctionnel ne permettrait pas de trouver le défaut. L’anomalie est détectée par le chemin [acd] Toutes les DTs fournissent un TER=0.75

Couverture de flot de contrôle Soit le programme Read(x); … If x<>0 then x:=1; Y:=1/x; Le critère tous-les-nœuds est satisfait par le chemin [abcd] cependant le bug ne sera pas mis en évidence

Couverture de flot de contrôle Couverture tous-les-arcs Le critère tous-les-nœuds est insuffisant pour détecter une majorité d’erreurs de programmation. TER2 = {arcs couverts} / {arcs} Lorsque le critère tous-les-arcs est totalement réalisé, cela implique que le critère tous-les-nœuds est satisfait Équivaut à la couverture de toutes les valeurs de vérité pour chaque nœud de décision

Couverture de flot de contrôle Conditionnelles composées Exemple : if ((a < 2) and (b = a)) Then x := 2 -a Else x := a -2 Le jeu de test DT1 = {a=b=1}, DT2 = {a=b=3} satisfait le critère tous-les-arcs sans couvrir toutes les décisions possibles -ex. DT3 = {a=3, b=2}.

Couverture de flot de contrôle Le graphe de flot de contrôle doit décomposer les conditionnelles : 4 DTs pour couvrir le multi graphe DT1={a=b=1} DT1={a=1,b=0} DT1={a=3 ,b=2} DT1={a=b=3}

Couverture de flot de contrôle Le critère condition-décision multiple est satisfait si Le critère tous les arcs est satisfait Chaque sous-expression dans les conditions prend toutes les combinaisons de valeurs possibles Si A & B Then ………..Nécessite : A = B = vrai A = B = faux A = vrai, B = faux A = faux, B = vrai Problème de la combinatoire lors d’expression logique complexe

Couverture de flot de contrôle Problème de la sensibilité du traitement des conditionnelles par le compilateur => proposer un graphe alternatif qui pourrait correspondre à une optimisation du compilateur

Couverture de flot de contrôle Note : bOK:=(a < 2) and (b = a); If bOK Then x := 2 -a Else x := a -2 Le problème devient « masqué » Ambiguïté du critère tous-les-arcs, car dépend de l’algo ainsi que du compilateur

Couverture de flot de contrôle Limites du critère tous-les-arcs et condition multiples Soit le programme suivant : évaluer l’inverse de la somme des éléments compris entre la place inf et sup d’un tableau a comprenant des entiers positifs read(inf, sup); i := inf; sum:= 0; while(i <= sup) do begin sum:= sum+ a[i]; i := i + 1; end; writeln(1/sum); Existe-t-il un bug potentiel ?

Couverture de flot de contrôle La DT1 = {a[1]=50, a[2]=60,a[3]=80, inf=1, sup=3} couvre le critère tous-les-arcs adbc B1={u1,u2, u3,u2, u3, u2, u3, u4} Problème non détecté par le critère tous-les-arcs: si inf >sup erreur sur 1/sum Chemin maquant : [u1,u4] avec DT2={inf=2,sup=1} B2={u1, u4}

Couverture du flot de contrôle Couverture de tous-les-chemins-indépendants Le critère tous-les-chemins-indépendants vise à parcourir tous les arcs dans chaque configuration possible (et non pas au moins une fois comme dans le critère tous-les-arcs) Lorsque le critère tous-les-chemins-indépendants est satisfait, cela implique : le critère tous-les-arcs est satisfait, le critère tous-les-nœuds est satisfait.

Couverture de flot de contrôle Sur le programme P7, l’arc [d-c] est sensibilisé lorsque i > sup dans le contexte sum= 0 (la boucle n’est pas activée) Dans le contexte sum≠0 (la boucle est activée)

Couverture du flot de contrôle Procédure : tous-les-chemins-indépendants 1 –Evaluer V(G) -> nombre cyclomatique NB : e – n + i + s OU Nb conditions simples +1 2 -Produire une DT au hasard couvrant le maximum de noeuds de décisions du graphe 3 -Produire la DT qui modifie la valeur de vérité (donc le flot) de la première instruction de décision de la DT de la seconde étape Recommencer l’étape 3 jusqu’a la couverture de toutes les décisions.

Couverture du flot de contrôle Exemple : soit le programme suivant Function goodstring(var count : integer) : boolean; var ch : char; begin goodstring:= false; count := 0; read(ch); if ch = ‘a’ then read(ch) while(ch=‘b’) or (ch=‘c’) do count := count + 1; end; if ch = ‘x’ then goodstring= true; La fonction goodstring est censée reconnaître toutes les chaînes de caractères (fournies caractère par caractère) commençant par le caractère a, suivi d’une série de b ou c (dont le nombre sera compté ) et se terminant par x. Si la chaîne est reconnue alors la fonction retourne vrai, sinon elle retourne false.

Couverture du flot de contrôle Construisez le graphe de flot de contrôle en décomposant les conditions multiples. Appliquez la démarche

Couverture du flot de contrôle

Couverture du flot de contrôle 1) V(G) = 13-11+2 = 4+1 = 5  5 Chemins indépendants à trouver 2) DT normale = « abcx » Chemin sensibilisé : B1={0,1,2,3,4,5,3,6,4,5,3,6,7,8,9} 3) On choisi la première décision de B1 (1). La première était vrai, on choisi une DT pour l’inverser et donc sensibiliser le chemin B2 {0,1,9}. Dt=« b » B1 et B2 sont indépendants 3) On choisi la seconde décision de B1 (3) Première itération. Valeur vrai : arc(3,4) Dt dont le seconde caractère est <> de b. Ex DT3={(acx} Chemin sensibilisé : B3 {0,1,2,3,6,4,5,3,6,7,8,9} B1 contient {3,4} qui n’est pas dans B3 et B2 contient {1,9} qui n’est pas dans B3. B1, B2, B3 sont indépendants 2 à 2 3) Troisième condition….

Couverture du flot de contrôle Cette technique a mis en évidence 5 DT DT1={abcx} DT2={b} DT3={acx} DT4={ax} DT5={aba} Ces DT mettent en évidence les chemins de base du graphe précédent. Nb : les DT 1, 2 et 5 suffisent à satisfaire tous-les-arcs.

Couverture du flot de contrôle Pour prouver que des chemins sont indépendants, il suffit de trouver un arc qui n’est pas contenu dans les deux chemins Si il n’y a plus de conditions à étudier sur le chemin initial, on peut enchaîner sur les chemins secondaires mis en évidence

Couverture de flot de contrôle Exercice: Soit le programme P3 suivant : If n ≤0 then n := 1-n end; If n pair Then n := n / 2 Else n := 3*n + 1 end ; Write(n); Graphe de flot Calculer les DT suivant les critères : tous-les-noeuds, tous-les-arcs, tous-les-chemins-indépendants

Couverture du flot de contrôle Critères de test : tous-les-noeuds n = 0, n = -1 tous-les-arcs n = 2, n = -2 tous-les-chemins-indépendants n = -1, n = -2, n = 1, n = 2