Le Test des logiciels Ifsic 1  Yves Le Traon 2002 Le Diagnostic Yves Le Traon.

Slides:



Advertisements
Présentations similaires
Tests et Validation du logiciel
Advertisements

Tests et Validation du logiciel
Tests et Validation du logiciel
III- Les fonctions 1- Activité 02
Programme d’une fête du fin de l’année
Outils d’analyse statique
Test de logiciel GLG101 AP.TELLE & S.MILOVANOVIC MAI 2007.
Firebug Dévermineur Debugger.
Sous-programmes Concepts généraux Passage de paramètres Fonctions
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
TP : Fichiers et Tableaux Séance N°2 Avril Application de Gestion de stock Partie 1 : les fichiers 1 Création dun fichier de 20 articles.
TP Fichiers et Tableaux Avril Un fichier Permet le stockage de données sur des supports de mémoire externes (donc les données ne seront pas perdues.
TP Enregistrements Avril Un enregistrement permet de regrouper des éléments ayant des types différents au sein dune même structure de données (chose.
LES SOUS-PROGRAMMES USTL Licence S.T.A. S3 A.P.I.2.
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.
FICHIERS : Définition : Algorithme général:
Formation Python Modules (d'après "Learning Python", de Mark Lutz)
Projet de C – Matrices creuses
CSI3525: Concepts des Langages de Programmation Notes # 7: Noms, Liaisons, Verification de Type et Portee ( Lire Chapitre 4 )
CSI3525: Concepts des Languages de Programmation
Environnements d'exécution
Ift 2251 Introduction au Génie Logiciel
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Instructions de contrôle
ECP – Option SA Henri Fallon
Répéter dans un programme avec une Instruction itérative
Les assertions en Java.
LANGAGE PASCAL Introduction rapide….
Les boucles imbriquées
2.1 - Historique Chapitre 2 : Introduction au langage C++
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
Paradigmes des Langages de Programmation
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.
Le test de logiciels Yves Le Traon
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.
Informatique de gestion – IO MER L3 – Pierre SOURNAC Informatique de Gestion part III – the macro rises L3 – IO MER
1 Algorithmique et programmation en Itérations (boucles) Types numériques simples (suite)
Algorithmique et programmation en
Algorithmes de tri et de recherche
Génération de tests pour la localisation automatique d’erreurs Yves Le Traon et Franck FLEUREY.
MIGO ET COMPLEXITE1 ARBRES EQUILIBRES Définition : On dit qu’un arbre binaire est H équilibré si en tout nœud de l’arbre, les hauteurs des sous-arbres.
Exemple à faire: N°2 Ecrire l’Algorithme et le Programme PASCAL qui affiche la somme de deux nombres entiers donnés.
Module I3 algorithmique et programmation
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
Architecture et technologie des ordinateurs II
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
ISBN Chapitre 10 L'implémentation des sous- programmes.
Test.
1 Cpt JAVA : Eclipse (bis) Debogage. 2 Code à tester public class siecle { int t; public siecle() { super(); t=1; } static public boolean vrai() { return(false);
Algorithmique Algorithmique  Pascal
Organisation de la mémoire pour le langage minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Formula Flowcode Castano Nicolas 1STI2D.1.
Retour sur les interfaces Les méthodes définies dans une interface sont des méthodes qui doivent absolument être implémentées par une ou des sous-classes.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
LES SYSTÈMES DYNAMIQUES.
Test.
Test.
SYSTEM PROGRAM.
test
Les Instructions Itératives (Les Boucles)
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
L’Instruction de Test Alternatif
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
TEST.
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE
Test test.
Transcription de la présentation:

Le Test des logiciels Ifsic 1  Yves Le Traon 2002 Le Diagnostic Yves Le Traon

Le Test des logiciels Ifsic 2  Yves Le Traon 2002 Stratégies de test et diagnostic Stratégie incrémentale Stratégie par recoupements des traces d ’exécution Stratégie par suppression puis réintroduction Slicing du programme Utilisation d ’assertions/programmation par contrats

Le Test des logiciels Ifsic 3  Yves Le Traon 2002 Stratégies de test Combinatoires All-Paths Multiple-Clue

Le Test des logiciels Ifsic 4  Yves Le Traon 2002 Stratégies de test: Multiple clue

Le Test des logiciels Ifsic 5  Yves Le Traon 2002 Stratégies de test: Multiple clue

Le Test des logiciels Ifsic 6  Yves Le Traon 2002 Stratégies de test : Start-Small

Le Test des logiciels Ifsic 7  Yves Le Traon 2002 Stratégies de test: Start-Small m ij = 1 si l’écoulement E i active le module M j

Le Test des logiciels Ifsic 8  Yves Le Traon 2002 Diagnostic: slicing program sumofoddnbr; var n,sum,i:integer; begin sum:=0; i:=1; read(n); while n>0do begin sum:=sum+i; i:=i+2; n:=n-1; end; write(sum); end Slice statique pour n program sumofoddnbr; var n,sum,i:integer; begin sum:=0; i:=1; read(n); while n>0do begin sum:=sum+i; i:=i+2; n:=n-1; end; write(sum); end

Le Test des logiciels Ifsic 9  Yves Le Traon 2002 Slicing (Weiser) Le slicing consiste à abstraire la partie du programme qui influence les valeurs d’une variable (ou l’exécution d’une instruction) problème indécidable utile en test pour: –analyse statique de chemins (couverture) –sensibilisation dynamique de chemins (Korel & Co.) –débogage/diagnostic autres applications : compilation efficace, parallélisation.

Le Test des logiciels Ifsic 10  Yves Le Traon 2002 Slicing Slicing de x, ligne 10 ? read(n) i:=1 sum:=0; while (i<=n) do begin if (i mod 2 = 0) then x:= 17 else x:=18; endif sum:= sum + i; i:= i+1; end; write(x); write(sum); Slice statique pour n ? read(n) i:=1 sum:=0; while (i<=n) do begin if (i mod 2 = 0) then x:= 17 else x:=18; endif sum:= sum + i; i:= i+1; end; write(x); write(sum);

Le Test des logiciels Ifsic 11  Yves Le Traon 2002 Slicing dynamique Slice dynamique souvent imprécis: en test on peut disposer de la donnée effective read(n) i:=1 sum:=0; while (i<=n) do begin if (i mod 2 = 0) then x:= 17 else x:=18; endif sum:= sum + i; i:= i+1; end; write(x); write(sum); X, ligne 10 n=2

Le Test des logiciels Ifsic 12  Yves Le Traon 2002 procedure sum2 (n:integer;var s2:integer); begin s2:=decrement(n) * n div 2 end; procedure sum1(n:integer;var s1:integer); begin s1:=n * increment(n) div 2 end; procedure partialsums (n:integer; var s1,s2:integer); begin sum1(n,s1); sum2(n,s2) end; procedure compute2 (n:integer; var r2:integer); var s1,s2:integer; begin partialsums(n,s1,s2); add(s1,s2,r2) end; procedure square(n:integer; var r1:integer); begin r1:= n * n end; program Main; var isok :boolean; procedure test (r1,r2:integer; var isok:boolean); begin isok:=r1=r2 end; procedure add (s1,s2:integer; var r2:integer); begin r2:=s1+s2 end; function decrement(n:integer):integer; begin decrement:=n+1(*à la place de n-1*) end; function increment(n:integer):integer; begin increment:=n+1 end;

Le Test des logiciels Ifsic 13  Yves Le Traon 2002 procedure compute1 (n:integer; var r1:integer); begin square(n,r1) end; procedure computes (n:integer; var r1,r2:integer); begin compute1(n,r1); compute2(n,r2) end; procedure sqrtest (n:integer; var isok:boolean); var r1,r2:integer; begin computes(n,r1,r2); test(r1,r2,isok) end; (* Programme principal *) begin sqrtest(3,isok) end. cas de test in=3 résultat attendu : out=isok=true résultat obtenu : out=isok=false "test" dépend de "computes" et la procédure "computes" de "computes1" et de "computes2" Graphe d’appel

Le Test des logiciels Ifsic 14  Yves Le Traon 2002 Main sqrtest in=3 out:isok=false test computes out:r1=9 in=3 compute2 compute1 in=3 out:r1=9 square in=3 out:r1=9 partialsums in=3 out:s1=6 add in:s1=6 out:r2=12 sum1 sum2 out:s2=6 in=3 out:s1=6 increment decrement in=3 out=4 in=3 out=4 s2=6 r2=12 in=3 out:r2=12 in:r1=9 r2=12 out:isok=false s2=6 graphe d'appel. dépendances de données à l'appel. Interprocedural slicing

Le Test des logiciels Ifsic 15  Yves Le Traon 2002 program sumofoddnbr (input,output); var n,sum,i,s:integer; procedure init (var sum,i,n:integer); begin sum:=0; i:=1; read(input,n) end; procedure add (var a:integer;b:integer); begin a:=a+b end; procedure increment2 (var c:integer); begin c:=c+2 end; procedure decrement1 (var d:integer); begin d:=d-1 end; procedure summation (var s,i,n:integer); begin add(s,i); increment2(i); decrement1(n) end; begin (*main*) init(s,i,n); while n>0 do summation(s,i,n); sum:=s; write(output,sum) end.

Le Test des logiciels Ifsic 16  Yves Le Traon 2002 –Chaque noeud représente une procédure (ou une instruction) telle que les variables d’entrée sont des utilisation (uses(n)) et les variables de sortie sont des définitions (defs(n)) d'une instruction. –Les arcs entre les procédures représentent les dépendances des données et les dépendances de contrôle. –Les flèches des (uses(n)) aux (defs(n)) pour une variable représentent les relations (defs-uses).

Le Test des logiciels Ifsic 17  Yves Le Traon 2002 Slicing le cas de test considéré (n=1)Couv.={d1u3, d2u4, d3u2, d4u7}. Une faute a été détectée à la sortie de p8 (u7)

Le Test des logiciels Ifsic 18  Yves Le Traon 2002 (d1) (d2) (u1)(d3) (u2) u7)d7) (u3)(u4) d4 (u5)(d5) (u6)(d6) sumofoddnbr (( p1 p2 p3 p4 p5 p6 p7 p8 graphe d'appel les relations uses-defs

Le Test des logiciels Ifsic 19  Yves Le Traon 2002 (d1) (d2) (u1)(d3) (u2) u7)d7) (u3)(u4) d4 sumofoddnbr (( p1 p2 p3 p4 p5 p8 graphe d'appel les relations uses-defs 1

Le Test des logiciels Ifsic 20  Yves Le Traon 2002 Dicing

Le Test des logiciels Ifsic 21  Yves Le Traon 2002 Slicing : avantages 1) Les coupes sont obtenues automatiquement 2) Une coupe est une sous-partie du programme pouvant être exécutée indépendamment 3) L'analyse permet une localisation très précise de la faute

Le Test des logiciels Ifsic 22  Yves Le Traon 2002 Slicing : inconvénients 1) Les coupes à analyser sont en général très nombreuses 2) Une coupe n'a, en général, pas de signification fonctionnelle simple 3) L'analyse de chaque slice implique la mise en place d'un oracle (permettant de déterminer si l'exécution est correcte ou non), et (en raison du point 2) nécessite l'intervention humaine. 4) Étant donné le nombre de coupes qu'il faut, en général, analyser ainsi que le fait que cette analyse n'est pas complètement automatisée, le coût de l'application de cette technique est très important.