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

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

Présentations similaires


Présentation au sujet: "INT/LOR/GLCP/JLR Introduction •Un test sur les tests •Ce que n’est pas le test •Définitions •Les limites du test."— Transcription de la présentation:

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

2 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.

3 INT/LOR/GLCP/JLR Un test sur les tests •Programmation procédurale –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)

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

5 INT/LOR/GLCP/JLR TRIANGLE SEGMENT POINT

6 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

7 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

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

9 INT/LOR/GLCP/JLR Le test (IEEE) IEEE-STD •"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"

10 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"

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

12 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

13 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

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

15 INT/LOR/GLCP/JLR Les séquences d’exécution for (int i=0; i

16 INT/LOR/GLCP/JLR Les séquences d’exécution for (int i=0; i

17 INT/LOR/GLCP/JLR Les séquences d’exécution for (int i=0; i

18 INT/LOR/GLCP/JLR Les séquences d’exécution for (int i=0; i

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

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

21 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()) }

22 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

23 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

24 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)

25 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

26 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.

27 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

28 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) = 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 alorsK = I + J -1 sinonK = 2I + 1 finsi si K >= I+1 alorsL = I + 1 sinonL = J - 1 finsi si I = 5 alors M = 2L + K sinonM = L + 2K - 1 finsi écrire M;

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

30 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

31 INT/LOR/GLCP/JLR Diagramme de séquence leLecteurDeCarteuneSessionl_EcranleClavieruneBanque debuteSession [pasCarteCrédit]eject afficheDemandeCode recupèreLeCode contrôleCarte [estVolée]garde

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

33 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

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

35 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.

36 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

37 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.

38 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.

39 INT/LOR/GLCP/JLR Framework pour du test incrémental (diagramme de classes) TestRunner TestResult TestSuite TestCase AppTestCase ClassUnderTest * 1 0..* 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 “utilise”


Télécharger ppt "INT/LOR/GLCP/JLR Introduction •Un test sur les tests •Ce que n’est pas le test •Définitions •Les limites du test."

Présentations similaires


Annonces Google