Tests
Unitaires
LAJOUAD Rachid
Tests Boîte
Noire
LAJOUAD Rachid
Tests boîte noire ?
• Tests sans la connaissance du code sous jacent
• Tests basés sur la spécification
Lajouad Rachid
CQL...
Tests boîte noire ?
Avantages
• pas besoin du code source
• s'applique aussi bien aux tests unitaires que systèmes
Désavan...
Divination d'erreurs (1)
Approche ad-hoc basée sur l'expérience
Approche:
• Faire une liste d'erreurs possibles ou situati...
Divination d'erreurs (2)
Exemple fonction de tri de tableau
Modèle d'erreur:
• tableau vide
• tableau trié
• tableau trié ...
Partitionnement en Classes
d'équivalences
Partition du domaine de données en classes
d'équivalences selon la spécification...
Heuristiques pour Identification de
Classes d'équivalences
Pour chaque donnée:
• si spécifie un intervalle de valeurs vali...
Partitionnement en Classes
d'équivalences - Exemple (1)
• Spécification
• données trois entiers (côtés du triangle: a, b, ...
Analyse des Valeurs aux Bornes
(AVB)
• Erreurs ont tendance à survenir vers les valeurs
extrêmes (bornes)
• AVB améliore l...
Conditions de bornes
• Situation à la bordure des limites opérationnelles
envisagées
• Types de données ayant des conditio...
Analyse des Valeurs aux Bornes -
Exemple
• Exemples de valeurs aux bornes pour nextdate
Lajouad Rachid
CQL - BTSDSI Ibn SI...
Tests Boîte
Blanche
LAJOUAD Rachid
Tests boîte blanche
Approche de tests structurels
Focus sur la logique interne du système
nécessité du code source
spécifi...
Tests boîte blanche
● Approches orientées flotde contrôle
– Basées sur l'analysedu flot de contrôle à travers le programme...
Processus de test boîte blanche
Établir l'objectif de couverture
Dériver un flowchart du code source
Déterminer des chemin...
Flowchart Simplifié
● Plus pratique pour grandes unités
● Obtenu en groupant des sous-chemins de
décision à décision
● Nœu...
Flowchart Simplifié - exemple
fir
st
firs
t
A
B C
D
E
F G
H I
J K
last
L
public static void main (String[] args)throws IOE...
Meilleur programme Triangle
first
last
B
C
D E
I G
F
A
H
public static void main (String[] args) throws
IOException{
Syste...
Instrumentation de Chemin
●Pour mesurer la couverture de code
Code
Source
Code
Source
Modifié
Trace
d'Exécution
exécution ...
Couverture de Boucles (1)
● Boucle simple - exécuter la boucle
– minimum-1
– minimum
– minimum+1
– typique
– maximum
– max...
Couverture de Boucles (2)
● Boucles imbriquées
– Commencer avec la boucle la plus interne
● Mettre toutes les boucles à
l'...
Tests Flots de Donnés
● Tests basés sur les flots de donnés
– où les données sont définies
– où les données sont modifiées...
Prochain SlideShare
Chargement dans…5
×

Tests unitaires

1 108 vues

Publié le

Test unitaire le frame work JUNIT

Publié dans : Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 108
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
29
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Tests unitaires

  1. 1. Tests Unitaires LAJOUAD Rachid
  2. 2. Tests Boîte Noire LAJOUAD Rachid
  3. 3. Tests boîte noire ? • Tests sans la connaissance du code sous jacent • Tests basés sur la spécification Lajouad Rachid CQL - BTSDSI Ibn SINA (Kenitra)3 Unité entrées sorties
  4. 4. Tests boîte noire ? Avantages • pas besoin du code source • s'applique aussi bien aux tests unitaires que systèmes Désavantages • ne test pas les fonctions cachées Approches: • Divination d'erreurs (Error guessing) • Partitionnement en Classe d'équivalences • Analyse de Valeurs aux Bornes • Tables de Décision • Graphes Causes Effets • Tests dérivés des exigences (ex: cas d'utilisations) Lajouad Rachid CQL - BTSDSI Ibn SINA (Kenitra)4
  5. 5. Divination d'erreurs (1) Approche ad-hoc basée sur l'expérience Approche: • Faire une liste d'erreurs possibles ou situations conduisant à des erreurs • modèle d'erreurs • Développer des cas de tests pour couvrir le modèle d'erreurs Développez et maintenez vos modèles d'erreurs Lajouad Rachid CQL - BTSDSI Ibn SINA (Kenitra)5
  6. 6. Divination d'erreurs (2) Exemple fonction de tri de tableau Modèle d'erreur: • tableau vide • tableau trié • tableau trié à l'envers • grand tableau non trié • ... Générer des cas de tests pour ces situations Lajouad Rachid CQL - BTSDSI Ibn SINA (Kenitra)6
  7. 7. Partitionnement en Classes d'équivalences Partition du domaine de données en classes d'équivalences selon la spécification Idéalement les CEs devraient être • telles que chaque donnée est dans une classe disjointes • les éléments d'une même classe mis en correspondance avec leur résultats de façon similaire Lajouad Rachid CQL - BTSDSI Ibn SINA (Kenitra)7
  8. 8. Heuristiques pour Identification de Classes d'équivalences Pour chaque donnée: • si spécifie un intervalle de valeurs valides, définir • 1 CE valide (dans l'intervalle) • 2 CEs invalides (une à chaque bout de l'intervalle) • si spécifie un nombre (N) de valeurs valides, définir • 1 CE valide • 2 CE invalides (aucune et plus de N) • si spécifie un ensemble de valeurs valides, définir • 1 CE valide (dans l'ensemble) • 1 CE invalide (en dehors de l'ensemble) Lajouad Rachid CQL - BTSDSI Ibn SINA (Kenitra)8
  9. 9. Partitionnement en Classes d'équivalences - Exemple (1) • Spécification • données trois entiers (côtés du triangle: a, b, c) • chaque côté doit être un nombre positif inférieur ou égal à 20. • résultat type du triangle: • Équilatéral si a = b = c • Isocèles si 2 paires de côté sont égaux • Scalène si aucun côté n'est égal à l'autre ou • PasUnTriangle si a >= b + c, b >= a + c, ou c >= a + b Lajouad Rachid CQL - BTSDSI Ibn SINA (Kenitra)9
  10. 10. Analyse des Valeurs aux Bornes (AVB) • Erreurs ont tendance à survenir vers les valeurs extrêmes (bornes) • AVB améliore le Partitionnement en Classes d'équivalences en • sélectionnant les éléments juste à et autour des bornes de chacune des CES • dérivant des cas de tests en considérant des CEs des résultats également Lajouad Rachid CQL - BTSDSI Ibn SINA (Kenitra)10
  11. 11. Conditions de bornes • Situation à la bordure des limites opérationnelles envisagées • Types de données ayant des conditions de bornes • Numérique, Caractère, Position, Quantité, Vitesse, Location, Taille • Caractéristiques de conditions de bornes • Premier/Dernier, Début/Fin, Minimum/Maximum, Audessus/ Audessous, Vide/Plein, Pluslent/ Plusrapide, Plusgrand/ Pluspetit, Plusprochede/ Plusloinde, Pluscourt/ Pluslong, Plustôt/ Plustard, Plushaut/ Plusbas Lajouad Rachid CQL - BTSDSI Ibn SINA (Kenitra)11
  12. 12. Analyse des Valeurs aux Bornes - Exemple • Exemples de valeurs aux bornes pour nextdate Lajouad Rachid CQL - BTSDSI Ibn SINA (Kenitra)12 Donnée Valeur borne Mois 0, 1,12,13 Jour 0,1,2,30,31,32 an 1811, 1812, 2013, 2014
  13. 13. Tests Boîte Blanche LAJOUAD Rachid
  14. 14. Tests boîte blanche Approche de tests structurels Focus sur la logique interne du système nécessité du code source spécification nécessaire pour résultats attendus Avantage • test ce qui est là Dé-avantage • fonctionnalité présente dans la spec mais non implémentée peut être manquée
  15. 15. Tests boîte blanche ● Approches orientées flotde contrôle – Basées sur l'analysedu flot de contrôle à travers le programme – Exemples de critères de couverture de tests ● couverture d'instructions (tous-les-noeuds) ● couverture debranches (tous-les-liens) ● couverture dechemins (tous-les-chemins) ● couverture deconditions ● ...
  16. 16. Processus de test boîte blanche Établir l'objectif de couverture Dériver un flowchart du code source Déterminer des chemins pour objectif de couverture Pour chaque chemin • Sensibiliser les chemins pour les entrées • Utiliser la spécification pour résultats escomptés • Faire attention au chemins impossibles Exécuter les cas de tests Vérifier la couverture
  17. 17. Flowchart Simplifié ● Plus pratique pour grandes unités ● Obtenu en groupant des sous-chemins de décision à décision ● Nœuds – Nœuds Décisions: avec plus d'un lien partant ● fini avec une décision – Nœuds Jonctions: avec plus d'un lien entrant ● concentre plusieurs chemins
  18. 18. Flowchart Simplifié - exemple fir st firs t A B C D E F G H I J K last L public static void main (String[] args)throws IOException { boolean isATriangle; System.out.print("Enter the sides: "); int a = IOEasy.readInt(); int b = IOEasy.readInt(); int c = IOEasy.readInt(); System.out.println("A is“+a+“,B is“+b+", C is”+c); if ((a < b+c) && (b < a+c) && (c < a+b)) (A) isATriangle = true; (B) else isATriangle = false; (C) if (isATriangle) { (D) if (((a==b) || (a==c) || (b==c)) &&!((a==b) && (a==c))) (E) System.out.println( "Triangle is Isosceles"); (F) if ((a==b) && (b==c)) (G) System.out.println( "Triangle is Equilateral"); (H) if ((a!=b) && (a!=c) && (b!=c)) (I) System.out.println("Triangle is Scalene"); (J) } else System.out.println("Not a Triangle"); (L) } }
  19. 19. Meilleur programme Triangle first last B C D E I G F A H public static void main (String[] args) throws IOException{ System.out.print( "Enter the sides: "); int a = IOEasy.readInt(); int b = IOEasy.readInt(); int c = IOEasy.readInt(); System.out.println("A is " + a + ", B is " + b + ", C is " + c); if ((a < b+c) && (b < a+c) && (c < a+b)) { (A) if ((a!=b) && (a!=c) && (b!=c)) { (B) System.out.println(“Triangle is Scalene”); (G) } else { if ((a==b) && (a==c)) (C) System.out.println(“Triangle is Equilateral”); (E) else System.out.println(“Triangle is Isosceles”); (D) } (F) } else System.out.println(“Not a Triangle”); (I) } (H) }
  20. 20. Instrumentation de Chemin ●Pour mesurer la couverture de code Code Source Code Source Modifié Trace d'Exécution exécution de suite de tests analyse pour couverture objectif de couverture atteinte ? Approches ● marqueurs de liens ● compteurs de liens ● débogueur symbolique ● outil de couverture de code
  21. 21. Couverture de Boucles (1) ● Boucle simple - exécuter la boucle – minimum-1 – minimum – minimum+1 – typique – maximum – maximum+1 ● fois si possible. examp1(char[] val) { for(int i=0;i<val.length;i++){ ... } } examp2(int x, int y) { i = x; while (i <= y) { ... i++; } }
  22. 22. Couverture de Boucles (2) ● Boucles imbriquées – Commencer avec la boucle la plus interne ● Mettre toutes les boucles à l'extérieur à leur valeur minimum ● Mettre toutes les autres boucles à une valeur typique ● Tester minimum, minimum+1, typique, maximum-1, maximum – Remonter à la boucle au dessus et répéter – Si la boucle plus extérieure est faite, effectuer les 5 cas pour toutes les boucles simultanément for (i = 0; i < x; i++) { for (j = 0; j < y; j++) { for (k = 0; k < z; k++){ } } }
  23. 23. Tests Flots de Donnés ● Tests basés sur les flots de donnés – où les données sont définies – où les données sont modifiées – séquence d'événements liés aux données

×