La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Introduction Un test sur les tests Ce que n’est pas le test"— Transcription de la présentation:

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

2 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

3 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

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

5 TRIANGLE SEGMENT POINT INT/LOR/GLCP/JLR

6 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

7 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

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

9 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

10 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

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

12 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

13 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

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

15 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

16 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

17 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

18 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

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

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

21 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

22 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

23 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

24 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

25 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

26 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

27 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

28 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

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

30 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

31 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

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

33 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

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

35 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

36 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

37 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

38 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

39 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


Télécharger ppt "Introduction Un test sur les tests Ce que n’est pas le test"

Présentations similaires


Annonces Google