Introduction Un test sur les tests Ce que n’est pas le test

Slides:



Advertisements
Présentations similaires
Mustapha EL FEDDI Tests Mustapha EL FEDDI
Advertisements

TYPES DE PROBLÈMES EN GÉOMÉTRIE
Analyse et Programmation Orientées Objets
Analyse et Programmation Orientées Objets Cycle de vie dun projet.
Tests et Validation du logiciel
Test de Systèmes Intégrés Digitaux et Mixtes
LE CALCUL LITTÉRAL AU COLLÈGE
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests.
J. Paul Gibson Bureau A 207, Le département LOgiciels-Réseaux
Organiser des Tests dans un projet
M.E.D.A.L. Module dEnseignement à Distance pour lArchitecture Logicielle Alain VAILLY Diapositive n° 1 IUP MIAGE - Université de NANTES IUP-MIAGE 3ème.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Test de logiciel GLG101 AP.TELLE & S.MILOVANOVIC MAI 2007.
Tests et Validation du logiciel
Pédagogie par Objectifs
Introduction au Génie Logiciel
Démarche de résolution de problèmes
Algorithmique et Programmation
On procède comme on peut le voir sur le dessin ci-contre en effectuant
Cours #8 Flot de conception d’un circuit numérique
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Modèle, Méthode et Conception
Introduction à la programmation (Java)
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.
Techniques de test Boulanger Jean-Louis.
IGL301 - Spécification et vérification des exgiences 1 Chapitre 2 Le processus dingénierie des exigences (ref : Bray chapitre 2)
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
Présentation du mémoire
Standard Template Library
Les étapes du cycle de développement du génie logiciel
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Outils de test fonctionnel et non fonctionnel
Langage de modélisation graphique de systèmes
Structures alternative et répétitive
Les tests des logiciels
Les assertions en Java.
Test logiciel Xavier Baril.
UML.
1. Présentation générale du système
Cours Architecture des Systèmes Informatiques
Banc d’essai pour un circuit combinatoire
La notion de type revisitée en POO
Ce sont des figures fermées qui possèdent 3 côtés
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Langages de description architecturale.
GESTION ET TRAITEMENT DES ERREURS
8PRO100 Éléments de programmation Comment répéter plusieurs fois une séquence d’instructions.
Approche interne de la chaîne d’énergie (approche nécessaire pour maîtriser le fonctionnement des systèmes au delà du premier ordre) Spécification des.
Test de l’unité d’exécution d’une instruction par application d’instructions de test Projet du cours ELE6306 : Tests des systèmes électroniques. Nicolas.
Triangles particuliers (1)
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Vérification de circuits.
Programmation objet La base.
Programmation en C++ Autres langages
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Introduction au Génie Logiciel
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Tutorat en bio-informatique
Les polygones (5) Définition d’un polygone
Les outils de la vérification statiquedynamique unitaires intégration vérificateur de syntaxe vérificateur de syntaxe étenduABAP débogueur inspecteur de.
VALIDATION VÉRIFICATION & TESTS
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
LES TRIANGLES.
MOCK.
Supervision à distance d’une ligne de conditionnement temps réel 16/12/20101INSA de LYON - H4201.
Conception de Programmes - IUT de Paris - 1ère année Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
Ce sont des figures fermées qui possèdent 3 côtés
PRÉSENTATION AGL LES TESTS LOGICIELS LES TEST LOGICIELS 1 Mickael BETTINELLI Brandon OZIOL Gaétan PHILIPPE Simon LUAIRE.
FACTORY systemes Le module de gestion de fiches recettes FORMATION INTOUCH 7.0.
FIGURES USUELLES Auteur: Sabina Baron.
GEOMETRIE du cycle 1 au cycle 3 quelques pistes
Transcription de la présentation:

Introduction Un test sur les tests Ce que n’est pas le test Définitions Les limites du test INT/LOR/GLCP/JLR

Un test sur les tests Lire 3 valeurs entières. Ces trois valeurs sont interprétées comme représentant les longueurs des côtés d’un triangle. Le programme imprime un message qui établit que le triangle est isocèle, équilatéral ou scalène. INT/LOR/GLCP/JLR

Un test sur les tests Programmation procédurale Programmation objet 33 cas de tests Programmation objet 58 cas de tests (26 sont les mêmes que ci-dessus, 32 sont dûs à la programmation objet) INT/LOR/GLCP/JLR

FIGURE FERMEE OUVERTE SEGMENT POLYGONE ELLIPSE MULTI-SEG CIRCLE TRIANGLE QUADRILATERE ….. ….. INT/LOR/GLCP/JLR

