transp. - Imagine

Transcription

transp. - Imagine
Génie logiciel – Test © 2005-2007 Renaud Marlet
1
Cours de génie logiciel
(d'après A.-M. Hugues, ...)
Test
Renaud Marlet
LaBRI / INRIA
http://www.labri.fr/~marlet
màj 23/04/2007
Génie logiciel – Test © 2005-2007 Renaud Marlet
2
Le Test
●
Vérifie que le produit est conforme aux intentions
–
●
Un des moyens de l'assurance qualité
–
●
aspects surtout fonctionnels
le plus utilisé, aussi « vieux » que le développement
Méthode dynamique (en exécutant le logiciel)
–
vient après les méthodes statiques (analyses auto.)
–
dernier rempart contre les erreurs résiduelles
–
encore trop souvent empirique
Génie logiciel – Test © 2005-2007 Renaud Marlet
Aspects psychologiques (1)
●
●
Importance de l'intention
–
les tests sont élaborés en fonction de l'intention
–
vouloir démontrer que le programme marche =
mauvaise approche car les tests sont choisis en
conséquence (ne trouvent rien de neuf)
Activité de test
–
processus « destructif »
–
objectif : mettre en évidence des erreurs
–
si on n'y aboutit pas, c'est un échec (!)
3
Génie logiciel – Test © 2005-2007 Renaud Marlet
Aspects psychologiques (2)
●
Plus facile de trouver les erreurs des autres que
les siennes
–
on ne détruit pas bien ce qu'on a construit soi-même
–
à force de regarder, on ne voit plus rien
–
regard neuf : nouvelle interprétation des spécifications
→ Séparation des tâches
–
équipes de développement ≠ équipes d'intégration et
de qualification
–
budget de qualification et de développement séparés
4
Génie logiciel – Test © 2005-2007 Renaud Marlet
5
Testabilité
●
●
Facilité avec laquelle des tests peuvent être
développés à partir des documents de conception
–
faisabilité
–
coût
–
critères de décision de succès ou d'échec d'un test
–
couverture
Se prépare tout au long du cycle de vie
–
spécifications, conception globale et détaillée
(compréhensibles, précises, pertinentes, quantifiées...)
Génie logiciel – Test © 2005-2007 Renaud Marlet
6
Facteurs de testabilité
●
●
Facteurs de bonne testabilité
–
précision, complétude, traçabilité des documents
–
architecture simple et modulaire
–
abstractions à travers des interfaces
–
politique claire des traitements d'erreur
Facteurs de mauvaise testabilité
–
forte contraintes d'espace mémoire et d'efficacité
–
intégration forte des traitements
–
longues chaînes de traitements
Génie logiciel – Test © 2005-2007 Renaud Marlet
7
Limites théoriques (1)
●
Notion d'indécidabilité
–
●
propriété indécidable = qu'on ne pourra jamais prouver
dans le cas général (pas de procédé systématique)
Exemples de propriétés indécidables
–
l'exécution d'un programme termine
–
deux programmes calculent la même chose
–
un programme n'a pas d'erreur
–
un paramètre du programme fait passer l'exécution
●
sur une instruction, une branche, un chemin donné
●
sur toutes les instruction, branches ou chemins
Génie logiciel – Test © 2005-2007 Renaud Marlet
Limites théoriques (2)
Une bataille perdue d'avance :
–
un programme a un nombre infini (ou gigantesque)
d'exécutions possibles
–
un jeu de tests n'examine qu'un nombre fini (petit)
d'exécutions possibles
Trouver des heuristiques :
–
approcher l'infini (ou le gigantesque) avec le fini (petit)
→ tester les exécutions les plus « représentatives »
8
Génie logiciel – Test © 2005-2007 Renaud Marlet
Terminologie : alpha- et bêta-test
●
Alpha-test (alpha testing)
–
●
test effectué en phase de développement, avant la
distribution du produit (→ alpha-versions du produit)
Bêta-test (beta testing)
–
test effectué après l'alpha-test, en distribuant le
produit (→ des bêta-versions) à un groupe limité
d'utilisateurs avertis
☛ dans la suite de ce cours : uniquement -test
9
Génie logiciel – Test © 2005-2007 Renaud Marlet
Organisation de l'activité de test
●
●
Activité coûteuse → optimiser l'investissement
–
effort minimum / probabilité max. de détection d'erreur
–
incrémentalité
Construction des tests
–
aussi organisée que celle d'un produit (!)
(☛ il y a des sociétés qui vendent des suites de test)
●
Gestion projet
–
planification suffisamment tôt (difficile d'accroître les
ressources en fin de développement)
10
Génie logiciel – Test © 2005-2007 Renaud Marlet
11
Tâches
●
Définition des tests
●
Implémentation des jeux de tests
●
Soumission des jeux de tests
●
Dépouillement des résultats
●
Évaluation de la qualité des tests
●
Décision d'arrêter l'écriture de tests
●
Rejeu (maintenance, non régression)
Génie logiciel – Test © 2005-2007 Renaud Marlet
Environnements (outils) de test
●
Mise en œuvre des jeux de test
–
●
●
construction de données et de contextes d'exécution
Diagnostic
–
définition de critères de réussite / échec
–
automatisable ou non (ex. test d'interface)
Synthèse des résultats
–
car les sorties des tests sont souvent très grosses
→ ne pas rater une erreur dans une masse de succès
●
Diffusion des résultats
12
Génie logiciel – Test © 2005-2007 Renaud Marlet
Types de test
(éléments testés et phases)
●
Tests unitaires
–
●
Tests d'intégration
–
●
test de l'assemblage des modules
(pendant le développement)
Tests de validation
–
●
test d'une fonction, une classe, un module
(pendant le développement)
chez le fournisseur, par l'équipe de qualification,
puis chez le client
Tests de suivi d'exploitation
13
Génie logiciel – Test © 2005-2007 Renaud Marlet
Types de test
(nature des propriétés testées)
●
Tests fonctionnels
–
●
Tests de performance
–
●
vitesse, charge, ...
Tests de fiabilité
–
●
réaction à certaines entrées (sorties produites)
résistance aux pannes
Tests de sécurité, ...
☛ Tous types et étapes de test pas nécessairement
présents : dépend de la criticité du logiciel
14
Génie logiciel – Test © 2005-2007 Renaud Marlet
Types de test
(selon les informations accédées)
●
●
Test boîte noire [black box testing]
–
évaluation de l'extérieur (sans regarder le code),
uniquement en fonction des entrées et des sorties
–
sur le logiciel ou un de ses composants
Test boîte blanche [white/glass box testing]
–
exploite le code (→ besoin du source/de l'architecture)
–
tests de portions de code : bloc, branche, etc.
15
Génie logiciel – Test © 2005-2007 Renaud Marlet
Contenu d'un plan de test (1)
●
●
Définition des cas de test
–
configuration matérielle et logicielle
–
pré-conditions
–
étapes du test
–
critères de réussite / échec
Chronologie et durée des étapes de test
–
pour chaque étape, chronologie et moyens de mise
en œuvre des différents jeux de test
–
modes d'intégration
16
Génie logiciel – Test © 2005-2007 Renaud Marlet
Contenu d'un plan de test (2)
●
Équipes concernées et responsabilités
●
Procédures de suivi
●
–
évaluation du degré de réalisation des tests
–
procédures de collecte de données statistiques
Actions à prendre en cas de découverte d'erreur
–
signalement aux développeurs
–
contrôle après corrections (suivi)
17
Génie logiciel – Test © 2005-2007 Renaud Marlet
Contenu d'un plan de test (3)
●
Délais et temps de calcul
●
Politique de passage des tests
(y compris les tests de non régression)
●
Normes
●
Outils et méthodes recommandés
●
Bibliothèques de tests
18
Génie logiciel – Test © 2005-2007 Renaud Marlet
Critères d'arrêt des
développements de tests
●
Taux de couverture atteint (☛ critère a priori)
–
●
●
suffisamment d'aspects testés
Nombre ou taux d'erreurs découvertes
(☛ critère a posteriori)
–
courbe du nb d'erreurs en fonction de la durée
–
arrêt sous un certain seuil (→)
–
séparation des erreurs par catégorie
Épuisement des ressources dédiées au test (☹)
–
effort humain et/ou durée
19
Génie logiciel – Test © 2005-2007 Renaud Marlet
Taux de découverte de bogues
et arrêt des tests
nb d'erreurs découvertes
par unité de temps
supplémentaire
Surface sous la courbe =
nb d'erreurs découvertes
ou encore à découvrir
seuil de
rentabilité
arrêt des tests
temps
20
Génie logiciel – Test © 2005-2007 Renaud Marlet
21
Rapport qualité prix
Nombre de cas de test arbitrairement grand
→ Nécessité d'un compromis
–
précision, bon degré de couverture, bonnes
informations pour les développeurs-testeurs
(reproductibilité, debug)
–
coût (définition, réalisation, passage, dépouillement)
–
temps d'exécution de tests
–
nb de ressources de calcul (machines) mobilisées
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Partition en classes d'équivalence (1)
●
Partition du domaine d'entrées (souvent infini) en
un nombre fini de classes d'équivalence
→ limite le nombre de tests
●
Définition d'une entrée représentative pour
chaque classe
–
●
idée : chaque représentant d'une classe a une même
« probabilité » que les autres de mettre en évidence
une erreur
Prendre en compte les données invalides comme
les données valides : toutes sont des entrées...
22
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Partition en classes d'équivalence (2)
Ex. fonction qui attend un numéro de département
(de métropole) entre 1 et 95 :
Validité des entrées
Classes d'équivalence
Représentant
[1, 95]
33
entrées invalides
<1
-12
entrées invalides
> 95
401
entrées valides
Ex. fonction qui attend une réponse oui/non :
Validité des entrées
Classes d'équivalence
Représentant
entrées valides
{oui}
“oui”
entrées valides
{non}
“non”
autre (ni oui ni non)
“casimir”
entrées invalides
23
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Partition en classes d'équivalence (3)
●
●
Découpage en classes
–
déduit de la spécification (→ travail d'interprétation)
–
en fonction d'un degré de finesse donné
Quantité de classes
–
compromis précision / coût / temps d'exécution
●
●
précision, bon degré de couverture, bonnes informations
pour les développeurs (debug)
coût (définition, réalisation, passage, dépouillement)
24
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Analyse aux bornes (1)
L'expérience prouve que
☛ Les erreurs se situent très souvent à frontières
de comportements différents
Par ex. :
●
indice de tableau tout juste trop grand ou trop petit
●
boucles avec une itération en trop ou en moins
●
comparaisons stricte au lieu de avec égalité, ou l'inverse
●
etc.
25
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Analyse aux bornes (2)
●
Sensibilité à la frontières de comportements
→ analyse précise aux bornes des classes
●
Plusieurs représentants par classe d'équivalence
une valeur « médiane » ordinaire
+ une ou plusieurs valeurs aux bornes
Aussi appelé « test aux limites »
26
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Analyse aux bornes (3)
Ex. fonction qui attend un numéro de département
(de métropole) entre 1 et 95 :
Validité
entrées valides
Classes d'équiv. Représentants +large couverture
[1, 95]
1, 48, 95
1, 2, 48, 94, 95
entrées invalides
<1
-12 ,0
-12, -1, 0
entrées invalides
> 95
96, 401
96, 97, 401
Ex. fonction qui attend une réponse oui/non :
Validité
Classes d'équivalence
Représentants
entrées valides
{oui}
“oui”
entrées valides
{non}
“non”
autre (ni oui ni non)
“ouii”, “mon”, “oui ”, “casimir”
entrées invalides
27
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Combinaison de valeurs d'entrée
●
●
Combinaison des classes d'équivalences
–
combinatoire exponentielle
–
précis mais coûteux et long (parfois trop)
Exemple
–
–
hypothèses pour une fonction f(x,y,z) :
●
2 classes d'équivalence pour chacun des x, y et z
●
représentants respectifs : x1,x2, y1,y2, z1,z2
combinaisons de cas à tester : (23 = 8)
●
(x1,y1,z1), (x1,y1,z2), (x1,y2,z1), (x1,y2,z2),
(x2,y1,z1), (x2,y1,z2), (x2,y2,z1), (x2,y2,z2)
28
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Combinaisons de valeurs d'entrée
●
Exploiter ce que doit faire la fonction
–
●
regrouper les combinaisons indépendantes
Ex. si f(x,y,z) = (g(x,y),h(y,z))
–
pour g(x,y) : (x1,y1), (x1,y2), (x2,y1), (x2,y2)
–
pour h(y,z) : (y1,z1), (y1,z2), (y2,z1), (y2,z2)
–
pour f(x,y,z) : (x1,y1,z1), (x1,y2,z1), (x2,y1,z2), (x2,y2,z2)
→ 4 combinaisons au lieu de 8
29
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Combinaison de valeurs d'entrée
●
Ex. conjonction : « si (x > 0 et y > 0 et z > 0) »
–
2 classes d'équivalence pour x, y, z : ]-∞,0] , ]0,+∞[
–
représentants aux limites (variables entières) : 0, 1
–
nombre de combinaisons = 23 = 8
●
●
(0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), (1,1,1)
Test aux limites sur l'expression « U et V et W » ?
→ examiner les différents cas de triplets de booléens
30
Génie logiciel – Test © 2005-2007 Renaud Marlet
31
Treillis des triplets de booléens
(vrai, vrai, vrai)
(faux, vrai, vrai)
(vrai, faux, vrai)
(vrai, vrai, faux)
(faux, faux, vrai)
(faux, vrai, faux)
(vrai, faux, faux)
(faux, faux, faux)
Génie logiciel – Test © 2005-2007 Renaud Marlet
Treillis des triplets de booléens et
conjonction
(vrai, vrai, vrai)
U et V et W = vrai
(faux, vrai, vrai)
(vrai, faux, vrai)
(vrai, vrai, faux)
(faux, faux, vrai)
(faux, vrai, faux)
(vrai, faux, faux)
(faux, faux, faux)
U et V et W = faux
32
Génie logiciel – Test © 2005-2007 Renaud Marlet
Treillis des triplets de booléens,
conjonction et valeurs aux limites
(vrai, vrai, vrai)
U et V et W = vrai
valeurs limites
(faux, vrai, vrai)
(vrai, faux, vrai)
(vrai, vrai, faux)
(faux, faux, vrai)
(faux, vrai, faux)
(vrai, faux, faux)
(faux, faux, faux)
U et V et W = faux
33
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Combinaison de valeurs d'entrée
●
●
Ex. conjonction : « si (x > 0 et y > 0 et z > 0) »
–
classes pour x, y, z : ]-∞,0] , ]0,+∞[
–
représentants aux limites : 0, 1 (soit 23 combinaisons)
Test aux limites sur la condition C = U et V et W
–
valeurs limites tq C = vrai
●
–
valeurs limites tq C = faux
●
–
(vrai, vrai, vrai)
(faux, vrai, vrai), (vrai, faux, vrai), (vrai, vrai, faux)
au final : 4 combinaisons pour (x,y,z) au lieu de 8
●
(1,1,1), (0,1,1), (1,0,1), (1,1,0)
34
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Combinaison de valeurs d'entrée
●
Ex. disjonction : « si (x > 0 ou y > 0 ou z > 0) »
–
2 classes d'équivalence pour x, y, z : ]-∞,0] , ]0,+∞[
–
représentants aux limites (variables entières) : 0, 1
–
nombre de combinaisons = 23 = 8
●
●
35
(0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), (1,1,1)
Test aux limites sur l'expression « U ou V ou W » ?
→ examiner les différents cas de triplets de booléens
Génie logiciel – Test © 2005-2007 Renaud Marlet
36
Treillis des triplets de booléens
(vrai, vrai, vrai)
(faux, vrai, vrai)
(vrai, faux, vrai)
(vrai, vrai, faux)
(faux, faux, vrai)
(faux, vrai, faux)
(vrai, faux, faux)
(faux, faux, faux)
Génie logiciel – Test © 2005-2007 Renaud Marlet
Treillis des triplets de booléens et
disjonction
(vrai, vrai, vrai)
U ou V ou W = vrai
(faux, vrai, vrai)
(vrai, faux, vrai)
(vrai, vrai, faux)
(faux, faux, vrai)
(faux, vrai, faux)
(vrai, faux, faux)
(faux, faux, faux)
U ou V ou W = faux
37
Génie logiciel – Test © 2005-2007 Renaud Marlet
Treillis des triplets de booléens et
disjonction et valeurs au limites
(vrai, vrai, vrai)
U ou V ou W = vrai
(faux, vrai, vrai)
(vrai, faux, vrai)
(vrai, vrai, faux)
(faux, faux, vrai)
(faux, vrai, faux)
(vrai, faux, faux)
valeurs limites
(faux, faux, faux)
U ou V ou W = faux
38
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Combinaison de valeurs d'entrée
●
●
Ex. disjonction : « si (x > 0 ou y > 0 ou z > 0) »
–
classes pour x, y, z : ]-∞,0] , ]0,+∞[
–
représentants aux limites : 0, 1 (soit 23 combinaisons)
Test aux limites sur la condition C = U ou V ou W
–
valeurs limites tq C = vrai
●
–
valeurs limites tq C = faux
●
–
(vrai, faux, faux), (faux, vrai, faux), (faux, faux, vrai)
(faux, faux, faux)
au final : 4 combinaisons pour (x,y,z) au lieu de 8
●
(1,0,0), (0,1,0), (0,0,1), (0,0,0)
39
Génie logiciel – Test © 2005-2007 Renaud Marlet
40
Test boîte blanche
●
exploite le code
→ nécessite le source
+ graphe de flot de contrôle, graphe de flot de données, ...
–
●
tests de portions de code (bloc, branche, etc.)
éventuellement, marquage des portions de code
–
testées
–
effectivement parcourues
→ taux de couverture
Génie logiciel – Test © 2005-2007 Renaud Marlet
Test fonctionnel :
Analyse de chemins
●
●
Basé sur le chemin d'exécution
–
boîte noire : d'après l'algorithme de la spécification
–
boîte blanche : d'après le graphe de flot de contrôle
Couverture
–
des branches (ou des instructions)
–
de séquences de branches
–
des chemins
–
...
41
Génie logiciel – Test © 2005-2007 Renaud Marlet
42
Couverture des branches
[branch coverage ou decision coverage]
vrai
C1
faux
X1
●
Toute branche est exécutée
au moins une fois
Y1
●
vrai
C2
X2
faux
Y2
Ex. valeurs tq (C1,C2) =
–
ou
T1=(vrai, vrai), T2=(faux, faux)
–
T1=(vrai, faux), T2=(faux, vrai)
→ 2 groupes de tests au choix
Z
Génie logiciel – Test © 2005-2007 Renaud Marlet
43
Couverture des instructions
[instruction coverage]
●
vrai
C1
faux
●
X1
Y1
Toute instruction est
exécutée au moins une fois
Idem couverture de branche
–
vrai
C2
X2
faux
●
Y2
Ex. valeurs tq (C1,C2) =
–
ou
–
Z
parcourir tous les noeuds
~ parcourir tous les arcs
T1=(vrai, vrai), T2=(faux, faux)
T1=(vrai, faux), T2=(faux, vrai)
→ 2 groupes de tests au choix
Génie logiciel – Test © 2005-2007 Renaud Marlet
44
Couverture des chemins (1)
[path coverage]
●
vrai
C1
faux
X1
Y1
vrai
C2
X2
Ex. valeurs tq (C1,C2) =
–
faux
Y2
Z
●
Toute chemin est exécuté
au moins une fois
T1=(vrai, vrai), T2=(vrai, faux),
T3=(faux,vrai), T4=(faux, faux)
→ 1 seul groupe de tests
(comportant 4 cas de tests)
Génie logiciel – Test © 2005-2007 Renaud Marlet
45
Couverture des chemins (2)
[path coverage]
●
vrai
X
→ chemins les plus représentatifs
→ limiter le nombre de boucles
Y
●
faux
C
vrai
Z
Couverture des chemins
impossible : nb chemins infini
Ex. (limite = 1) : valeurs tq
–
T1 : Citération1 = vrai
T2 : Citération1 = faux, Citération2 = vrai
→ 2 cas de tests
(pour la couverture de branches, 1 test suffit : T2)
Génie logiciel – Test © 2005-2007 Renaud Marlet
46
Analyse de chemins
Et aussi :
–
couverture des i-chemins
●
–
couverture des branches essentielles
●
–
réunion de chemins ne différant que par le nb d'itérations
boundary interior path testing
●
–
inutile d'ajouter des tests pour les passages obligés
structured path testing
●
–
portions linéaires de code suivies d'un saut
...
pour les chemins ayant au moins une itération : exécuter au
moins une fois les chemins différents pour une 1ère itération
Génie logiciel – Test © 2005-2007 Renaud Marlet
Analyse de flot de données (1)
●
●
Toute variable a des
–
points de définition, c.-à-d. affectations (x = 0;)
–
points d'utilisation dans des conditions logiques (x > 0)
–
points d'utilisation dans des instructions de calcul (x+3)
Couverture
–
de toutes les définitions
–
de toutes les utilisations dans des conditions logiques
–
de toutes les utilisations dans des calculs
–
définitions exécutées au moins une fois pour toutes les
utilisations qu'elle atteint, ...
47
Génie logiciel – Test © 2005-2007 Renaud Marlet
48
Analyse de flot de données (2)
Ex. définitions exécutées au moins une fois pour
toutes les utilisations qu'elle atteint → 4 cas
if (cond1)
x = exp1;
else
x = exp2;
if (cond2)
y = ... x ...;
else
y = ... x ...;
// définition 1 de x
// définition 2 de x
// utilisation 1 de x
// utilisation 2 de x
Génie logiciel – Test © 2005-2007 Renaud Marlet
49
Test intrusif
●
Instrumentation du code
–
identification des branches effectivement parcourues
(pour le test boîte blanche)
–
interrogation possible, en cours de test (c.-à-d.
d'exécution), de la valeur de certaines variables
→ fourniture de résultats de calcul intermédiaires
●
En général, pas le code final
–
#ifdef, ...
–
mais risque de différences de comportement
Génie logiciel – Test © 2005-2007 Renaud Marlet
50
Auto-test (1)
●
Assertion
–
●
vérification dynamique d'un invariant (propriété qui
doit toujours être vraie en un point d'exécution)
Ex. (dans une implémentation de String) :
assert(len >= 1);
lastChar = chars[len-1];
→ si len n'est pas plus grand que 1 au moment de
l'exécution, une erreur se produit
Génie logiciel – Test © 2005-2007 Renaud Marlet
51
Auto-test (2)
●
Suppression des assert dans le produit final
–
●
Certains langages disposent d'assertions
–
●
sinon ralentit l'exécution
Eiffel, Java (v1.5) → flag du compilateur
Sinon, implémentable avec des macros
#ifdef DEBUG
#define assert(cond) { if (!cond) error(); }
#else
#define assert(cond) /* assert ignoré */
#endif
Génie logiciel – Test © 2005-2007 Renaud Marlet
52
Questions
Mais
–
qui teste les tests ?
–
qui teste les tests de tests ?
–
...
–
et qui débogue les test ?
Génie logiciel – Test © 2005-2007 Renaud Marlet
53
Oracle de test
●
Prédire les valeurs de sorties correctes (attendues)
–
●
diagnostiquer la réussite ou l'échec
Implémentation
–
cas simples : valeurs codées en dur
–
cas complexes : valeurs calculées par simulateur/proto
●
maintenance plus facile en cas d'évolution de la spécification
☛ Ne pas tester les tests avec l'implémentation
–
vote à la majorité de 3 :
●
valeur simple, valeur simulée, valeur produite par le programme
Génie logiciel – Test © 2005-2007 Renaud Marlet
54
À retenir
●
Test = processus « destructif »
–
●
pas d'erreur trouvée (chez un autre) = échec
Notion de plan de test
–
poser le problème du compromis couverture/effort
●
Tests boîte noire / boîte blanche (code visible)
●
Tests fonctionnels :
●
–
partition des entrées, test aux limites, combinatoire
–
couverture des branches et chemins
Instrumentation, auto-test (assertion) et oracle

Documents pareils