Documente Academic
Documente Profesional
Documente Cultură
Avant-propos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XI
1.1
Chane de lerreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
1.3
1.3.1
1.3.2
1.3.3
Principe 3 Tester tt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.4
1.3.5
1.3.6
1.3.7
13
2.1
13
2.2
15
1.4
2.2.1
15
2.2.2
16
2.2.3
17
VI
2.2.4
2.3
18
19
2.3.1
Le dveloppement itratif UP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
2.3.2
Le dveloppement itratif XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
24
2.4
2.4.1
25
2.4.2
Le test dintgration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
2.4.3
31
2.4.4
33
35
2.5
2.5.1
36
2.5.2
38
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
41
3.1
42
2.6
3.1.1
Techniques alatoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.1.2
44
3.1.3
45
46
3.2
3.2.1
47
3.2.2
Lutilisation de mtriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
52
3.3
3.3.1
52
3.3.2
53
3.3.3
53
54
3.4
3.4.1
55
3.4.2
56
3.4.3
57
57
3.5
3.5.1
57
3.5.2
58
3.6
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
59
4.1
60
4.1.1
Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
4.1.2
Illustration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
4.1.3
Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
64
4.2
4.2.1
Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
4.2.2
65
4.2.3
67
4.2.4
Illustration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
4.2.5
Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
71
4.3
4.3.1
Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
4.3.2
73
4.3.3
Illustration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
4.3.4
Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
76
4.4
VII
4.4.1
Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
4.4.2
77
4.4.3
78
4.4.4
79
4.4.5
81
4.4.6
Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
85
4.5
4.5.1
Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
4.5.2
86
4.5.3
87
4.5.4
88
4.5.5
Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
4.6
VIII
91
5.1
92
5.1.1
Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
5.1.2
92
5.1.3
93
5.1.4
95
5.1.5
96
5.1.6
97
5.1.7
97
5.1.8
98
5.1.9
98
101
102
5.2
103
5.2.1
Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
103
5.2.2
104
5.2.3
105
5.2.4
108
5.3
112
5.4
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
113
115
6.1
115
6.2
119
6.3
Notion dintgrat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
125
6.4
128
6.4.1
Intgration verticale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
129
6.4.2
Intgration continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
133
6.5
137
6.6
139
6.6.1
141
6.6.2
La machine intgrer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
145
6.6.3
148
IX
6.6.4
151
6.6.5
Intgration dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
152
6.7
155
6.8
162
6.8.1
162
6.8.2
162
6.8.3
163
6.8.4
163
6.8.5
163
6.8.6
164
6.8.7
165
167
7.1
168
7.1.1
168
7.1.2
171
7.2
172
7.3
174
7.4
175
7.5
178
7.6
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
179
181
8.1
181
8.2
183
8.2.1
183
8.2.2
185
8.2.3
191
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
193
195
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
205
8.3
Exemple de QCM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
211
Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
219
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
221
Avant-propos
1. On pourra galement penser aux normes soucis humains crs par le dysfonctionnement du
logiciel de gestion de paie de larme Louvois mis en place en 2011.
XII
cas dutilisation possibles dun logiciel tant en gnral trs grand, il est tout la
fois illusoire de penser mener cette recherche derreur de manire empirique, mais
galement de vouloir prtendre lexhaustivit ; la bonne approche sera de nature
statistique, avec des stratgies bases sur les contextes demploi. Il faudra savoir
construire efficacement les cas de tests pertinents, cest--dire ceux permettant de
mettre en vidence rapidement les erreurs. Il faudra galement savoir dterminer
quel moment on peut arrter les tests sans crainte de ne pas avoir assez test afin de
garantir la qualit de service conforme au contrat de service. Ces jeux de tests peuvent
tre construits laide des textes sources du logiciel et/ou des dtails de son assemblage
ou, uniquement laide de ses spcifications. On parlera, selon les cas, de tests Botes
blanches ou Botes noires.
On le voit, tester un logiciel est un challenge aussi excitant que de le programmer,
et, qui tout comme la programmation, ne peut se faire sans une bonne assise technique ;
tester cest mener une exprimentation scientifique et il faut pour cela enthousiasme
mais aussi rigueur et mthode. Les mthodes les plus rcentes comme les mthodes
dites agiles ou leXtreme Programming insistent juste titre sur limportance des
tests et sur le dveloppement guid par les tests, i.e. le Test Driven Development .
Supplments en ligne
Retrouvez sur www.dunod.com/contenus-complementaires/9782100706082 les supplments en ligne qui compltent cet ouvrage. Il sagit dexercices corrigs, du corrig
comment du QCM, de complments sur les tests unitaires avec JUnit, des informations de mise niveau, des applications avances, des logiciels recommands, des
supports didactiques...
1
Quelques ides essentielles
sur les tests
Or, on ne sait pas, par construction, fabriquer des logiciels sans dfaut : lhomme
commet des erreurs et aucun programme ne peut gnrer de faon sre un autre
programme ou vrifier quun programme fait exactement ce pour quoi il est fait.
En effet, les limites thoriques montrent quil est impossible dans le cas gnral,
de construire un algorithme permettant de dire si deux programmes ralisent les
mmes fonctions (il sagit dun problme insoluble). La base de ce rsultat provient de
limpossibilit fabriquer un programme qui statue, sans se tromper, sur la terminaison
dun programme quelconque. Si tel tait le cas, et si lon notait Stop ce programme
et Stop(P), le rsultat de lanalyse de la terminaison dun programme P par Stop,
on pourrait construire un programme B contenant linstruction si Stop(B) alors
rentrer dans une boucle sans fin, sinon arrter . Ce programme B mettrait en dfaut
systmatiquement ce programme oracle Stop.
Devant ce constat dimpossibilit, diffrentes approches sont possibles :
1. se limiter construire des programmes trs simples que lon sait analyser de
faon certaine mais qui ne pourront rsoudre que des problmes limits ;
dfauts sans pour autant quil y ait convergence vers un logiciel fiable. De mme, tester
beaucoup en quantit et en temps nest pas ncessairement un gage de qualit. Exercer
sans cesse le mme code avec des jeux de valeurs similaires ne donne aucune garantie
quant la capacit dcouvrir des dfauts de comportement. Tester est une activit
complexe qui demande exprience et mthode et nous allons essayer maintenant de
cerner les quelques principes qui doivent guider toute activit de test.
+
2 32