TRIANGLE SEGMENT POINT INT/LOR/GLCP/JLR

Ce que n’est pas le test Préciser l’expression des besoins au moyen d’un prototype Vérifier une analyse ou un modèle de conception à l’aide d’un analyseur syntaxique ou par simulation Peaufiner une interface utilisateur Faire des inspections, des revues de code ou de documentation INT/LOR/GLCP/JLR

Ce que n’est pas le test Effectuer une analyse statique du code (avec lint par exemple) Avoir une compilation sans erreurs ni warnings Utiliser des analyseurs dynamiques pour identifier des problèmes de mémoire Debugguer INT/LOR/GLCP/JLR

Définitions Le test Les niveaux de tests Les types de tests Les cas de tests INT/LOR/GLCP/JLR

Le test (IEEE) IEEE-STD 610.12-1990 "Le test est l'exécution ou l'évaluation d'un système ou d'un composant par des moyens automatiques ou manuels, pour vérifier qu'il répond à ses spécifications ou identifier les différences entre les résultats attendus et les résultats observés" INT/LOR/GLCP/JLR

Le test (AFCIQ) "Technique de contrôle consistant à s'assurer, au moyen de l'exécution d'un programme que son comportement est conforme à des données préétablies" INT/LOR/GLCP/JLR

Les niveaux de tests Tests unitaires Tests d’intégration Tests système Tests de non-regression INT/LOR/GLCP/JLR

Les types de tests Tests dirigés par les fautes Tests de conformité (fonctionnels) Tests structurels Tests de robustesse Tests de performance INT/LOR/GLCP/JLR

Cas (jeu) de Test Un cas (jeu) de test spécifie L’état de l’implantation sous test (IUT) et de son environnement avant le test Le vecteur des entrées et/ou les conditions Le résultat attendu messages, exceptions valeurs retournées état résultant de l’IUT et de son environnement INT/LOR/GLCP/JLR

Les limites du test L’espace des entrées Les séquences d’exécution Sensibilité aux fautes INT/LOR/GLCP/JLR

Les séquences d’exécution for (int i=0; i<n; ++i) { if (a.get(i) ==b.get(i)) x[i] = x[i] + 100; else x[i] = x[i] /2; } INT/LOR/GLCP/JLR

Les séquences d’exécution for (int i=0; i<n; ++i) { if (a.get(i) ==b.get(i)) x[i] = x[i] + 100; else x[i] = x[i] /2; } INT/LOR/GLCP/JLR

Les séquences d’exécution for (int i=0; i<n; ++i) { if (a.get(i) ==b.get(i)) x[i] = x[i] + 100; else x[i] = x[i] /2; } INT/LOR/GLCP/JLR

Les séquences d’exécution for (int i=0; i<n; ++i) { if (a.get(i) ==b.get(i)) x[i] = x[i] + 100; else x[i] = x[i] /2; } INT/LOR/GLCP/JLR

Les séquences d’exécution INT/LOR/GLCP/JLR

