SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
Vérification et validation
Cours 4
Introduction au test et méthodes informelles
Delphine Longuet
delphine.longuet@lri.fr
http://www.lri.fr/~longuet/Enseignements/16-17/Et4-VV
Polytech Paris-Sud
Formation initiale 4e
année
Spécialité informatique
Année 2016-2017
D. Longuet - V&V 2
Définitions du test
Norme IEEE (Standard Glossary of Software Engineering Terminology)
« 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 obtenus. »
Validation dynamique (exécution du système)
Comparaison entre système et spécification
D. Longuet - V&V 3
Définitions du test
« Tester peut révéler la présence d'erreurs mais jamais leur absence »
Vérification partielle : le test ne peut pas montrer la
conformité du système (nécessité d'une infinité de tests)
« Tester, c'est exécuter le programme dans l'intention d'y trouver des
anomalies ou des défauts »
Objectif : détection des bugs
D. Longuet - V&V 4
Bug ?
Anomalie (fonctionnement) : différence entre comportement attendu
et comportement observé
Défaut (interne) : élément ou absence d'élément dans le logiciel
entraînant une anomalie
Erreur (programmation, conception) : comportement du programmeur
ou du concepteur conduisant à un défaut
Un bon test est un test qui permet de découvrir un défaut en
déclenchant une anomalie
erreur défaut anomalie
D. Longuet - V&V 5
Échauffement
Spécification : Le programme prend en entrée trois entiers, interprétés
comme étant les longueurs des côtés d'un triangle. Le programme
retourne la propriété du triangle correspondant : scalène, isocèle ou
équilatéral.
Écrire un ensemble de tests pour ce programme.
D. Longuet - V&V 6
Échauffement
Cas valides
triangle scalène valide
triangle isocèle valide + permutations
triangle équilatéral valide
triangle plat (a+b=c) + permutations
Cas invalides
pas un triangle (a+b<c) + permutations
une valeur à 0
toutes les valeurs à 0
une valeur négative
une valeur non entière
mauvais nombre d'arguments
D. Longuet - V&V 7
Échauffement
Cas valides Données Résultat attendu
triangle scalène valide (10,5,7) scalène
triangle isocèle valide + permutations (3,5,5) isocèle
triangle équilatéral valide (3,3,3) équilatéral
triangle plat (a+b=c) + permutations (2,3,5)/(1,1,2) scalène/isocèle
Cas invalides
pas un triangle (a+b<c) + permutations (2,1,5) triangle invalide
une valeur à 0 (3,0,4) triangle invalide
toutes les valeurs à 0 (0,0,0) triangle invalide
une valeur négative (2,-1,6) triangle invalide/entrée invalide
une valeur non entière ('a',4,2) entrée invalide
mauvais nombre d'arguments (3,5) entrée invalide
D. Longuet - V&V 8
Échauffement
16 cas correspondant aux défauts constatés dans des implantations de
cette spécification
Moyenne des résultats obtenus par un ensemble de développeurs
expérimentés : 55%
La construction de tests est une activité difficile,
encore plus pour de grandes applications
D. Longuet - V&V 9
Vocabulaire du test
Objectif de test : comportement du système à tester
Données de test : données à fournir en entrée au système de manière à
déclencher un objectif de test
Résultats d'un test : conséquences ou sorties de l'exécution d'un test
(affichage à l'écran, modification des variables, envoi de messages...)
Cas de test : données d'entrée et résultats attendus
associés à un objectif de test
_____________
Glossary of Testing Terms, ISTQB (International Software Testing Qualifications Board)
D. Longuet - V&V 10
Processus de test
1. Choisir les comportements à tester (objectifs de test)
2. Choisir des données de test permettant de déclencher ces
comportements + décrire le résultat attendu pour ces données
3. Exécuter les cas de test sur le système + collecter les résultats
4. Comparer les résultats obtenus aux résultats attendus pour établir
un verdict
Objectif
de test
Cas de
test
Résultats
des tests
Verdict
sélection génération exécution oracle
Résultats
attendus
Spécification,
code, idée...
D. Longuet - V&V 11
Problème de l'oracle
Oracle : décision de la réussite de l'exécution d'un test, en comparant le
résultat obtenu au résultat attendu
Problème : décision pouvant être complexe
●
types de données sans prédicat d'égalité
●
système non déterministe : sortie possible mais pas celle attendue
●
heuristique : approximation du résultat optimal attendu
Solution : description du résultat attendu, selon les cas :
●
la valeur attendue
●
énumération des valeurs possibles
●
ensemble de conditions
D. Longuet - V&V 12
Problème de l'oracle
Trouver le minimum d'une liste d'entiers
Entrée : [4; 2; 3; 6] Sortie attendue : 2
Oracle : Égalité sur les entiers 
Calculer l'itinéraire le plus rapide entre deux villes
Entrée : Paris – Lyon Sortie attendue : ... A6...
Oracle : Égalité des chemins ? 
Problème du sac à dos (résolu avec une heuristique)
Oracle : Résultat raisonnablement éloigné du résultat optimal ? 
D. Longuet - V&V 13
Problème de l'oracle
Trouver le minimum d'une liste d'entiers
Entrée : [4; 2; 3; 6] Sortie attendue : 2
Oracle : Égalité sur les entiers 
Calculer l'itinéraire le plus rapide entre deux villes
Entrée : Paris – Lyon Sortie attendue : ... A6...
Oracle : Égalité des chemins ? 
Trajet de 4h17 (quel que soit l'itinéraire choisi) 
Problème du sac à dos (résolu avec une heuristique)
Oracle : Résultat raisonnablement éloigné du résultat optimal ? 
Résultat = résultat optimal + 5% 
D. Longuet - V&V 14
Problème de l'oracle
Oracle : En général, résultat attendu = ensemble de conditions si
plusieurs résultats possibles et énumération impossible
Risques : Échec d'un programme conforme si définition trop stricte du
résultat attendu
Faux positif (false-fail)
Voir l'exemple du calcul d'itinéraire dans lequel on impose un chemin
D. Longuet - V&V 15
Faux positifs et faux négatifs
Validité des tests : Les tests n'échouent que sur des programmes
incorrects
Faux positif (false-fail) : fait échouer un programme correct
Complétude des tests : Les tests ne réussissent que sur des
programmes corrects
Faux négatifs (false-pass) : fait réussir un programme incorrect
Validité indispensable, complétude impossible en pratique
Toujours s'assurer de la validité des tests
D. Longuet - V&V 16
Scénario de test (unitaire)
●
Préambule : Suite d'actions amenant le programme dans l'état
nécessaire pour exécuter le cas de test
●
Corps : Exécution des fonctions du cas de test
●
Identification : Opérations d'observation rendant l'oracle possible
●
Postambule : Suite d'actions permettant de revenir à un état initial
Préambule Corps Identification Postambule
D. Longuet - V&V 17
Scénario de test (unitaire)
Pop (supprimer le sommet d'une pile)
Cas de test : Scénario du test :
Préambule Pile p = new Pile()
p.push(7)
p.push(2)
p.push(3)
Corps p.pop()
Identification p.top() = 2
p.pop()
p.top() = 7
p.pop()
p.empty() = true
Postambule free(p)
7
2
3
7
2
pop()
D. Longuet - V&V 18
Attention
●
Les tests doivent être exécutés dans des conditions et sur des
données connues et contrôlées.
●
Le résultat d'un test doit être observable.
●
Il doit exister un moyen sûr de comparer le résultat observé au
résultat attendu afin de déterminer le succès ou l'échec du test.
●
Les cas de test ne doivent pas être redondants : plusieurs cas ne
doivent pas cibler la même faute
●
Un cas de test correspond à un comportement cible unique : pas de
choix pendant l'exécution du test
D. Longuet - V&V 19
Classification des types de test
D. Longuet - V&V 20
Types de tests
Stratégie (processus de développement)
Accessibilité
Critère d'évaluation (qualité du logiciel)
Méthodes de
sélection de tests
Méthodes de
sélection de tests
Niveaux
de test
Niveaux
de test
Caractéristiques
des tests
Caractéristiques
des tests
D. Longuet - V&V 21
Types de tests
Stratégie (processus de développement)
Accessibilité
Critère d'évaluation (qualité du logiciel)
Fonctionnel Structurel
D. Longuet - V&V 22
Test fonctionnel (ou test boîte noire)
Système
Spécification
Tests
Résultats
des tests
Résultats
attendus
Verdict
sélection
exécution
oracle
Sélection des tests à partir d'une spécification du système (formelle ou
informelle), sans connaissance de l'implantation
Possibilité de construire les tests pendant la conception, avant la
programmation
D. Longuet - V&V 23
Test fonctionnel
Système
On peut acheter
un thé avec 50c
On obtient
un café
Obtenir
un thé
Verdict ?
sélection
oracle
Distributeur de café et thé
Café = 20c, thé = 50c
Pièce puis boisson
Ne rend pas la monnaie
Insérer
50c
D. Longuet - V&V 24
À partir d'une spécification formelle
Système
sélection
oracle
50c
ÉCHEC
Distributeur de café et thé
piece = 50c
∧ result = Thé
Thé
Café
distrib(piece : Piece) : Boisson
pre : piece = 20c ∨ piece = 50c
post : (piece = 20c ∧ result = Café)
∨ (piece = 50c ∧ result = Thé)
D. Longuet - V&V 25
Verdict ?
???
Test structurel (ou test boîte blanche)
Sélection des tests à partir de l'analyse du code source du système
Construction des tests uniquement pour du code déjà écrit
Système
Tests
Résultats
des tests
sélection
oracle
exécution
D. Longuet - V&V 26
analyse
du code
if x
then res := y
else res := 0
return res
Verdict ?
???
Test structurel
x = 1, y = 0 res = 0
sélection
oracle
exécution
x
res := y res := 0
true false
D. Longuet - V&V 27
analyse
du code
SUCCÈS
res = 0
Test structurel
x = 1, y = 0 res = 0
sélection
oracle
x AND y
exécution
x
res := y res := 0
true false
if x
then res := y
else res := 0
return res
D. Longuet - V&V 28
Test structurel
analyse
du code
ÉCHEC
res = 1
x = 1, y = 0 res = 0
sélection
oracle
x OR y
exécution
x
res := y res := 0
true false
if x
then res := y
else res := 0
return res
D. Longuet - V&V 29
Résultats
attendus
Test structurel
Sélection des tests à partir de l'analyse du code source du système
Construction des tests uniquement pour du code déjà écrit
Système
Tests
Résultats
des tests
Verdict
sélection
oracle
Spécification
exécution
D. Longuet - V&V 30
Test fonctionnel vs. structurel
Complémentarité : détection de fautes différentes
●
Test fonctionnel : détecte les oublis ou les erreurs par rapport à la
spécification
●
Test structurel : détecte les erreurs de programmation
Addition d'entiers modulo 100 000
Test fonctionnel : détecte l'erreur par rapport à la spécification
Test structurel : détecte l'erreur pour les valeurs (600,500)
Function sum(x,y : integer) : integer
if (x = 600 and y = 500)
then sum := x ­ y
else sum := x + y
D. Longuet - V&V 31
Types de tests
Stratégie (processus de développement)
Accessibilité
Critère d'évaluation (qualité du logiciel)
Fonctionnel Structurel
Système
Intégration
Unitaire
D. Longuet - V&V 32
Processus de développement en V
Conception
architecturale
Développement
Conception
détaillée
Tests unitaires
Tests d'intégration
écriture
validation
Spécification Tests système
Analyse
des besoins
Tests d'acceptation
D. Longuet - V&V 33
Tests unitaires
Objectif : s'assurer que chaque unité de programme (méthode, classe,
composant) remplit sa fonction, indépendamment du reste du système
●
Tests effectués en isolant chaque partie du système
●
Simulation nécessaire des parties dépendantes (bouchons)
●
Tests ciblés sur les fonctionnalités associées à la méthode, à la
classe, au composant
●
(Possibilité d'utiliser des outils de mesure de la qualité des tests
en terme de couverture de code)
Méthode
●
Test incrémental : méthode, classe, package, composant
D. Longuet - V&V 34
Tests d'intégration
Objectif : s'assurer que les composants interagissent correctement
entre eux, par exemple :
●
appels de méthodes extérieures (conditions sur les paramètres)
●
accès à une base de données
●
récupération des données saisies via l'interface utilisateur
Méthode
●
Tests ciblés sur les interactions entre composants (à tous les
niveaux)
●
Tests construits à partir de :
●
l'architecture du système
●
la spécification des interfaces des composants
D. Longuet - V&V 35
Tests système
Objectif : s'assurer de la conformité du produit fini par rapport à son
cahier des charges
●
Tests effectués en boîte noire au travers de l'interface
●
Tests ciblés sur les exigences décrites dans la spécification
●
Construction possible des tests à partir des cas et des scénarios
d'utilisation
Intérêt de la planification des tests système en phase d'analyse
●
Validation du produit fini par rapport aux spécifications initiales
●
Permet de s'assurer qu'on n'a pas dévié des spécifications
D. Longuet - V&V 36
Types de tests
Stratégie (processus de développement)
Accessibilité
Critère d'évaluation (qualité du logiciel)
Fonctionnel Structurel
Système
Intégration
Unitaire
Conformité
Robustesse
Performance
Sécurité
D. Longuet - V&V 37
Test de conformité
But : Assurer que le système présente les fonctionnalités attendues par
l'utilisateur
Méthode : Sélection des tests à partir de la spécification, de façon à
contrôler que toutes les fonctionnalités spécifiées sont implantées selon
leurs spécifications
Service de paiement en ligne :
●
Scénarios avec transaction acceptée/refusée, couverture des
différents cas et cas d'erreur prévus
D. Longuet - V&V 38
Test de robustesse
But : Assurer que le système supporte les utilisations imprévues
Méthode : Sélection des tests en dehors des comportements spécifiés
(entrées hors domaine, utilisation incorrecte de l'interface,
environnement dégradé...)
Service de paiement en ligne :
●
Login dépassant la taille du buffer
●
Coupure réseau pendant la transaction
D. Longuet - V&V 39
Test de sécurité
But : Assurer que le système ne possède pas de vulnérabilités
permettant une attaque de l'extérieur
Méthode : Simulation d'attaques pour découvrir les faiblesses du
système qui permettraient de porter atteinte à son intégrité
Service de paiement en ligne :
●
Essayer d'utiliser les données d'un autre utilisateur
●
Faire passer la transaction pour terminée sans avoir payé
D. Longuet - V&V 40
Test de performance
But : Assurer que le système garde des temps de réponse satisfaisants
à différents niveaux de charge
Méthode : Simulation à différents niveaux de charge d'utilisateurs pour
mesurer les temps de réponse du système, l'utilisation des ressources...
Service de paiement en ligne :
●
Lancer plusieurs centaines puis milliers de transactions en même
temps
D. Longuet - V&V 41
Un type de test transversal
Stratégie (processus de développement)
Accessibilité
Critère d'évaluation (qualité du logiciel)
Fonctionnel Structurel
Système
Intégration
Unitaire
Conformité
Robustesse
Performance
Sécurité
Test de
non régression
Test de
non régression
D. Longuet - V&V 42
Test de non régression
But : Assurer que les corrections et les évolutions du code n'ont pas
introduit de nouveaux défauts
Méthode : À chaque ajout ou modification de fonctionnalité, rejouer
les tests pour cette fonctionnalité, puis pour celles qui en dépendent,
puis les tests des niveaux supérieurs
Lourd mais indispensable
Automatisable en grande partie
D. Longuet - V&V 43
Méthodes informelles
de sélection de tests
D. Longuet - V&V 44
Problématique du test
Impossible d'exécuter un programme sur toutes ses entrées possibles
Nécessité de sélectionner les tests
Objectif : détecter un maximum de défauts avec un minimum de tests
Ensemble de tests idéal
●
praticable : qu'on peut exécuter en temps fini et raisonnable
●
représentatif : susceptible de trouver un grand nombre de fautes
D. Longuet - V&V 45
Couverture des exigences
Cahier des charges fonctionnel : liste numérotée d'exigences
fonctionnelles et non fonctionnelles
Principe :
1. Découpage : construire au moins un test pour chaque exigence
2. Regroupement : déterminer exigences couvertes pour chaque test
Exigence REQ53
Exigence REQ54
Exigence REQ55
Cas de test TC121
Cas de test TC122
Cas de test TC123
Cas de test TC124
Cas de test TC125
Cas de test TC126
D. Longuet - V&V 46
Exigence REQ53
Exigence REQ54
Exigence REQ55
Cas de test TC121
Cas de test TC122
Cas de test TC123
Cas de test TC124
Cas de test TC125
Cas de test TC126
Couverture des exigences
Intérêt :
●
Couverture : tous les points du cahier des charges sont testés
●
Traçabilité : tests à modifier si évolution d'une exigence
Difficulté restante : déterminer les cas de test pour une exigence
D. Longuet - V&V 47
Couverture des exigences
En l'absence de préférences, l'application
renvoie le trajet le plus rapide entre le
départ à l'arrivée.
Si la préférence "moins de
correspondances" est choisie, l'application
renvoie le trajet avec le moins de
changements entre le départ et à l'arrivée.
La préférence "plus rapide" est la
préférence par défaut.
Les préférences "plus rapide", "moins de
correspondances" et "moins de marche à
pied" sont deux à deux exclusives.
Départ et arrivée sur la même ligne.
Départ et arrivée sur deux lignes
différentes avec 1 correspondance.
Départ et arrivée sur la même ligne
mais trajet le plus rapide implique
des correspondances.
TC25 avec préférence "moins de
correspondances".
TC25 avec préférence "plus rapide"
a même résultat que sans préférence
Préférence "plus rapide" cochée par
défaut.
Impossibilité de choisir plusieurs
préférences parmi ces trois.
REQ
34
REQ
35
REQ
56
REQ
57
TC23
TC24
TC25
TC26
TC42
TC43
TC44
D. Longuet - V&V 48
Analyse partitionnelle
Principe : Définir des classes d'équivalence sur les domaines des
entrées (ou des sorties) d'un système pour en déduire différents
objectifs de test
Hypothèse : Pour chaque classe d'équivalence, toutes les entrées
génèrent le même comportement
Détection du même défaut
But : Tester chaque comportement de façon indépendante, en fonction
du défaut cherché
D. Longuet - V&V 49
Analyse partitionnelle
E
C4
C2
C5
C6
C3
C1
Construction à partir de l'ensemble E des entrées du programme d'une
partition de E en un ensemble de classes Ci telles que :
● E est l'union des Ci
● les classes Ci sont deux à deux disjointes
D. Longuet - V&V 50
Analyse partitionnelle
E
C4
C2
C5
C6
C3
C1
Hypothèse d'uniformité : une seule valeur dans chaque Ci suffit à tester
le comportement représenté par Ci
∃ d ∈ Ci, correct(Prog,d) ⇒ ∀ d ∈ Ci, correct(Prog,d)
S'il existe une valeur d dans Ci telle que le programme est correct pour
d, alors le programme est correct pour toutes les valeurs de Ci
D. Longuet - V&V 51
Analyse partitionnelle
Types de données munis d'une mesure : listes (longueur), arbre
(hauteur ou nombre de nœuds), collection (nombre d'éléments)…
Hypothèse de régularité : il suffit de tester le programme pour les
valeurs d dont la mesure M(d) est inférieure à une constante N
∃ N, (∀ d, M(d) ≤ N ⇒ correct(Prog,d))
⇒ ∀ d, correct(Prog,d))
Si le programme est correct pour toutes les valeurs de mesure
inférieure à N, alors il est correct pour toutes les valeurs d'entrée
Listes
liste vide
listes de longueur 1 listes de longueur 2
listes de
longueur 3
≥
D. Longuet - V&V 52
Analyse partitionnelle
Triangles
Le programme prend en entrée trois réels, interprétés comme étant les
longueurs des côtés d'un triangle. Si ces longueurs forment un triangle,
le programme renvoie la propriété du triangle correspondant (scalène,
isocèle ou équilatéral) ainsi que la propriété de son plus grand angle
(aigu, droit ou obtus).
Donner les classes d'équivalence associées à ce programme ainsi qu'un
cas de test possibles pour chacune de ces classes.
D. Longuet - V&V 53
Test aux limites
Principe : Construire des tests pour les valeurs limites du programme
●
Condition de boucle
●
Valeurs très grandes
●
Valeurs non valides
Utilisations :
●
Conjointement à l'analyse partitionnelle : données choisies aux
bornes des intervalles des classes d'équivalence (suppose une
relation d'ordre sur les entrées)
●
Pour le test de robustesse : données choisies en dehors des
valeurs autorisées
D. Longuet - V&V 54
Méthode générale
1. Pour chaque paramètre d'entrée, calculer les classes d'équivalence
sur les domaines de valeurs de ce paramètre
2. S'il y a plusieurs paramètres, faire le produit cartésien des classes
obtenues
3. Choisir des données de test
●
Une valeur pour chaque classe obtenue
●
Des valeurs aux limites
MAXINT
D. Longuet - V&V 55
Analyse partitionnelle + test aux limites
Analyse partitionnelle :
✔ Réduction du nombre de cas de test
✗ Choix des classes délicat
Test aux limites :
✔ Heuristique solide pour le choix des données au sein des classes
✔ Production de tests de conformité et de tests de robustesse
✗ Relation d'ordre sur les entrées nécessaire
✗ Explosion combinatoire des données de test
Inconvénient majeur : Caractère intuitif ou subjectif de la partition en
classe et de la notion de limite
Difficulté pour caractériser la couverture des tests
D. Longuet - V&V 56
Cas de nombreux paramètres
30 imprimantes
4 valeurs
+ une option complexe
1 entier
5 valeurs + sous-options
2 valeurs
2 valeurs
2 valeurs
2 valeurs
+ choix du fichier
Plus les paramètres avancés...
D. Longuet - V&V 57
Test pairwise
Constatation : Explosion combinatoire des valeurs d'entrées dans le
cas de nombreux paramètres prenant des ensembles de valeurs finis
Solution : Tester un sous-ensemble des combinaisons de valeurs tel
que chaque combinaison de n variables est testée
Pairwise : n = 2
Idée sous-jacente : Majorité des fautes détectées par combinaisons de
deux valeurs de variables
Complexité : Produit du cardinal des deux plus grands ensembles de
valeurs
D. Longuet - V&V 58
Test pairwise
Exemple : Trois variables x, y et z :
x = 1 ou 2 y = Q ou R ou S z = 5 ou 6
Couvrir toutes les combinaisons (12) : 12 tests
Couvrir tous les couples (16) : 6 tests
x y z Couples couverts
1 Q 5 (1,Q) (Q,5) (1,5)
1 R 6 (1,R) (R,6) (1,6)
1 S 5 (1,S) (S,5) (1,5)
2 Q 6 (2,Q) (Q,6) (2,6)
2 R 5 (2,R) (R,5) (2,5)
2 S 6 (2,S) (S,6) (2,6)
D. Longuet - V&V 59
Test pairwise
Test pairwise
✔ Peut être utilisé avec l'analyse partitionnelle de plusieurs
paramètres
✔ Génération outillée (voir http://www.pairwise.org)
✗ Combinaison aléatoire des valeurs
✗ Résultat attendu à fournir manuellement
Extension : Combinaisons de trois valeurs, quatre valeurs, etc.
Mais : Explosion du nombre de tests
D. Longuet - V&V 60
Test pairwise
Test de configuration
On veut tester l'impression de fichiers depuis plusieurs applications sur
des OS et via des réseaux différents. Donner les tests permettant de
couvrir tous les couples de valeurs.
OS Réseau Imprimante Application
Windows 7 IP HP35 Word
Linux Wifi Canon900 Excel
Mac OS X Bluetooth PowerPoint
AcrobatReader

Contenu connexe

Tendances

Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitairesPHPPRO
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels Bilel Abed
 
Introduction à la validation de logiciel
Introduction à la validation de logicielIntroduction à la validation de logiciel
Introduction à la validation de logicielJean-Paul CARMONA
 
Industrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPIndustrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPhalleck45
 
Exposée: Processus de test logiciel
Exposée:  Processus de test logiciel Exposée:  Processus de test logiciel
Exposée: Processus de test logiciel Esaie88
 
Test unitaire
Test unitaireTest unitaire
Test unitaireIsenDev
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17Marc Hage Chahine
 
Mémoire - L'automatisation des tests fonctionnels - Emeline Simon
Mémoire - L'automatisation des tests fonctionnels - Emeline SimonMémoire - L'automatisation des tests fonctionnels - Emeline Simon
Mémoire - L'automatisation des tests fonctionnels - Emeline SimonEmeline Simon
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221Frédéric Delorme
 
Learning Analytics : entre Promesses et Réalité
Learning Analytics : entre Promesses et RéalitéLearning Analytics : entre Promesses et Réalité
Learning Analytics : entre Promesses et RéalitéSerge Garlatti
 
Présentation Tests Fonctionnels
Présentation Tests FonctionnelsPrésentation Tests Fonctionnels
Présentation Tests FonctionnelsDATANYWARE.com
 

Tendances (15)

J Unit
J UnitJ Unit
J Unit
 
Test logiciel
Test logicielTest logiciel
Test logiciel
 
Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitaires
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels
 
Introduction à la validation de logiciel
Introduction à la validation de logicielIntroduction à la validation de logiciel
Introduction à la validation de logiciel
 
Industrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPIndustrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHP
 
Exposée: Processus de test logiciel
Exposée:  Processus de test logiciel Exposée:  Processus de test logiciel
Exposée: Processus de test logiciel
 
Test unitaire
Test unitaireTest unitaire
Test unitaire
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17
 
Bbl sur les tests
Bbl sur les testsBbl sur les tests
Bbl sur les tests
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
 
Mémoire - L'automatisation des tests fonctionnels - Emeline Simon
Mémoire - L'automatisation des tests fonctionnels - Emeline SimonMémoire - L'automatisation des tests fonctionnels - Emeline Simon
Mémoire - L'automatisation des tests fonctionnels - Emeline Simon
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
Learning Analytics : entre Promesses et Réalité
Learning Analytics : entre Promesses et RéalitéLearning Analytics : entre Promesses et Réalité
Learning Analytics : entre Promesses et Réalité
 
Présentation Tests Fonctionnels
Présentation Tests FonctionnelsPrésentation Tests Fonctionnels
Présentation Tests Fonctionnels
 

Similaire à Et4 4 testinformel

13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciellauraty3204
 
Test Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsTest Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsThierry Gayet
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?Fou Cha
 
Formation tests decembre2010
Formation tests decembre2010Formation tests decembre2010
Formation tests decembre2010Fou Cha
 
test_logiciel_rappel_Master1_Université_JKZ.pptx
test_logiciel_rappel_Master1_Université_JKZ.pptxtest_logiciel_rappel_Master1_Université_JKZ.pptx
test_logiciel_rappel_Master1_Université_JKZ.pptxEnochBidima3
 
Stubs And Moles Dot Net Hub
Stubs And Moles Dot Net HubStubs And Moles Dot Net Hub
Stubs And Moles Dot Net HubDotNetHub
 
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Loic Yon
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?LeClubQualiteLogicielle
 
formation istqb.pdf
formation istqb.pdfformation istqb.pdf
formation istqb.pdfmido04
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringPascal Laurin
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringMSDEVMTL
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Elapse Technologies
 
[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logicielUSTHB & DELTALOG
 
Aql métriques logicielles
Aql métriques logiciellesAql métriques logicielles
Aql métriques logiciellesmarwa baich
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaHeads France
 

Similaire à Et4 4 testinformel (20)

13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel
 
Test Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsTest Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teams
 
Conformiq
ConformiqConformiq
Conformiq
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
 
Cours1.pptx
Cours1.pptxCours1.pptx
Cours1.pptx
 
Formation tests decembre2010
Formation tests decembre2010Formation tests decembre2010
Formation tests decembre2010
 
test_logiciel_rappel_Master1_Université_JKZ.pptx
test_logiciel_rappel_Master1_Université_JKZ.pptxtest_logiciel_rappel_Master1_Université_JKZ.pptx
test_logiciel_rappel_Master1_Université_JKZ.pptx
 
Tests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnitTests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnit
 
Stubs And Moles Dot Net Hub
Stubs And Moles Dot Net HubStubs And Moles Dot Net Hub
Stubs And Moles Dot Net Hub
 
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?
 
formation istqb.pdf
formation istqb.pdfformation istqb.pdf
formation istqb.pdf
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoring
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoring
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 
[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel
 
Final
FinalFinal
Final
 
Jfpc11.ppt
Jfpc11.pptJfpc11.ppt
Jfpc11.ppt
 
Aql métriques logicielles
Aql métriques logiciellesAql métriques logicielles
Aql métriques logicielles
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitaires
 

Et4 4 testinformel

  • 1. Vérification et validation Cours 4 Introduction au test et méthodes informelles Delphine Longuet delphine.longuet@lri.fr http://www.lri.fr/~longuet/Enseignements/16-17/Et4-VV Polytech Paris-Sud Formation initiale 4e année Spécialité informatique Année 2016-2017
  • 2. D. Longuet - V&V 2 Définitions du test Norme IEEE (Standard Glossary of Software Engineering Terminology) « 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 obtenus. » Validation dynamique (exécution du système) Comparaison entre système et spécification
  • 3. D. Longuet - V&V 3 Définitions du test « Tester peut révéler la présence d'erreurs mais jamais leur absence » Vérification partielle : le test ne peut pas montrer la conformité du système (nécessité d'une infinité de tests) « Tester, c'est exécuter le programme dans l'intention d'y trouver des anomalies ou des défauts » Objectif : détection des bugs
  • 4. D. Longuet - V&V 4 Bug ? Anomalie (fonctionnement) : différence entre comportement attendu et comportement observé Défaut (interne) : élément ou absence d'élément dans le logiciel entraînant une anomalie Erreur (programmation, conception) : comportement du programmeur ou du concepteur conduisant à un défaut Un bon test est un test qui permet de découvrir un défaut en déclenchant une anomalie erreur défaut anomalie
  • 5. D. Longuet - V&V 5 Échauffement Spécification : Le programme prend en entrée trois entiers, interprétés comme étant les longueurs des côtés d'un triangle. Le programme retourne la propriété du triangle correspondant : scalène, isocèle ou équilatéral. Écrire un ensemble de tests pour ce programme.
  • 6. D. Longuet - V&V 6 Échauffement Cas valides triangle scalène valide triangle isocèle valide + permutations triangle équilatéral valide triangle plat (a+b=c) + permutations Cas invalides pas un triangle (a+b<c) + permutations une valeur à 0 toutes les valeurs à 0 une valeur négative une valeur non entière mauvais nombre d'arguments
  • 7. D. Longuet - V&V 7 Échauffement Cas valides Données Résultat attendu triangle scalène valide (10,5,7) scalène triangle isocèle valide + permutations (3,5,5) isocèle triangle équilatéral valide (3,3,3) équilatéral triangle plat (a+b=c) + permutations (2,3,5)/(1,1,2) scalène/isocèle Cas invalides pas un triangle (a+b<c) + permutations (2,1,5) triangle invalide une valeur à 0 (3,0,4) triangle invalide toutes les valeurs à 0 (0,0,0) triangle invalide une valeur négative (2,-1,6) triangle invalide/entrée invalide une valeur non entière ('a',4,2) entrée invalide mauvais nombre d'arguments (3,5) entrée invalide
  • 8. D. Longuet - V&V 8 Échauffement 16 cas correspondant aux défauts constatés dans des implantations de cette spécification Moyenne des résultats obtenus par un ensemble de développeurs expérimentés : 55% La construction de tests est une activité difficile, encore plus pour de grandes applications
  • 9. D. Longuet - V&V 9 Vocabulaire du test Objectif de test : comportement du système à tester Données de test : données à fournir en entrée au système de manière à déclencher un objectif de test Résultats d'un test : conséquences ou sorties de l'exécution d'un test (affichage à l'écran, modification des variables, envoi de messages...) Cas de test : données d'entrée et résultats attendus associés à un objectif de test _____________ Glossary of Testing Terms, ISTQB (International Software Testing Qualifications Board)
  • 10. D. Longuet - V&V 10 Processus de test 1. Choisir les comportements à tester (objectifs de test) 2. Choisir des données de test permettant de déclencher ces comportements + décrire le résultat attendu pour ces données 3. Exécuter les cas de test sur le système + collecter les résultats 4. Comparer les résultats obtenus aux résultats attendus pour établir un verdict Objectif de test Cas de test Résultats des tests Verdict sélection génération exécution oracle Résultats attendus Spécification, code, idée...
  • 11. D. Longuet - V&V 11 Problème de l'oracle Oracle : décision de la réussite de l'exécution d'un test, en comparant le résultat obtenu au résultat attendu Problème : décision pouvant être complexe ● types de données sans prédicat d'égalité ● système non déterministe : sortie possible mais pas celle attendue ● heuristique : approximation du résultat optimal attendu Solution : description du résultat attendu, selon les cas : ● la valeur attendue ● énumération des valeurs possibles ● ensemble de conditions
  • 12. D. Longuet - V&V 12 Problème de l'oracle Trouver le minimum d'une liste d'entiers Entrée : [4; 2; 3; 6] Sortie attendue : 2 Oracle : Égalité sur les entiers  Calculer l'itinéraire le plus rapide entre deux villes Entrée : Paris – Lyon Sortie attendue : ... A6... Oracle : Égalité des chemins ?  Problème du sac à dos (résolu avec une heuristique) Oracle : Résultat raisonnablement éloigné du résultat optimal ? 
  • 13. D. Longuet - V&V 13 Problème de l'oracle Trouver le minimum d'une liste d'entiers Entrée : [4; 2; 3; 6] Sortie attendue : 2 Oracle : Égalité sur les entiers  Calculer l'itinéraire le plus rapide entre deux villes Entrée : Paris – Lyon Sortie attendue : ... A6... Oracle : Égalité des chemins ?  Trajet de 4h17 (quel que soit l'itinéraire choisi)  Problème du sac à dos (résolu avec une heuristique) Oracle : Résultat raisonnablement éloigné du résultat optimal ?  Résultat = résultat optimal + 5% 
  • 14. D. Longuet - V&V 14 Problème de l'oracle Oracle : En général, résultat attendu = ensemble de conditions si plusieurs résultats possibles et énumération impossible Risques : Échec d'un programme conforme si définition trop stricte du résultat attendu Faux positif (false-fail) Voir l'exemple du calcul d'itinéraire dans lequel on impose un chemin
  • 15. D. Longuet - V&V 15 Faux positifs et faux négatifs Validité des tests : Les tests n'échouent que sur des programmes incorrects Faux positif (false-fail) : fait échouer un programme correct Complétude des tests : Les tests ne réussissent que sur des programmes corrects Faux négatifs (false-pass) : fait réussir un programme incorrect Validité indispensable, complétude impossible en pratique Toujours s'assurer de la validité des tests
  • 16. D. Longuet - V&V 16 Scénario de test (unitaire) ● Préambule : Suite d'actions amenant le programme dans l'état nécessaire pour exécuter le cas de test ● Corps : Exécution des fonctions du cas de test ● Identification : Opérations d'observation rendant l'oracle possible ● Postambule : Suite d'actions permettant de revenir à un état initial Préambule Corps Identification Postambule
  • 17. D. Longuet - V&V 17 Scénario de test (unitaire) Pop (supprimer le sommet d'une pile) Cas de test : Scénario du test : Préambule Pile p = new Pile() p.push(7) p.push(2) p.push(3) Corps p.pop() Identification p.top() = 2 p.pop() p.top() = 7 p.pop() p.empty() = true Postambule free(p) 7 2 3 7 2 pop()
  • 18. D. Longuet - V&V 18 Attention ● Les tests doivent être exécutés dans des conditions et sur des données connues et contrôlées. ● Le résultat d'un test doit être observable. ● Il doit exister un moyen sûr de comparer le résultat observé au résultat attendu afin de déterminer le succès ou l'échec du test. ● Les cas de test ne doivent pas être redondants : plusieurs cas ne doivent pas cibler la même faute ● Un cas de test correspond à un comportement cible unique : pas de choix pendant l'exécution du test
  • 19. D. Longuet - V&V 19 Classification des types de test
  • 20. D. Longuet - V&V 20 Types de tests Stratégie (processus de développement) Accessibilité Critère d'évaluation (qualité du logiciel) Méthodes de sélection de tests Méthodes de sélection de tests Niveaux de test Niveaux de test Caractéristiques des tests Caractéristiques des tests
  • 21. D. Longuet - V&V 21 Types de tests Stratégie (processus de développement) Accessibilité Critère d'évaluation (qualité du logiciel) Fonctionnel Structurel
  • 22. D. Longuet - V&V 22 Test fonctionnel (ou test boîte noire) Système Spécification Tests Résultats des tests Résultats attendus Verdict sélection exécution oracle Sélection des tests à partir d'une spécification du système (formelle ou informelle), sans connaissance de l'implantation Possibilité de construire les tests pendant la conception, avant la programmation
  • 23. D. Longuet - V&V 23 Test fonctionnel Système On peut acheter un thé avec 50c On obtient un café Obtenir un thé Verdict ? sélection oracle Distributeur de café et thé Café = 20c, thé = 50c Pièce puis boisson Ne rend pas la monnaie Insérer 50c
  • 24. D. Longuet - V&V 24 À partir d'une spécification formelle Système sélection oracle 50c ÉCHEC Distributeur de café et thé piece = 50c ∧ result = Thé Thé Café distrib(piece : Piece) : Boisson pre : piece = 20c ∨ piece = 50c post : (piece = 20c ∧ result = Café) ∨ (piece = 50c ∧ result = Thé)
  • 25. D. Longuet - V&V 25 Verdict ? ??? Test structurel (ou test boîte blanche) Sélection des tests à partir de l'analyse du code source du système Construction des tests uniquement pour du code déjà écrit Système Tests Résultats des tests sélection oracle exécution
  • 26. D. Longuet - V&V 26 analyse du code if x then res := y else res := 0 return res Verdict ? ??? Test structurel x = 1, y = 0 res = 0 sélection oracle exécution x res := y res := 0 true false
  • 27. D. Longuet - V&V 27 analyse du code SUCCÈS res = 0 Test structurel x = 1, y = 0 res = 0 sélection oracle x AND y exécution x res := y res := 0 true false if x then res := y else res := 0 return res
  • 28. D. Longuet - V&V 28 Test structurel analyse du code ÉCHEC res = 1 x = 1, y = 0 res = 0 sélection oracle x OR y exécution x res := y res := 0 true false if x then res := y else res := 0 return res
  • 29. D. Longuet - V&V 29 Résultats attendus Test structurel Sélection des tests à partir de l'analyse du code source du système Construction des tests uniquement pour du code déjà écrit Système Tests Résultats des tests Verdict sélection oracle Spécification exécution
  • 30. D. Longuet - V&V 30 Test fonctionnel vs. structurel Complémentarité : détection de fautes différentes ● Test fonctionnel : détecte les oublis ou les erreurs par rapport à la spécification ● Test structurel : détecte les erreurs de programmation Addition d'entiers modulo 100 000 Test fonctionnel : détecte l'erreur par rapport à la spécification Test structurel : détecte l'erreur pour les valeurs (600,500) Function sum(x,y : integer) : integer if (x = 600 and y = 500) then sum := x ­ y else sum := x + y
  • 31. D. Longuet - V&V 31 Types de tests Stratégie (processus de développement) Accessibilité Critère d'évaluation (qualité du logiciel) Fonctionnel Structurel Système Intégration Unitaire
  • 32. D. Longuet - V&V 32 Processus de développement en V Conception architecturale Développement Conception détaillée Tests unitaires Tests d'intégration écriture validation Spécification Tests système Analyse des besoins Tests d'acceptation
  • 33. D. Longuet - V&V 33 Tests unitaires Objectif : s'assurer que chaque unité de programme (méthode, classe, composant) remplit sa fonction, indépendamment du reste du système ● Tests effectués en isolant chaque partie du système ● Simulation nécessaire des parties dépendantes (bouchons) ● Tests ciblés sur les fonctionnalités associées à la méthode, à la classe, au composant ● (Possibilité d'utiliser des outils de mesure de la qualité des tests en terme de couverture de code) Méthode ● Test incrémental : méthode, classe, package, composant
  • 34. D. Longuet - V&V 34 Tests d'intégration Objectif : s'assurer que les composants interagissent correctement entre eux, par exemple : ● appels de méthodes extérieures (conditions sur les paramètres) ● accès à une base de données ● récupération des données saisies via l'interface utilisateur Méthode ● Tests ciblés sur les interactions entre composants (à tous les niveaux) ● Tests construits à partir de : ● l'architecture du système ● la spécification des interfaces des composants
  • 35. D. Longuet - V&V 35 Tests système Objectif : s'assurer de la conformité du produit fini par rapport à son cahier des charges ● Tests effectués en boîte noire au travers de l'interface ● Tests ciblés sur les exigences décrites dans la spécification ● Construction possible des tests à partir des cas et des scénarios d'utilisation Intérêt de la planification des tests système en phase d'analyse ● Validation du produit fini par rapport aux spécifications initiales ● Permet de s'assurer qu'on n'a pas dévié des spécifications
  • 36. D. Longuet - V&V 36 Types de tests Stratégie (processus de développement) Accessibilité Critère d'évaluation (qualité du logiciel) Fonctionnel Structurel Système Intégration Unitaire Conformité Robustesse Performance Sécurité
  • 37. D. Longuet - V&V 37 Test de conformité But : Assurer que le système présente les fonctionnalités attendues par l'utilisateur Méthode : Sélection des tests à partir de la spécification, de façon à contrôler que toutes les fonctionnalités spécifiées sont implantées selon leurs spécifications Service de paiement en ligne : ● Scénarios avec transaction acceptée/refusée, couverture des différents cas et cas d'erreur prévus
  • 38. D. Longuet - V&V 38 Test de robustesse But : Assurer que le système supporte les utilisations imprévues Méthode : Sélection des tests en dehors des comportements spécifiés (entrées hors domaine, utilisation incorrecte de l'interface, environnement dégradé...) Service de paiement en ligne : ● Login dépassant la taille du buffer ● Coupure réseau pendant la transaction
  • 39. D. Longuet - V&V 39 Test de sécurité But : Assurer que le système ne possède pas de vulnérabilités permettant une attaque de l'extérieur Méthode : Simulation d'attaques pour découvrir les faiblesses du système qui permettraient de porter atteinte à son intégrité Service de paiement en ligne : ● Essayer d'utiliser les données d'un autre utilisateur ● Faire passer la transaction pour terminée sans avoir payé
  • 40. D. Longuet - V&V 40 Test de performance But : Assurer que le système garde des temps de réponse satisfaisants à différents niveaux de charge Méthode : Simulation à différents niveaux de charge d'utilisateurs pour mesurer les temps de réponse du système, l'utilisation des ressources... Service de paiement en ligne : ● Lancer plusieurs centaines puis milliers de transactions en même temps
  • 41. D. Longuet - V&V 41 Un type de test transversal Stratégie (processus de développement) Accessibilité Critère d'évaluation (qualité du logiciel) Fonctionnel Structurel Système Intégration Unitaire Conformité Robustesse Performance Sécurité Test de non régression Test de non régression
  • 42. D. Longuet - V&V 42 Test de non régression But : Assurer que les corrections et les évolutions du code n'ont pas introduit de nouveaux défauts Méthode : À chaque ajout ou modification de fonctionnalité, rejouer les tests pour cette fonctionnalité, puis pour celles qui en dépendent, puis les tests des niveaux supérieurs Lourd mais indispensable Automatisable en grande partie
  • 43. D. Longuet - V&V 43 Méthodes informelles de sélection de tests
  • 44. D. Longuet - V&V 44 Problématique du test Impossible d'exécuter un programme sur toutes ses entrées possibles Nécessité de sélectionner les tests Objectif : détecter un maximum de défauts avec un minimum de tests Ensemble de tests idéal ● praticable : qu'on peut exécuter en temps fini et raisonnable ● représentatif : susceptible de trouver un grand nombre de fautes
  • 45. D. Longuet - V&V 45 Couverture des exigences Cahier des charges fonctionnel : liste numérotée d'exigences fonctionnelles et non fonctionnelles Principe : 1. Découpage : construire au moins un test pour chaque exigence 2. Regroupement : déterminer exigences couvertes pour chaque test Exigence REQ53 Exigence REQ54 Exigence REQ55 Cas de test TC121 Cas de test TC122 Cas de test TC123 Cas de test TC124 Cas de test TC125 Cas de test TC126
  • 46. D. Longuet - V&V 46 Exigence REQ53 Exigence REQ54 Exigence REQ55 Cas de test TC121 Cas de test TC122 Cas de test TC123 Cas de test TC124 Cas de test TC125 Cas de test TC126 Couverture des exigences Intérêt : ● Couverture : tous les points du cahier des charges sont testés ● Traçabilité : tests à modifier si évolution d'une exigence Difficulté restante : déterminer les cas de test pour une exigence
  • 47. D. Longuet - V&V 47 Couverture des exigences En l'absence de préférences, l'application renvoie le trajet le plus rapide entre le départ à l'arrivée. Si la préférence "moins de correspondances" est choisie, l'application renvoie le trajet avec le moins de changements entre le départ et à l'arrivée. La préférence "plus rapide" est la préférence par défaut. Les préférences "plus rapide", "moins de correspondances" et "moins de marche à pied" sont deux à deux exclusives. Départ et arrivée sur la même ligne. Départ et arrivée sur deux lignes différentes avec 1 correspondance. Départ et arrivée sur la même ligne mais trajet le plus rapide implique des correspondances. TC25 avec préférence "moins de correspondances". TC25 avec préférence "plus rapide" a même résultat que sans préférence Préférence "plus rapide" cochée par défaut. Impossibilité de choisir plusieurs préférences parmi ces trois. REQ 34 REQ 35 REQ 56 REQ 57 TC23 TC24 TC25 TC26 TC42 TC43 TC44
  • 48. D. Longuet - V&V 48 Analyse partitionnelle Principe : Définir des classes d'équivalence sur les domaines des entrées (ou des sorties) d'un système pour en déduire différents objectifs de test Hypothèse : Pour chaque classe d'équivalence, toutes les entrées génèrent le même comportement Détection du même défaut But : Tester chaque comportement de façon indépendante, en fonction du défaut cherché
  • 49. D. Longuet - V&V 49 Analyse partitionnelle E C4 C2 C5 C6 C3 C1 Construction à partir de l'ensemble E des entrées du programme d'une partition de E en un ensemble de classes Ci telles que : ● E est l'union des Ci ● les classes Ci sont deux à deux disjointes
  • 50. D. Longuet - V&V 50 Analyse partitionnelle E C4 C2 C5 C6 C3 C1 Hypothèse d'uniformité : une seule valeur dans chaque Ci suffit à tester le comportement représenté par Ci ∃ d ∈ Ci, correct(Prog,d) ⇒ ∀ d ∈ Ci, correct(Prog,d) S'il existe une valeur d dans Ci telle que le programme est correct pour d, alors le programme est correct pour toutes les valeurs de Ci
  • 51. D. Longuet - V&V 51 Analyse partitionnelle Types de données munis d'une mesure : listes (longueur), arbre (hauteur ou nombre de nœuds), collection (nombre d'éléments)… Hypothèse de régularité : il suffit de tester le programme pour les valeurs d dont la mesure M(d) est inférieure à une constante N ∃ N, (∀ d, M(d) ≤ N ⇒ correct(Prog,d)) ⇒ ∀ d, correct(Prog,d)) Si le programme est correct pour toutes les valeurs de mesure inférieure à N, alors il est correct pour toutes les valeurs d'entrée Listes liste vide listes de longueur 1 listes de longueur 2 listes de longueur 3 ≥
  • 52. D. Longuet - V&V 52 Analyse partitionnelle Triangles Le programme prend en entrée trois réels, interprétés comme étant les longueurs des côtés d'un triangle. Si ces longueurs forment un triangle, le programme renvoie la propriété du triangle correspondant (scalène, isocèle ou équilatéral) ainsi que la propriété de son plus grand angle (aigu, droit ou obtus). Donner les classes d'équivalence associées à ce programme ainsi qu'un cas de test possibles pour chacune de ces classes.
  • 53. D. Longuet - V&V 53 Test aux limites Principe : Construire des tests pour les valeurs limites du programme ● Condition de boucle ● Valeurs très grandes ● Valeurs non valides Utilisations : ● Conjointement à l'analyse partitionnelle : données choisies aux bornes des intervalles des classes d'équivalence (suppose une relation d'ordre sur les entrées) ● Pour le test de robustesse : données choisies en dehors des valeurs autorisées
  • 54. D. Longuet - V&V 54 Méthode générale 1. Pour chaque paramètre d'entrée, calculer les classes d'équivalence sur les domaines de valeurs de ce paramètre 2. S'il y a plusieurs paramètres, faire le produit cartésien des classes obtenues 3. Choisir des données de test ● Une valeur pour chaque classe obtenue ● Des valeurs aux limites MAXINT
  • 55. D. Longuet - V&V 55 Analyse partitionnelle + test aux limites Analyse partitionnelle : ✔ Réduction du nombre de cas de test ✗ Choix des classes délicat Test aux limites : ✔ Heuristique solide pour le choix des données au sein des classes ✔ Production de tests de conformité et de tests de robustesse ✗ Relation d'ordre sur les entrées nécessaire ✗ Explosion combinatoire des données de test Inconvénient majeur : Caractère intuitif ou subjectif de la partition en classe et de la notion de limite Difficulté pour caractériser la couverture des tests
  • 56. D. Longuet - V&V 56 Cas de nombreux paramètres 30 imprimantes 4 valeurs + une option complexe 1 entier 5 valeurs + sous-options 2 valeurs 2 valeurs 2 valeurs 2 valeurs + choix du fichier Plus les paramètres avancés...
  • 57. D. Longuet - V&V 57 Test pairwise Constatation : Explosion combinatoire des valeurs d'entrées dans le cas de nombreux paramètres prenant des ensembles de valeurs finis Solution : Tester un sous-ensemble des combinaisons de valeurs tel que chaque combinaison de n variables est testée Pairwise : n = 2 Idée sous-jacente : Majorité des fautes détectées par combinaisons de deux valeurs de variables Complexité : Produit du cardinal des deux plus grands ensembles de valeurs
  • 58. D. Longuet - V&V 58 Test pairwise Exemple : Trois variables x, y et z : x = 1 ou 2 y = Q ou R ou S z = 5 ou 6 Couvrir toutes les combinaisons (12) : 12 tests Couvrir tous les couples (16) : 6 tests x y z Couples couverts 1 Q 5 (1,Q) (Q,5) (1,5) 1 R 6 (1,R) (R,6) (1,6) 1 S 5 (1,S) (S,5) (1,5) 2 Q 6 (2,Q) (Q,6) (2,6) 2 R 5 (2,R) (R,5) (2,5) 2 S 6 (2,S) (S,6) (2,6)
  • 59. D. Longuet - V&V 59 Test pairwise Test pairwise ✔ Peut être utilisé avec l'analyse partitionnelle de plusieurs paramètres ✔ Génération outillée (voir http://www.pairwise.org) ✗ Combinaison aléatoire des valeurs ✗ Résultat attendu à fournir manuellement Extension : Combinaisons de trois valeurs, quatre valeurs, etc. Mais : Explosion du nombre de tests
  • 60. D. Longuet - V&V 60 Test pairwise Test de configuration On veut tester l'impression de fichiers depuis plusieurs applications sur des OS et via des réseaux différents. Donner les tests permettant de couvrir tous les couples de valeurs. OS Réseau Imprimante Application Windows 7 IP HP35 Word Linux Wifi Canon900 Excel Mac OS X Bluetooth PowerPoint AcrobatReader