Les tests logiciels
Fondamentaux
Bernard Homès
Hermes Science
Lavoisier
Avant-propos13
Chapitre 1. Principes fondamentaux17
1.1. Pourquoi les tests sont-ils nécessaires ?17
1.1.1. Contexte des systèmes logiciels17
1.1.2. Cause des défauts logiciels19
1.1.3. Rôle du test dans la vie des logiciels21
1.1.4. Tests et qualité22
1.1.5. Un peu de terminologie23
1.2. Qu'est-ce que le test ?24
1.2.1. Origine des défauts24
1.2.2. Objectifs habituels des tests25
1.2.3. Exemples d'objectifs de tests26
1.2.4. Test et débogage27
1.3. Paradoxes et grands principes27
1.3.1. Démontrer la présence de défauts28
1.3.2. Impossibilité de tests exhaustifs28
1.3.3. Tester le plus tôt possible28
1.3.4. Agrégation des défauts29
1.3.5. Paradoxe du pesticide29
1.3.6. Dépendance envers le contexte30
1.3.7. L'absence de défauts31
1.4. Processus de tests fondamentaux31
1.4.1. Planification32
1.4.2. Contrôle32
1.4.3. Analyse et conception des tests32
1.4.4. Implémentation des tests36
1.4.5. Exécution des tests36
1.4.6. Analyse des critères de sortie37
1.4.7. Reporting38
1.4.8. Activités de clôture38
1.5. Psychologie des tests39
1.5.1. Niveaux d'indépendance40
1.5.2. Adaptation aux objectifs41
1.5.3. Destructif ou constructif43
1.5.4. Compétences relationnelles43
1.5.5. Besoin de modifier les perspectives44
1.6. Testeurs et code d'éthique45
1.6.1. Public45
1.6.2. Client et employeur46
1.6.3. Produit47
1.6.4. Jugement48
1.6.5. Gestion49
1.6.6. Profession50
1.6.7. Collègues51
1.6.8. Aspect personnel51
1.7. Synthèse du chapitre52
1.8. Exemples de questions d'examens53
Chapitre 2. Les tests dans le cycle de vie des logiciels61
2.1. Modèles de cycles de développement61
2.1.1. Modèles séquentiels62
2.1.2. Modèles itératifs64
2.1.3. Modèle incrémental67
2.1.4. RAD68
2.1.5. Méthodes agiles69
2.1.6. Sélection du modèle de développement74
2.1.7. Positionnement des tests75
2.2. Niveaux de tests76
2.2.1. Tests de composants77
2.2.2. Tests d'intégration78
2.2.3. Tests système81
2.2.4. Tests d'acceptation82
2.2.5. Autres niveaux85
2.3. Types de tests85
2.3.1. Tests fonctionnels86
2.3.2. Tests non fonctionnels87
2.3.3. Tests basés sur la structure ou l'architecture du logiciel90
2.3.4. Tests liés aux changements91
2.3.5. Comparaisons et exemples92
2.4. Tests et maintenance93
2.4.1. Contexte de maintenance94
2.4.2. Maintenance évolutive95
2.4.3. Maintenance corrective96
2.4.4. Mise au rebut remplacement97
2.4.5. Politiques de tests de non-régression97
2.4.6. Contexte d'acceptation et de validation de SLA100
2.5. Les oracles100
2.5.1. Problématique des oracles101
2.5.2. Sources d'oracles101
2.5.3. Utilisation d'un oracle102
2.6. Cas particuliers103
2.6.1. Tests de performances103
2.6.2. Tests de maintenabilité103
2.7. Synthèse du chapitre104
2.8. Exemples de questions d'examens105
Chapitre 3. Techniques statiques113
3.1. Techniques statiques et processus de tests113
3.2. Processus de revue116
3.2.1. Types de revues117
3.2.2. Rôles et responsabilités lors de revues122
3.2.3. Phases des revues125
3.2.4. S'assurer du succès des revues138
3.2.5. Comparaison des types de revues139
3.3. Analyse statique outillée141
3.3.1. Types d'analyses statiques141
3.3.2. Types de défauts identifiables146
3.3.3. Analyse du flot de données147
3.4. Valeur ajoutée des activités statiques152
3.5. Synthèse du chapitre153
3.6. Exemples de questions d'examens153
Chapitre 4. Technique de conception de tests159
4.1. Processus de développement des tests161
4.1.1. Terminologie161
4.1.2. Traçabilité162
4.2. Catégories de techniques de tests165
4.2.1. Boîte noire, blanche ou grise166
4.2.2. Techniques basées sur l'expérience167
4.2.3. Caractéristiques des tests168
4.2.4. Limitations et hypothèses169
4.3. Techniques boîte noire170
4.3.1. Partitions d'équivalences171
4.3.2. Analyse des valeurs limites177
4.3.3. Tables de décisions181
4.3.4. Autres techniques combinatoires185
4.3.5. Diagrammes d'états et transitions d'états186
4.3.6. Cas d'utilisation193
4.3.7. Limitations et hypothèses195
4.4. Activités basées sur la structure195
4.4.1. Couverture des instructions197
4.4.2. Couverture des branches et décisions203
4.4.3. Autres types de couverture206
4.4.4. Couverture MC/DC208
4.4.5. Limitations et hypothèses des tests basés sur la structure210
4.4.6. Niveau de couverture et critères de sortie210
4.5. Techniques basées sur l'expérience211
4.5.1. Attaques211
4.5.2. Taxonomies d'erreurs213
4.5.3. Estimation d'erreurs et tests ad hoc214
4.5.4. Tests exploratoires214
4.5.5. Hypothèses et limitations216
4.6. Quelle(s) technique(s) sélectionner ?216
4.7. Synthèse du chapitre218
4.8. Exemple de questions d'examens219
Chapitre 5. Gestion des tests233
5.1. Politiques d'organisation des tests233
5.1.1. Niveaux d'indépendance233
5.1.2. Rôles et responsabilités236
5.1.3. Aspects humains et contractuels238
5.2. Planifier et estimer la charge de tests239
5.2.1. Activités d'organisation et d'évaluation242
5.2.2. Activités de planification et d'ordonnancement253
5.2.3. Documentation des tests254
5.2.4. Critères de début et de fin d'activité de tests259
5.3. Suivi et contrôle des activités de tests264
5.4. Reporting267
5.4.1. Quoi rapporter, à qui, comment ?268
5.4.2. Statistiques et graphiques269
5.5. Processus transverses272
5.5.1. Définition des données de tests272
5.5.2. Gestion de configuration273
5.5.3. Gestion des changements et modifications274
5.6. Gestion des risques274
5.6.1. Principes de gestion des risques275
5.6.2. Risques projet et risques produit279
5.6.3. Introduction à la gestion des risques281
5.7. Gestion des anomalies283
5.7.1. Introduction à la gestion des anomalies284
5.7.2. Identification des anomalies285
5.7.3. Actions appliquées aux anomalies290
5.7.4. Disposition des anomalies290
5.8. Synthèse du chapitre291
5.9. Exemple de questions d'examens292
Chapitre 6. Outils et automatisation305
6.1. Typologie d'outils305
6.1.1. Types de classifications d'outils306
6.1.2. Outils de support à la gestion des tests306
6.1.3. Outils de support à la gestion des exigences307
6.1.4. Outils de support aux tests statiques307
6.1.5. Outils de modélisation308
6.1.6. Outils de support à la conception des tests et de données de tests308
6.1.7. Outils de support à l'exécution des tests309
6.1.8. Outils de support à l'environnement des tests309
6.1.9. Outils de comparaison des données de tests310
6.1.10. Outils de mesure de la couverture des tests310
6.1.11. Autres outils de support des tests311
6.2. Problèmes liés aux outils311
6.2.1. Avantages et risques liés aux outils312
6.2.2. Considérations spécifiques pour certains outils313
6.3. Sélection et introduction d'outils317
6.3.1. Principes majeurs318
6.3.2. Processus de sélection d'outils318
6.3.3. Implémentation d'un outil321
6.3.4. Acheter ou concevoir ses outils ?322
6.4. Synthèse du chapitre323
6.5. Exemples de questions d'examens324
Chapitre 7. Examen blanc329
Chapitre 8. Gabarits et modèles343
8.1. Plan de tests maître343
8.2. Plan de tests344
8.2.1. Plan de tests v1998344
8.2.2. Plan de tests v2008345
8.3. Dossier de tests346
8.3.1. Dossier de tests v1998346
8.3.2. Dossier de tests v2008346
8.4. Cas de tests346
8.4.1. Cas de tests v1998346
8.4.2. Cas de tests v2008347
8.5. Procédures de tests347
8.5.1. Procédure de tests v1998347
8.5.2. Procédure de tests v2008347
8.6. Log de test348
8.6.1. Log de test v1998348
8.6.2. Log de test v2008348
8.7. Fiche d'anomalies348
8.7.1. Fiche d'incidents v1998348
8.7.2. Fiche d'anomalies v2008349
8.8. Rapport de tests349
8.8.1. Rapport de tests v1998349
8.8.2. Rapport de tests intermédiaires de biveau v2008350
8.8.3. Rapport de tests de niveau v2008350
8.8.4. Rapport de tests maître v2008350
Chapitre 9. Corrigés des questions351
9.1. Correction des questions de fin de chapitre351
9.2. Correction de l'examen blanc352
Glossaire355
Bibliographie371
Index375