Sensibilité aux fautes int scale(short j) { j = j -1; // devrait être j = j+1 j = j/30000; return j; } INT/LOR/GLCP/JLR

Sensibilité aux fautes public class Compte extends Object { protected Date lastTxDate, today; //….. int quarterSinceLastTx() { return (90 / daysSinceLastTx() ); } int daysSinceLastTx(){ return (today.day() - lastTxDate.day() +1) public class DateValeurCompte extends Compte { //…. int daysSinceLastTx(){ return (today.day() - lastTxDate.day()) } INT/LOR/GLCP/JLR

Autres limitations Tester un programme permet de montrer la présence de fautes mais en aucun cas leur absence Les tests basés sur une implémentation ne peut révéler des omisions car le code manquant ne peut pas être testé On ne peut jamais être sûr qu’un système de test est correct INT/LOR/GLCP/JLR

Tester, pourquoi? Fonctionnalités manquantes Fonctionnalités incorrectes Effets de bord, interactions indésirables Mauvaises performances, pbs temps réel, deadlock… Sorties incorrectes INT/LOR/GLCP/JLR

Techniques de test Classes d’équivalence (éviter l’explosion combinatoire) Graphe de cause à effet (identifier et analyser les relations devant être modélisées dans une table de décision) Tables de décision (concevoir des cas de test) INT/LOR/GLCP/JLR

Classes d’équivalence 8 Classes valides triangle scalèle triangle isocèle (4) équilatéral (2) 25 Classes invalides 1 valeur = 0 3 valeurs = 0 1 valeur négative triangle isocèle plat 3 valeurs telles que la somme de 2 d’entre elles < à la 3ème (6) 1 valeur non numérique (3) 1 valeur manquante (3) triangle scalène plat 1 valeur max INT/LOR/GLCP/JLR

Graphe de cause à effet Principe : représenter la spécification sous forme d’un graphe On définit les états d’entrées et les états de sorties On construit le graphe à l’aide de “connecteurs” logiques (et, ou, négation) Exemple : soit la spécification suivante: Tout identificateur de voiture doit commencer par les lettres A, B ou C et avoir comme 2ème caractère la lettre X. Les messages M1 et M2 sont émis respectivement en cas d’erreur sur le premier ou le second caractère. Si l’identificateur est correct, il est inséré dans la base de données. INT/LOR/GLCP/JLR

Le test en orienté objet Au niveau de la classe test des méthodes “concevoir pour tester” graphe de contrôle graphe de flot de données test des séquences d’activation des méthodes diagramme de transition d’états test des méthodes héritées diagramme de classes INT/LOR/GLCP/JLR

Concevoir pour Tester lire I,J; débutCas cas I = 5 et J < 4 alors M = 23; cas I = 5 et J >= 4 alors M = J + 16; cas (J + 1) < I et I<0 alors M = 4I +J; cas (J + 1) < I et I >= 0 et I /= 5 alors M = 5I + 2 cas (J + 1) >= I et J < 2 alors M = 2I + 3J - 4; cas (J + 1) >= I et J>= 2 et I /= 5 alors M = 3I +2J –2; finCas écrire M; lire I,J; si I <= J + 1 alors K = I + J -1 sinon K = 2I + 1 finsi si K >= I+1 alors L = I + 1 sinon L = J - 1 si I = 5 alors M = 2L + K sinon M = L + 2K - 1 écrire M; INT/LOR/GLCP/JLR

Figure: Diagramme de transition d'états de la classe Client INT/LOR/GLCP/JLR

Le test en orienté objet Au niveau sous-système test des associations, des aggrégations (diagramme de classes) multiplicité création, destruction test de séquences (diagramme de séquence) construction d’un graphe de flot test des exceptions controlées INT/LOR/GLCP/JLR

Diagramme de séquence leLecteurDeCarte uneSession l_Ecran leClavier uneBanque debuteSession [pasCarteCrédit]eject afficheDemandeCode recupèreLeCode contrôleCarte [estVolée]garde INT/LOR/GLCP/JLR

Graphe de flot debuteSession [pasCarteCrédit] éjecte afficheDemandeCode recupèreLeCode contrôleCarte [estVolée] garde INT/LOR/GLCP/JLR

Le test en orienté objet Tests d’intégration (diagramme de classes => arbre des dépendances) Techniques big-bang bottom-up top-down INT/LOR/GLCP/JLR

Le test en orienté objet Niveau application (Uses cases) INT/LOR/GLCP/JLR

Le test en orienté objet L’interaction de méthodes (individuellement correctes) de classes et sous-classes peuvent générer des erreurs. => Ces interactions doivent être systématiquement exercées. INT/LOR/GLCP/JLR

Le test en orienté objet Omettre la surcharge d’une méthode d’une superclasse située très loin (haut) dans la hierarchie est facile. => Les suites de tests conçus pour les superclasses doivent être réexécutées sur les sous-classes et conçues de façon à pouvoir être réutilisés pour tester n’importe quelle sous-classe INT/LOR/GLCP/JLR

Le test en orienté objet La difficulté et la complexité d’implémentation des contraintes de multiplicité peut facilement conduire à des erreurs quand un élément est ajouté, mis à jour, supprimé. => L’implémentation de la multiplicité doit être systématiquement exercée. INT/LOR/GLCP/JLR

Le test en orienté objet Des classes avec des contraintes séquencielles sur l’activation des méthodes et leurs clients peuvent avoir des erreurs de séquencement. => Le comportement requis doit être testé en utilisant un modèle de machine à états. INT/LOR/GLCP/JLR

Framework pour du test incrémental (diagramme de classes) “utilise” TestRunner 1 TestResult TestCase TestSuite 1 1 1 0..* AppTestCase 1 Une sous-classe est définie pour chaque jeu de test. Un jeu de test peut participer à 0 1 ou plusisieurs suites de tests 1..* ClassUnderTest INT/LOR/GLCP/JLR