Chapitre 1 : Processus de test
1.1 Introduction
Dans le syllabus ISTQB® Niveau Fondation, le processus fondamental de test comprend les activités suivantes :
- Planification et contrôle
- Analyse et conception
- Implémentation et exécution
- Évaluation des critères de sortie et information
- Activités de clôture des tests
Pour les syllabi du Niveau Avancé, certaines de ces activités sont abordées séparément, afin de fournir des précisions complémentaires et une optimisation des processus, mieux intégrés avec le cycle de vie de développement logiciel, et pour augmenter l’efficacité du pilotage et contrôle des tests. Les activités sont désormais les suivantes:
- Gestion, pilotage et contrôle
- Analyse
- Conception
- Implémentation
- Exécution
- Évaluation des critères de sortie et information
- Activités de clôture des tests
Ces activité peuvent être mises en œuvre de façon séquentielle ou, pour certaines, être mise en œuvre en parallèle, p. ex., la conception peut se faire en parallèle de l’implémentation (p. ex., test exploratoire). Déterminer les bons tests et cas de test, les concevoir et les exécuter sont les principales activités de l’Analyste de Test. Même s’il est important de comprendre les autres activités du processus de test, la majeure partie du travail de l’Analyste de Test est faite lors des activités d’analyse, de conception, d’implémentation et d’exécution dans le projet de test.
Les testeurs avancés devront faire face à un nombre important de challenges lors de la mise en œuvre des différents aspects du test décrits dans ce syllabus, dans le contexte de leurs propres organisations, équipes et tâches. Les différents cycles de vie de développement logiciel, de même que le type de système testé, doivent être pris en compte car ils peuvent influencer l’approche de test.
1.2 Le Test dans le Cycle de Vie de Développement Logiciel
Il est nécessaire de considérer et de définir dans la stratégie de test l’approche de test qui sera appliquée au cycle de vie sur le long terme. Le moment auquel intervient l’Analyste de Test est différent d’un cycle de vie à un autre et son degré d’implication, le temps passé, l’information disponible et les attentes varient également beaucoup. Comme les processus de test ne sont pas isolés, l’Analyste de Test doit connaître les différentes sources d’information concernant les autres domaines comme:
- L’ingénierie et la gestion des exigences – les revues d’exigences
- La gestion de projet – entrée pour l’organisation du planning
- La gestion de configuration et du changement – test de vérification des livraisons, contrôle de version
- Le développement logiciel – anticipation de ce qui arrive à des moments précis
- La maintenance logicielle – gestion des défauts, temps de redressement (c.à.d. le temps écoulé entre la découverte et la résolution d’un défaut)
- Le support technique – documentation précise des solutions de contournement
- La production de la documentation technique (p. ex., les spécifications de conception de bases de données) – les éléments en entrée pour ces documents de même que la revue technique des documents.
Les activités de test doivent être cohérentes avec le cycle de vie de développement logiciel choisi, qu’il soit séquentiel, itératif, ou incrémental. Par exemple, dans le modèle séquentiel en V, le processus de test fondamental de l’ISTQB® pourraient s’organiser de la façon suivante:
- La gestion des tests système se déroule en même temps que la gestion de projet, et le contrôle du test continue jusqu’à ce que l’exécution des tests système et la clôture soient terminés.
- L’analyse et la conception des tests système se déroulent en même temps que la spécification des exigences, la conception du système et de l’architecture (à haut niveau), et la conception des composants (de bas niveau).
- L’implémentation de l’environnement de test système (p. ex., environnements d’exécution, bancs de test) peut commencer lors de la conception du système, même si elle sera essentiellement organisée en parallèle du codage et du test de composant, avec le travail d’implémentation des tests système, se prolongeant souvent jusqu’aux derniers jours avant le démarrage de l’exécution des tests système.
- L’exécution des tests système commence lorsque les critères d’entrée pour le test système sont tous satisfaits (ou écartés), ce qui signifie généralement qu’au moins le test de composant et souvent aussi les tests d’intégration de composant sont terminés. L’exécution des tests système se poursuit jusqu’à ce que les critères de sortie du test système soient satisfaits
- L’évaluation des critères de sortie et la communication des résultats du test système se font tout au long de l’exécution des tests système, généralement avec une fréquence et un degré d’urgence plus élevé à l’approche de la fin du projet.
- Les activités de clôture des tests système se produisent une fois que les critères de sortie des tests système sont satisfaits et que l’exécution des tests système est terminée, même si elles peuvent parfois être repoussées jusqu’à ce que les tests d’acceptation et toutes les activités du projet soient terminés.
Des modèles itératifs et incrémentaux peuvent ne pas suivre le même ordre dans l’enchaînement des tâches et peuvent en exclure certaines. Par exemple, un modèle itératif peut utiliser à chaque itération un sous-ensemble des processus de test standard. L’analyse et la conception, l’implémentation et l’exécution, l’évaluation et le reporting peuvent être faits pour chaque itération, alors que la gestion est organisée au début du projet et que le reporting de clôture est fait à la fin.
Dans un projet Agile, il est fréquent d’utiliser un processus moins formel et plus proche des relations qui facilitent les changements dans le projet. Comme Agile est un processus “allégé” il y a moins de documentation de test, mais des méthodes de communication rapide comme les “stand up meetings” journaliers (appelé “stand up” car ils sont très rapide, généralement 10-15 minutes, de façon à ce que personne de s’assoit et à ce que tout le monde reste impliqué).
Les projets Agile, parmi tous les modèles de cycle de vie, demandent l’implication le plus tôt possible de l’Analyste de Test. L’Analyste de Test devrait s’attendre à être impliqué dès le début du projet, en travaillant avec les développeurs au moment où ils font l’architecture et la conception initiales. Les revues peuvent ne pas être formalisées mais sont permanentes au cours de l’évolution du logiciel. Une implication tout au long du projet est nécessaire et l’Analyste de Test doit être disponible pour l’équipe. Grâce à cette immersion, les membres d’une équipe Agile sont, en général, affectés à un unique projet et entièrement impliqués dans tous les aspects du projet.
Les modèles itératifs/incrémentaux vont de l’approche Agile, où le changement est prévu avec l’évolution du logiciel, à des modèles de développement itératifs/incrémentaux existant au sein d’un modèle en V (parfois appelés itératifs intégrés). Dans le cas d’un modèle itératif intégré, l’Analyste de Test devrait s’attendre à être impliqué dans le planning standard et dans les aspects liés à la conception, mais il aura ensuite un rôle plus interactif lorsque le logiciel sera développé, testé, modifié et déployé.
Quel que soit le cycle de vie de développement logiciel utilisé, l’Analyste de Test doit comprendre les attentes relatives à son implication et au temps qu’il y consacrera. Beaucoup de modèles hybrides sont utilisés, tels que le modèle itératif inclus dans un modèle en V comme indiqué ci-dessus. L’Analyste de Test doit souvent définir le rôle le plus efficace et s’orienter vers lui pour intervenir au meilleur moment, plutôt que de rester dépendant d’un modèle particulier.
1.3 – Gestion, pilotage et contrôle des tests
Cette section aborde les processus de gestion, pilotage et contrôle des tests.
1.3.1 Gestion des tests
La gestion des tests se produit principalement au commencement de l’effort de test et demande l’identification et la gestion de toutes les activités et ressources requises pour satisfaire à la mission et aux objectifs identifiés dans la stratégie de test. Pendant la gestion des tests, il est important que l’Analyste de Test travaille avec le Test Manager, pour aborder et prévoir les points suivants:
- S’assurer que les plans de test ne soient pas réduits à du test fonctionnel. Tous les types de test doivent être considérés dans le plan de test et planifiés en conséquence. Par exemple, en plus du test fonctionnel, l’Analyste de Test peut être responsable des tests d’utilisabilité. Ce type de test doit aussi être traité dans le plan de test.
- Revoir les estimations de test avec le Test Manager et assurer le temps et le budget adéquats à la fourniture et à la validation de l’environnement de test.
- Prévoir des tests de configuration. Si plusieurs types de processeurs, de systèmes d’exploitation, de machines virtuelles, de navigateurs et différents périphériques peuvent être combinés en de nombreuses configurations, il faut prévoir d’appliquer les techniques de test qui apporteront la meilleure couverture de ces combinaisons.
- Prévoir de tester la documentation. Le logiciel est fourni aux utilisateurs avec de la documentation. Celle-ci doit être précise pour être utile. L’Analyste de Test doit allouer du temps à la vérification de la documentation et peut être amené à travailler avec des rédacteurs techniques pour préparer les données à utiliser pour des copies d’écran et clips vidéo.
- Prévoir de tester les procédures d’installation. Les procédures d’installation, de même que les procédures de sauvegarde et de restauration, doivent être suffisamment testées. Ces procédures peuvent être plus critiques que le logiciel qui, s’il ne peut pas être installé, ne sera pas utilisé. Cela peut être difficile à organiser puisque l’Analyste de Test réalise souvent les premiers tests sur un système ayant été pré-configuré sans que les processus d’installation ne soient en place.
- Prévoir le test de façon cohérente avec le cycle de vie Une exécution séquentielle des tâches ne convient pas à la plupart des plannings. De nombreuses tâches ont souvent besoin d’être réalisées (au moins en partie) de façon concurrente. L’Analyste de Test doit connaître le cycle de vie sélectionné et les attentes relatives à son implication durant la conception, le développement et l’implémentation du logiciel. Cela inclut aussi l’attribution de temps aux tests de régression et de confirmation.
- Allouer le temps nécessaire à l’identification et à l’analyse des risques avec l’équipe fonctionnelle transverse. Même si en général, il n’est pas responsable de l’organisation de sessions de gestion des risques, l’Analyste de Test devrait s’attendre à y être fortement impliqué.
Des relations complexes peuvent exister entre les bases de test, les conditions de test et les cas de test telles que des relations n-n peuvent exister entre ces livrables. Ces relations doivent être comprises pour permettre une mise en œuvre efficace de la gestion et du contrôle des tests. L’Analyste de Test est en général la meilleure personne pour définir ces relations et séparer autant que possible les dépendances.
1.3.2 Pilotage et Contrôle des tests
Même si l’activité de pilotage et de contrôle des tests appartient en général au Test Manager, l’Analyste de Test contribue aux mesures permettant le contrôle.
Un certain nombre de données quantitatives devraient être collectées durant le cycle de vie de développement logiciel (p. ex., le pourcentage d’activités de gestion des tests terminées, le pourcentage de couverture atteint, le nombre de cas de test passés avec succès ou en échec). Dans tous les cas, une référence (c.à.d., une référence standard) doit être définie et ensuite le progrès sera mesuré par rapport à cette référence. Alors que le Test Manager sera concerné par la compilation et le reporting de l’information mesurée pour les métriques, l’Analyste de Test collecte l’information pour chaque métrique. Chaque cas de test finalisé, chaque défaut rapporté par écrit, chaque jalon atteint, apparaîtront dans les métriques globales du projet. L’information saisie dans les différents outils de suivi devra être aussi précise que possible afin que les métriques reflètent la réalité.
Des métriques précises permettent aux responsables de gérer un projet (piloter) et d’amorcer les changements nécessaires (contrôle). Par exemple, un grand nombre de défauts rapportés pour un domaine du logiciel peut signifier qu’un effort de test supplémentaire est requis sur ce domaine. L’information relative à la couverture des exigences et des risques (traçabilité) peut être utilisée pour prioriser le travail restant et allouer des ressources. L’information relative à la cause racine est utilisée pour identifier des domaines d’amélioration dans les processus. Si les données enregistrées sont précises, le projet peut être contrôlé et une information précise sur le statut peut être diffusée aux parties prenantes. Les projets à venir peuvent être planifiés plus efficacement lorsque les données issues des projets précédents sont prises en compte. Les utilisations possibles de données précises sont extrêmement nombreuses. Il appartient à l’Analyste de Test de s’assurer que les données sont précises, délivrées à temps et objectives.
1.4 – Analyse des tests
Pendant la gestion des tests, le périmètre du projet de test est défini. L’Analyste de Test utilise cette définition du périmètre pour:
- Analyser les bases de test
- Identifier les conditions de test
Pour permettre à l’Analyste de Test de mener efficacement l’analyse des tests, les critères d’entrée suivants devraient être satisfaits:
- Il existe un document décrivant l’objet de test qui pourra servir de bases de test
- Ce document a fait l’objet d’une revue avec des résultats satisfaisants et a été mis à jour comme cela est nécessaire, à la suite de la revue
- Un budget et un planning raisonnables sont définis pour accomplir le travail de test restant pour cet objet de test
Les conditions de tests sont identifiées en général par l’analyse des bases de test et des objectifs de test. Dans certaines situations, où la documentation peut être ancienne ou inexistante, les conditions de test peuvent être identifiées en parlant aux parties prenantes concernées (p. ex., lors de réunions de travail ou lors du « sprint planning »). Ces conditions sont ensuite utilisées pour déterminer quoi tester, en utilisant les techniques de conception des tests identifiées dans la stratégie de test et/ou dans le plan de test.
Même si les conditions de test sont en général spécifiques à l’élément à tester, l’Analyste de Test doit faire les considérations suivantes :
- Il est en général recommandé de définir des conditions de test à différents niveaux de détail. Initialement, des conditions de haut-niveau sont définies pour définir les principales cibles du test, telles que “fonctionnalités de l’écran x”. Par la suite, des conditions plus détaillées sont identifiées comme base de cas de test spécifiques, telles que “l’écran x rejette un numéro de compte dont la longueur est d’un caractère inférieure à la longueur correcte”. Utiliser ce type d’approche hiérarchique pour définir des conditions de test peut aider à assurer que la couverture est suffisante pour des éléments de haut niveau.
- Si des risques produit ont été définis, alors les conditions de test nécessaires pour traiter chaque risque produit devront être identifiées et reliées au risque.
A la fin des activités d’analyse des tests l’Analyste de Test doit savoir quels tests spécifiques doivent être conçus pour satisfaire aux besoins des différents domaines du projet de test.
1.5 Conception des tests
Toujours en cohérence avec le périmètre défini lors de la gestion des tests, le processus de test se poursuit avec la conception, par l’Analyste de Test, des tests qui seront développés et exécutés. Le processus de conception des tests comprend les activités suivantes:
- Déterminer pour quel domaine de test des cas de test de bas niveau (concrets) ou de haut niveau (logiques) seront le plus adaptés
- Déterminer la ou les technique(s) de conception des tests qui permettront la couverture de test nécessaire
- Créer les cas de test qui solliciteront les conditions de test identifiées
Les critères de priorisation identifiés lors de l’analyse de risque et lors de la gestion des tests doivent être appliqués tout au long du processus, de l’activité d’analyse et de conception à l’activité d’implémentation et d’exécution.
Selon les types de test à concevoir, l’un des critères d’entrée pour la conception des tests peut être la disponibilité des outils qui seront utilisés pendant le travail de conception.
Lors de la conception des tests, il est important de se souvenir des points suivants :
- Certains éléments de test seront mieux couverts en définissant simplement des conditions de test plutôt qu’en allant plus loin dans la définition de scripts de test. Dans ce cas, les conditions de test doivent être définies pour être utilisées comme un guide lors de l’exécution de tests sans script.
- Les critères de passage/échec doivent être clairement identifiés.
- Les tests doivent être conçus de façon à être compréhensibles par d’autres testeurs, et pas seulement par leur auteur. Si l’auteur n’est pas la personne qui exécute le test, d’autres testeurs auront besoin de lire et de comprendre les tests spécifiés pour comprendre les objectifs de test et l’importance relative du test.
- Les tests doivent aussi être compréhensibles par d’autres parties prenantes comme les développeurs, qui devront faire des revues de tests, et les auditeurs, qui pourront avoir à approuver les tests.
- Les tests doivent être conçus pour couvrir toutes les interactions du logiciel avec les acteurs (p. ex., les utilisateurs finaux, d’autres systèmes), et pas uniquement les interactions se produisant par l’intermédiaire de la partie visible de l’interface utilisateur. Les communications entre processus, l’exécution de batchs et autres interruptions interagissent également avec le logiciel et peuvent contenir des défauts. C’est pourquoi l’Analyste de Test doit concevoir des tests pour réduire ces risques.
- Les tests doivent être conçus pour tester les interfaces entre les différents objets de test.
1.5.1 Cas de test Concrets et cas de test Logiques (K2)
L’une des tâches de l’Analyste de Test est de déterminer les types de cas de test les plus adaptés à une situation donnée. Des cas de test concrets apportent toute l’information et les procédures nécessaires au testeur pour l’exécution du cas de test (y compris les données à utiliser) et la vérification des résultats. Les cas de test concrets sont utiles lorsque les exigences sont bien définies, quand l’équipe de test a peu d’expérience et quand une vérification externe des tests, comme lors d’un audit, est requise. Les cas de test concrets sont tout à fait reproductibles (c.à.d. qu’un testeur différent obtiendra les mêmes résultats), mais nécessiteront aussi un important effort de maintenance et pourront avoir tendance à limiter l’ingéniosité du testeur pendant l’exécution.
Les cas de test logiques apportent des directives sur ce qui doit être testé, mais permettent à l’Analyste de Test de faire varier les données prévues et même la procédure à suivre lors de l’exécution du test. Les cas de test logiques peuvent apporter une meilleure couverture que les cas de test concrets puisqu’ils varieront d’une certaine façon à chaque exécution. Cela ne les rend pas reproductibles. Les cas de test logiques seront intéressants lorsque les exigences sont mal définies, quand l’Analyste de Test qui exécutera les tests a de l’expérience avec le test et aussi avec le produit, et quand il n’est pas nécessaire d’avoir une documentation formelle (p. ex., aucune réalisation d’audit). Les cas de test logiques peuvent être définis tôt dans le processus d’exigences, avant même que les exigences ne soient définies. Ces cas de test peuvent être utilisés pour développer des cas de test concrets quand les exigences sont mieux définies et plus stables. Dans le cas, la création des cas de test est faite de façon séquentielle, allant du logique au concret, bien que seuls les cas de test concrets soient exécutés.
1.5.2 Création des Cas de Test (K4)
Les cas de test sont conçus par l’élaboration progressive et le raffinement des conditions de test identifiées, en utilisant des techniques de conception des tests (voir chapitre 3) identifiées dans la stratégie de test et/ou dans le plan de test. Les cas de test doivent être répétables, vérifiables et reliés aux bases de test (p. ex., les exigences), comme cela est indiqué dans la stratégie de test utilisée.
La conception d’un cas de test comprend l’identification des éléments suivants :
- Objectif
- Pré-conditions, telles que des exigences pour un environnement de test projet ou localisé et le plan pour sa livraison, l’état du système,
- Les exigences en données de test (à la fois pour les données en entrée des cas de test et pour les données qui doivent être présentes dans le système pour permettre l’exécution des tests)
- Les résultats attendus
- Les post-conditions, comme les données modifiées, l’état du système, les “triggers” (déclencheurs) pour les traitements suivants, ect.
Le niveau de détail des cas de test, qui impacte le coût de développement et le niveau de répétabilité, devraient être précisés avant la création effective des cas de test. Des cas de test moins détaillés laisseront à l’Analyste de Test plus de flexibilité lors de l’exécution des cas de test tout en lui donnant l’opportunité d’enquêter sur des domaines potentiellement intéressants. Avec peu de détail, cependant, les tests sont moins reproductibles.
La définition du résultat attendu d’un test constitue souvent une difficulté particulière. Le faire manuellement est souvent pénible et sujet à l’erreur. Si possible, il est préférable de trouver ou d’identifier un oracle de test automatisé. En identifiant les résultats attendus, les testeurs se préoccupent non seulement des sorties visibles à l’écran, mais aussi des données et des post- conditions pour l’environnement. Si les bases de test sont clairement identifiées, définir le bon résultat devrait en théorie être simple. Cependant, les bases de test sont souvent vagues, contradictoires, insuffisantes pour couvrir les domaines clés, ou totalement inexistantes. Dans ce cas, un Analyste de Test doit posséder la bonne expertise métier ou y avoir accès . De plus, même lorsque les bases de test sont bien spécifiées, des interactions complexes relatives à des stimuli et réponses complexes peuvent rendre difficile la définition des résultats attendus. Par conséquent, il est essentiel d’avoir un oracle de test. Exécuter des cas de test sans un moyen de déterminer l’exactitude des résultats présente une valeur ajoutée et un bénéfice très faibles, et est souvent à l’origine de faux rapports d’erreur ou d’une confiance infondée dans le système.
Les activités décrites ci-dessus peuvent être appliquées à tous les niveaux de test, même si les bases de test varient. Par exemple, les tests d’acceptation utilisateur peuvent être initialement basés sur la spécification des exigences, sur les cas d’utilisation, et sur les définitions de processus métier, tandis que les tests de composant seront plutôt basés sur des spécifications de conception de bas niveau, des « user stories » et le code lui-même. Il est important de se souvenir que ces activités se déroulent sur tous les niveaux de test, même si la cible du test peut varier. Par exemple, le test fonctionnel au niveau unitaire est conçu pour garantir qu’un composant en particulier fournisse la fonctionnalité telle que spécifiée dans la conception détaillée de ce composant. Le test fonctionnel au niveau intégration, consiste à vérifier que les composants interagissent les uns avec les autres et apportent la fonctionnalité par le biais de leur intégration. Au niveau système, les fonctionnalités de bout-en-bout doivent être l’objet du test. Lors de l’analyse et de la conception des tests, il est important de se souvenir du niveau visé par les tests et de l’objectif du test. Cela aide à déterminer le niveau de détail nécessaire, de même que tout outil pouvant être utile (p. ex., pilotes et bouchons au niveau composant).
Pendant le développement des conditions de test et des cas de test, une certaine quantité de documentation est créée, sous forme de livrables. En pratique, le degré de documentation des livrables varie considérablement. Cela peut être affecté par les éléments suivants:
- Risques projet (ce qui doit/ne doit pas être documenté)
- La “valeur ajoutée” que la documentation apporte au projet
- Les standards à suivre et/ou les régulations à satisfaire
- Le modèle de cycle de vie utilisé (p. ex., une approche Agile vise le « juste assez » en termes de documentation)
- Les exigences relatives à la traçabilité des bases de test par l’intermédiaire de l’analyse des tests et de la conception.
Selon le périmètre du test, l’analyse des tests aborde les caractéristiques de qualité pour le (ou les) objet(s) de test. Le standard ISO 25000 [ISO25000] (qui remplace ISO 9126) constitue une référence très utile. D’ autres caractéristiques peuvent s’appliquer lors du test de systèmes matériels/logiciels.
Les processus d’analyse et de conception des tests peuvent être améliorés si on les couple à des revues et à de l’analyse statique. En fait, les activités d’analyse et de conception des tests sont souvent une forme de test statique parce que des problèmes peuvent être trouvés dans des documents de base pendant ces activités. L’analyse et la conception des tests basées sur la spécification des exigences est une très bonne façon de se préparer à une réunion de revue des exigences. Le fait de lire les exigences pour créer des cas de test nécessite une bonne compréhension des exigences et une capacité à déterminer une façon d’évaluer la satisfaction de celles-ci. Cette activité permet souvent de découvrir des exigences imprécises, ou non-testables, ou même sans critère d’acceptation. Des produits comme les cas de test, les analyses de risques et les plans de test peuvent aussi faire l’objet de revues.
Certains projets, comme ceux qui suivent un cycle de vie Agile, peuvent avoir des exigences très peu documentées. Elles peuvent prendre la forme de « user stories »qui décrivent des parties de fonctionnalités, petites mais démontrables. Une « »user story» » devrait inclure une définition des critères d’acceptation. Si le logiciel permet de démontrer que les critères d’acceptation sont satisfaits, il est en général considéré comme prêt pour l’intégration avec les autres fonctionnalités développées, à moins qu’il n’ait déjà été intégré pour démontrer sa fonctionnalité.
Pendant la conception des tests, les exigences relatives à l’infrastructure de test peuvent être définies, même si en pratique, elles ne peuvent être finalisées avant l’implémentation des tests. Il est utile de rappeler que l’infrastructure des tests ne se limite pas aux objets de test et au « testware ». Par exemple, les exigences d’infrastructure peuvent inclure des salles, des équipements, du personnel, du logiciel, des outils, des périphériques, des équipements de communications, des autorisations utilisateurs, et tout autre élément nécessaire à l’exécution des tests.
Les critères de sortie pour l’analyse des tests et la conception des tests vont varier en fonction des paramètres du projet mais tous les éléments discutés dans ces deux sections devraient être pris en compte par rapport aux critères de sortie définis. Il est important que les critères soient mesurables et qu’ils permettent d’assurer que tous les éléments et la préparation requise pour les étapes suivantes aient été fournis.
1.6 – Implémentation des tests (K2)
L’implémentation des tests est l’aboutissement de la conception des tests. Cela comprend la création de tests automatisés, l’organisation des tests (à la fois manuels et automatisés) dans un ordre d’exécution, la finalisation des données et des environnements de test, et la création d’un planning d’exécution des tests comprenant l’affectation des ressources, pour permettre le démarrage de l’exécution des tests. Cela implique également de vérifier, par rapport à des critères d’entrée explicites et implicites pour le niveau de test en question, et de s’assurer que les critères de sortie de la précédente étape dans le processus ont été satisfaits. Si les critères de sortie n’ont pas été satisfaits, pour le niveau de test ou pour une étape dans le processus de test, l’effort d’implémentation des tests sera probablement affecté par des retards, par une qualité insuffisante ou par un effort supplémentaire imprévu. Il est important de s’assurer que tous les critères de sortie ont été satisfaits avant de commencer l’implémentation des tests.
Plusieurs éléments peuvent être pris en compte dans la définition de l’ordre d’exécution. Dans certains cas, il est intéressant d’organiser les cas de test en suites de test (c.à.d., un groupe de cas de test). Cela permet d’organiser le test de façon à ce que certains cas de test soient exécutés ensemble. Si une stratégie de test basée sur les risques est en place, la priorité des risques peut conditionner l’ordre d’exécution des cas de test. D’ autres facteurs peuvent déterminer l’ordre d’exécution, par exemple, la disponibilité des bonnes personnes, de l’équipement, des données et des fonctionnalités à tester. Le code est fréquemment livré en différentes lots et l’effort de test doit être coordonné avec l’ordre dans lequel les différentes parties du code sont disponibles pour le test. Dans des modèles de cycle de vie incrémental en particulier, il est important que l’Analyste de Test se synchronise avec l’équipe de développement pour s’assurer que le logiciel soit livré dans un ordre permettant le test. Lors de l’implémentation des tests, Les Analystes de Test devraient définir et confirmer l’ordre dans lequel les tests manuels et automatisés devront être exécutés, en vérifiant avec attention les contraintes pouvant impliquer un ordre d’exécution particulier des tests. Les dépendances doivent être documentées et vérifiées.
Le niveau de détail et la complexité du travail fait lors de l’implémentation des tests peuvent être influencés par le détail des cas de test et les conditions de test. Dans certains cas, des contraintes réglementaires sont applicables, et les tests doivent apporter des preuves du respect des standards applicables, tels que les standards DO-178B « United States Federal Aviation Administration’s »
Comme indiqué plus haut, le test a besoin de données de test et, dans certains cas, ces ensembles de données peuvent être très grands. Lors de l’implémentation, les Analystes de Test créent des entrées et des données d’environnement pour alimenter les bases de données et autres référentiels du même type. Les Analystes de Test créent aussi les données à utiliser dans le cadre d’une automatisation pilotée par les données, de même que dans le cadre du test manuel.
L’implémentation des tests concerne aussi l’environnement de test(s). A ce stade, le ou les environnement(s) doivent être entièrement en place et vérifiés avant l’exécution des tests. Il est essentiel d’avoir un environnement de test “adapté au besoin”, (c.à.d., que l’environnement de test doit permettre de mettre en évidence les défauts présents lors du test, de fonctionner normalement en l’absence d’erreurs, et de reproduire de façon adéquate l’environnement de produit ou de l’utilisateur final pour les niveaux de test les plus hauts). Il peut être nécessaire de modifier l’environnement de test pendant l’exécution des tests en fonction de changements anticipés ou non, des résultats de test ou d’autres considérations. Si l’environnement change pendant l’exécution, il est important d’évaluer l’impact des changements sur les tests ayant déjà été exécutés.
Pendant l’implémentation des tests, les testeurs doivent s’assurer que les personnes responsables de la création et de la maintenance de l’environnement de test soient identifiées et disponibles, et que tous le testware , les outils de support au test et les processus associés soient prêts à l’usage. Cela comprend, la gestion de configuration, l’enregistrement des tests et leur gestion. De plus, les Analystes de Test doivent vérifier les procédures de collecte des données permettant l’évaluation des critères de sortie et le reporting des résultats de test.
Il est prudent d’utiliser une approche équilibrée pour l’implémentation des tests, telle qu’elle aura été définie lors de la gestion des tests. Par exemple, des stratégies de test analytiques basées sur les risques sont souvent associées à des stratégies de test dynamiques. Dans ce cas, un certain pourcentage de l’effort de test est affecté à du test qui ne suit pas des scripts de test prédéfinis (test « non-scriptés»).
Le test non-scripté ne doit pas être utilisé par hasard ou sans but précis car il ne pourra être contrôlé en termes de durée et de couverture que s’il est réglemente et planifié. Au fil des années, les testeurs ont développé différentes techniques basées sur l’expérience, telles que les attaques, l’estimation d’erreur, et le test exploratoire. L’analyse des tests, la conception des tests, et l’implémentation des tests ont toujours lieu mais se produisent durant l’exécution des tests. Avec de telles stratégies de test dynamiques, le résultat de chaque test influence l’analyse, la conception et l’implémentation des tests suivants. Même si ces stratégies sont simples et souvent efficaces pour trouver des défauts, il y a des inconvénients. Ces techniques nécessitent l’expertise de l’Analyste de Test, leur durée est difficile à prévoir, la couverture est difficile à suivre et la répétabilité peut ne pas être assurée en l’absence de bonne documentation et d’un outil de support.
1.7 – Exécution des tests (K3)
L’exécution des tests commence lorsque l’objet de test est livré et que les critères d’entrée pour l’exécution des tests sont satisfaits (ou abandonnés). Les tests devraient être exécutés conformément à ce qui a été prévu lors de l’implémentation des tests, mais l’Analyste de Test devrait disposer du temps nécessaire pour assurer la couverture de scénarios de test supplémentaires intéressants et des comportements pouvant être observés lors du test (toute défaillance observée doit être décrite avec les éventuelles divergences par rapport au scénario de test initialement décrit et tout élément nécessaire à sa reproduction). Cette intégration de techniques pour des tests scriptés et non-scriptés (p. ex., exploratoire) permet de se prémunir de certains problèmes dus à des divergences entre le script et le test à effectuer en pratique. Cela aide à contourner le paradoxe du pesticide.
Au cœur de l’activité d’exécution des tests se trouve la comparaison entre les résultats obtenus et les résultats attendus. Les Analystes de Test doivent être attentifs et rester concentrés sur ces tâches, sans quoi tout le travail de conception et d’implémentation des tests peut être perdu si des défaillances ne sont pas relevées (faux-négatif) ou si des comportements corrects sont classés comme incorrects (faux-positif). Si les résultats attendus et obtenus ne correspondent pas, c’est qu’un incident est survenu. Les incidents doivent être attentivement examinés pour déterminer leur cause (qui peut être ou ne pas être un défaut dans l’objet de test) et pour collecter les données nécessaires pour aider à la résolution de l’incident (voir Chapitre 6 pour plus de détails sur la gestion des défauts).
Quand une défaillance est identifiée, la documentation des tests (spécification de test, cas de test, etc.) devrait être revue avec attention pour être vérifiée. Un document de test peut être incorrect pour différentes raisons. S’il est incorrect, il devrait être corrigé et le test ré-exécuté. Comme des changements dans les bases et objet de test peuvent rendre un cas de test incorrect, même après plusieurs exécutions passantes, les testeurs devraient toujours avoir en tête que les résultats observés peuvent être dus à un test incorrect.
Pendant l’exécution des tests, les résultats de test doivent être enregistrés correctement. Les tests ayant été exécutés mais sans enregistrement des résultats peuvent avoir à être exécutés à nouveau pour identifier le bon résultat, ce qui entraînera de l’inefficacité et des retards. (Noter qu’un enregistrement/log adéquat peut intégrer l’information relative aux problèmes de couverture et de répétabilité associés à des techniques de test comme les tests exploratoires). Comme l’objet de test, le « testware », et l’environnement de tests peuvent évoluer, l’enregistrement doit préciser la version spécifique testée, de même que la configuration précise de l’environnement. L’inscription des tests (Test Logging) apporte un enregistrement chronologique de détails pertinent sur l’exécution des tests.
L’enregistrement des résultats (Results logging) s’applique à la fois aux tests individuels et aux activités ou événements de test. Chaque test devrait être identifié de façon unique et son statut enregistré au moment de l’exécution des tests. Tout événement affectant l’exécution des tests devrait aussi être enregistré. Une information suffisante devrait être enregistrée pour permettre la mesure de la couverture et la documentation des motifs de retard ou d’interruption dans le test. De plus l’information doit être enregistrée pour permettre le contrôle du test, le reporting sur l’avancement, la mesure des critères de sortie, et l’amélioration du processus de test.
L’inscription/enregistrement (Logging) varie en fonction du niveau de test et de la stratégie. Par exemple, avec des tests de composant automatisés, les tests automatisés devront générer la plupart de l’information à enregistrer. Avec du test manuel, l’Analyste de Test enregistrera l’information relative à l’exécution des tests, en général dans un outil de gestion des tests qui permet de suivre l’information sur l’exécution des tests. Dans certains cas, comme avec l’implémentation des tests, la quantité d’information enregistrée sur l’exécution des tests dépend d’exigences réglementaires ou propres à un audit.
Dans certains cas, les utilisateurs ou les clients peuvent participer à l’exécution des tests. Cela peut contribuer à augmenter leur confiance dans le logiciel, même si cela présuppose que ces tests trouvent peu de défauts. Une telle supposition n’est en général pas applicable aux premiers niveaux de test mais le sera pour les tests d’acceptation.
Les éléments spécifiques qui suivent doivent être pris en compte lors de l’exécution des tests:
- Relever et investiguer des éléments étranges non-significatifs. Des observations ou résultats pouvant sembler étranges sont souvent indicateurs de défauts qui, comme des icebergs, menacent sous la surface.
- Vérifier que le produit ne fait pas ce qu’il n’est pas censé faire. Vérifier que le produit fait ce qu’il est censé faire correspond à une préoccupation classique de test, mais l’Analyste de Test doit aussi être sûr que le produit n’adopte pas un mauvais comportement en faisant quelque chose qu’il ne devrait pas faire (par exemple, une fonction supplémentaire non souhaitée).
- Construire la suite de test et veiller à sa mise à jour et à son évolution dans le temps. Le code va évoluer et des tests supplémentaires seront nécessaires pour couvrir ces nouvelles fonctionnalités, de même que pour vérifier les régressions dans les autres parties du logiciel. Des manques dans le test sont souvent découverts pendant l’exécution. Construire la suite de test est un processus continu.
- Prendre des notes pour le prochain effort de test. Les tâches de test ne se terminent pas lorsque le logiciel est fourni aux utilisateurs ou distribué sur le marché. Une nouvelle version ou livraison du logiciel sera probablement produite, donc, la connaissance doit être conservée et transférée aux testeurs en charge du prochain effort de test.
- Ne pas s’attendre à rejouer tous les tests Il est irréaliste de penser que tous les tests manuels seront rejoués. Si un problème semble survenir, l’Analyste de Test doit l’étudier et le répertorier plutôt que de penser qu’il sera détecté par une prochaine exécution des cas de test.
- Utiliser les données de l’outil de suivi des défauts pour des cas de test supplémentaires. Penser à créer des cas de test pour des défauts découverts lors de tests non-scriptés ou exploratoires et les ajouter à la suite de test de régression.
- Trouver les défauts avant les tests de régression. Le temps pour les tests de régression est souvent limité et trouver des défauts pendant le test de régression peut entraîner des retards de planning. Les tests de régression, en général, ne trouvent pas la majeure partie des défauts, principalement car il s’agit de tests qui ont déjà été exécutés (p. ex., pour une version précédente du logiciel) et des défauts devraient avoir été détectés lors de ces précédentes exécutions. Cela ne signifie pas que les tests de régression sont inutiles mais seulement que l’efficacité des tests de régression, en terme de capacité de détection de nouveaux défauts, est plus basse que celle des autres tests.
1.8 – Évaluation des critères de sortie et reporting (K2)
Selon le point de vue du processus de test, le suivi de l’avancement du test consiste à collecter le bon ensemble d’information permettant de faire des rapports relatifs aux exigences. Cela implique la mesure de l’avancement jusqu’à l’achèvement. Quand les critères de sortie sont définis au moment de la planification, il peut y avoir une séparation des critères «doit obligatoirement » et « devrait ». Par exemple, le critère peut indiquer « aucun défaut de « priorité-1 » ou de « priorité 2 » et, 95% de taux de succès sur tous les cas de test ».Dans ce cas, une défaillance devant satisfaire au critère « doit obligatoirement » pourra faire échouer le critère de sortie même si 93% de taux de passage pourrait permettre au projet de passer au niveau suivant. Le critère de sortie doit être clairement défini afin de pouvoir être évalué objectivement.
L’Analyste de Test est responsable de la fourniture de l’information utilisée par le Test Manager pour évaluer la satisfaction des critères de sortie et pour assurer la précision des données. Si, par exemple, le système de gestion des tests fournit les statuts suivants pour la complétude des cas de test :
- Passé
- En échec
- Passé avec exception
Alors l’Analyste de Test doit être très clair sur la signification de chacun de ces statuts afin de les utiliser à bon escient. “Passé avec exception” veut-il dire qu’un défaut a été trouvé mais qu’il n’affecte pas les fonctionnalités de système? Comment classer un défaut d’utilisabilité qui perturbe l’utilisateur? Si le taux de succès est un critère de sortie impératif, alors, classer un défaut « En échec » plutôt que
« Passé avec exception » sera un facteur critique. Une attention particulière doit aussi être accordée aux cas de test ayant le statut « En échec » mais dont la cause de la défaillance n’est pas un défaut (p. ex., l’environnement de test n’a pas été correctement configuré) S’il y a le moindre risque de confusion avec les métriques suivies ou l’utilisation des différents statuts, l’Analyste de Test doit clarifier cela avec le Test Manager afin que l’information puisse être suivie de façon précise et consistante tout au long du projet.
Il est fréquent de demander à l’Analyste de Test un rapport durant les cycles de test de même qu’une contribution à l’élaboration du rapport final à la fin du test. Cela peut demander la collecte de métriques à partir des systèmes de gestion des défauts et de test, de même que l’évaluation de la couverture et de l’avancement global. L’Analyste de Test doit être capable d’utiliser les outils de reporting et de fournir l’information demandée au Test Manager pour lui permettre d’extraire l’information dont il a besoin.
1.9 Activités de Clôture des tests (K2)
Une fois l’exécution des tests terminée, les sorties principales de l’effort de test devraient être collectées et soit transmises à la bonne personne, soit archivées. L’ensemble constitue les activités de clôture des tests. L’Analyste de Test devrait s’attendre à être impliqué dans la remise des livrables à ceux qui en ont besoin. Par exemple, les défauts connus, reportés ou acceptés devraient être communiqués à ceux qui en auront besoin. Par exemple, les défauts connus, reportés ou acceptés devraient être communiqués à ceux qui utiliseront le système ou en feront le support. Les tests et environnements de tests devraient être donnés aux responsables des tests de maintenance. Un autre livrable peut être un ensemble de tests de régression (automatisé ou manuel). L’information sur les livrables du test doit être clairement documentée, avec les liens nécessaires et une gestion appropriée des droits d’accès.
L’Analyste de Test devrait aussi participer aux réunions de rétrospective (“lessons learned”) où les leçons importantes (tirées du projet de test ou plus généralement du cycle de vie de développement logiciel) peuvent être documentées, accompagnées de plans pour renforcer les bonnes pratiques et éliminer, ou au moins contrôler, les mauvaises. L’Analyste de Test est une source importante d’information et de savoir pour ces réunions et doit y participer si des éléments destinés à l’amélioration du processus doivent être collectés. Si seul le Test Manager participe à la réunion, l’Analyste de Test doit lui fournir la bonne information afin qu’il puisse présenter une image précise du projet.
Il est également nécessaire d’archiver dans le système de gestion de configuration, les résultats, les enregistrements (logs), les rapports et tout autre document ou livrable. Cette tâche revient souvent à l’Analyste de Test et constitue une importante activité de clôture des tests, en particulier si un projet futur a besoin d’utiliser l’information.
Même si c’est en général le Test Manager qui détermine l’information qui doit être archivée, l’Analyste de Test devrait aussi se demander quelle information serait nécessaire si le projet devait recommencer dans le futur. Penser à cela à la fin du projet peut permettre d’économiser des mois d’effort si le projet recommence plus tard ou avec une autre équipe.
Chapitre 2 : Gestion des tests - Responsabilités de l'analyste de test
2.1 Introduction
Bien qu’il y ait de nombreux domaines dans lesquels l’Analyste de Test interagit avec le Test Manager et lui fournit des données, cette section se concentre sur les domaines du processus de test dans lesquels l’Analyste de Test joue un rôle majeur. Le Test Manager ira chercher auprès de l’Analyste de Test l’information dont il a besoin.
2.2 Contrôle et Supervision de l’Avancement des tests (K2)
L’avancement des tests peut être supervisé selon cinq dimensions primaires:
- Risques produit (qualité)
- Défauts
- Tests
- Couverture
- Confiance
Les risques produit, les défauts, les tests, et la couverture peuvent être mesurés et sont souvent mesurés et rapportés de différentes façons pendant le projet ou l’opération par l’Analyste de Test. La confiance, bien qu’étant mesurable au travers d’études, est en général rapportée de façon subjective. Collecter les informations nécessaires pour alimenter ces métriques fait partie du travail quotidien de l’Analyste de Test. Il est important de ce souvenir que l’exactitude de ces données est critique puisque des données inexactes généreront une information inexacte et pourront aboutir à des conclusions inexactes. Dans le pire des cas, des données inexactes provoqueront de mauvaises décisions des responsables et nuiront à la crédibilité de l’équipe de test.
S’il utilise une approche de test basée sur les risques, l’Analyste de Test devrait suivre:
- Les risques ayant été réduits par le test
- Les risques considérés comme non-réduits
Suivre la réduction des risques se fait souvent avec un outil qui suit aussi la réalisation des tests (p. ex., outils de gestion des tests). Cela demande à ce que les risques identifiés soient liés aux conditions de test, elles-mêmes liées aux cas de test qui réduiront les risques (si les cas de test sont exécutés avec succès). Ainsi, l’information sur la réduction des risques est mise à jour automatiquement quand les cas de test sont mis à jour. Cela peut se faire pour les tests manuels et pour les tests automatisés.
Le suivi des défauts se fait en général avec un outil de suivi des défauts. Quand les défauts sont enregistrés, l’information pour classifier chaque défaut est aussi enregistrée. Cette information est utilisée pour produire des tendances et des graphiques indiquant l’avancement du test et la qualité du logiciel. L’information de classification est discutée de façon plus détaillée dans le chapitre « Gestion des Défauts ». Le cycle de vie utilisé peut avoir un effet sur la quantité de documentation enregistrée et sur les méthodes utilisées pour enregistrer l’information.
Pendant le test, l’information sur le statut des cas de test doit être enregistrée. Cela est, en général, fait avec un outil de gestion des tests mais peut aussi se faire avec des moyens manuels si nécessaire. L’information sur les cas de test peut inclure :
- Le statut de création des cas de test (p. ex., conçu, revu)
- Le statut d’exécution des cas de test (p. ex., passé avec succès, en échec, bloqué, non- exécuté)
- L’information d’exécution des cas de test (p. ex., date et heure, nom du testeur, données utilisées)
- Les artefacts d’exécution des cas de test (p. ex., copies d’écran, logs)
Comme avec les risques, les cas de test devraient être liés aux exigences qu’ils testent. Il est important pour l’Analyste de Test de se souvenir que si un cas de test A est lié à une exigence A, et que c’est le seul cas de test lié à cette exigence, alors si le cas de test A est exécuté avec succès, l’exigence A sera considérées comme satisfaite. Cela peut être juste ou non. Dans beaucoup de cas, plusieurs cas de test sont nécessaires au test rigoureux d’une exigence mais, à cause du manque de temps, seul un sous-ensemble de ces tests est en général créé. Par exemple, si 20 cas de test étaient nécessaires pour bien tester l’implémentation d’une exigence, mais que seulement 10 ont été créés et exécutés, alors la couverture de l’exigence sera de 100% alors qu’en réalité seulement 50% de couverture a été atteint. Un suivi exact de la couverture et du statut des exigences elles-mêmes peut être utilisé comme une mesure de confiance.
La quantité d’information à enregistrer (et son niveau de détail) dépend de plusieurs facteurs, comme le modèle de cycle de vie de développement logiciel. Par exemple, sur des projets Agile l’information enregistrée sur le statut sera moins importante, avec l’interaction forte de l’équipe et davantage de communication en face-à-face.
2.3 Tests Distribués, Externalisés et Internalisés (K2)
Dans beaucoup de cas, seule une partie de l’effort de test est fourni par une même équipe composée de collègues appartenant au reste de l’équipe du projet et située au même et unique que le reste de l’équipe du projet. Si l’effort de test est mené à différents endroits, cet effort de test peut être appelé
« distribué ». S’il est mené dans un endroit unique il peut être qualifié de « centralisé ». Si l’effort de test est mené à plusieurs endroits par des personnes n’étant pas employées de l’entreprise et qui ne sont pas co-localisées avec l’équipe projet, l’effort de test peut être appelé « outsourcé / externalisé ». Si l’effort de test est mené par des personnes qui ne sont pas co-localisées avec l’équipe projet mais qui ne sont pas des employés de l’entreprise, cet effort de test peut être appelé internalisé.
S’il travaille dans un projet ayant une partie de l’équipe répartie à différents endroits, voire dans différentes sociétés, l’Analyste de Test doit porter particulièrement attention à l’efficacité de la communication et au transfert d’information. Certaines organisations travaillent sur un modèle « 24 heures de test » dans lequel l’équipe située dans une zone horaire est censée passer le travail à l’équipe d’une autre zone horaire pour permettre un test continu sur 24 heures. Transmettre et recevoir le travail demande une planification spéciale de la part de l’Analyste de Test. Si bonne gestion est importante pour comprendre les responsabilités, il est aussi primordial de s’assurer que la bonne information est disponible.
Lorsque la communication verbale n’est pas possible, la communication écrite doit suffire. Cela signifie que le courriel, les rapports de statut et une utilisation efficace des outils de gestion des tests et de suivi des défauts doivent être en place et utilisés. Si l’outil de gestion des tests permet d’affecter les tests à des personnes, il peut aussi fonctionner comme un outil de planification et d’organisation du travail entre les personnes. Des défauts enregistrés de façon précise peuvent être transmis à des collègues pour être suivis, si nécessaire. Une utilisation efficace de ces systèmes de communication est vitale pour une organisation qui ne peut pas s’appuyer sur les interactions quotidiennes entre les personnes.
2.4 – Tâches de l’analyste de test dans le test basé sur les risques (K3)
2.4.1 Vue générale
Le Test Manager porte souvent la responsabilité d’établir et de gérer une stratégie de test basée sur les risques. Le Test Manager demandera en général l’implication de l’Analyste de Test pour s’assurer que l’approche basée sur les risques est correctement mise en œuvre.
L’Analyste de Test devrait être impliqué activement dans les tâches suivantes du test basé sur les risques:
- L’identification des risques
- L’évaluation des risques
- La réduction des risques
Ces tâches sont réalisées de façon itérative tout au long du cycle de vie du projet pour traiter les risques émergents, modifier les priorités, régulièrement évaluer les risques et communiquer sur leurs statuts.
Les Analystes de Test devraient travailler dans le cadre du test basé sur les risques défini pour le projet par le Test Manager. Ils devraient utiliser leur connaissance des risques métier inhérents au projet tels que les risques liés à la sécurité, aux aspects financiers et économiques ainsi qu’aux facteurs politiques.
2.4.2 Identification des Risques
En faisant appel au plus large ensemble possible de parties prenantes, le processus d’identification des risques pourra détecter le plus grand nombre de risques réels. Comme les Analystes de Test possèdent souvent un savoir unique sur le domaine métier du système sous test, ils sont particulièrement bien armés pour mener des interviews d’experts du domaine et d’utilisateurs, pour mener des évaluations indépendantes, pour utiliser ou faire utiliser des templates de risques, organiser des réunions de travail sur les risques, organiser des réunions de réflexion (« brainstorming ») avec des utilisateurs actuels et futurs, définir des check-lists de test et faire appel à l’expérience passée sur des projets ou systèmes similaires. L’Analyste de Test devrait notamment travailler de façon rapprochée avec les utilisateurs et des experts du domaine pour déterminer les zones de risques métier qui devront être traitées pendant le test. L’Analyste de Test peut aussi être particulièrement utile pour déterminer les effets potentiels des risques sur les utilisateurs et les parties prenantes.
Comme exemples de risques pouvant être identifiés dans un projet, on peut citer:
- Des problèmes d’exactitude avec une fonctionnalité logicielle, (p. ex., des calculs incorrects)
- Des problèmes d’utilisabilité, (p. ex., des raccourcis clavier insuffisants)
- Des problèmes d’apprentissage, (p. ex., le manque d’instructions pour les utilisateurs à des points de décisions importants)
Des considérations relatives au test des caractéristiques-qualité spécifiques sont couvertes au chapitre 4 de ce syllabus.
2.4.3 Evaluation des Risques
Alors que l’identification des risques consiste à identifier le plus possible de risques pertinents, l’évaluation des risques est l’étude de ces risques. En particulier, elle consiste à catégoriser chaque risque et déterminer la probabilité et l’impact associés à celui-ci.
Déterminer le niveau de risque consiste généralement à évaluer, pour chaque risque, la probabilité d’occurrence et l’impact de l’occurrence. La probabilité d’occurrence est généralement interprétée comme la probabilité qu’a le problème potentiel de se produire dans le système sous test et d’être observé quand le système sera en production. En d’autres termes, cela est lié à un risque technique. L’Analyste Technique de Test devrait contribuer à chercher et à comprendre le niveau de risque technique potentiel pour chaque risque alors que l’Analyste de Test contribue à comprendre l’impact métier potentiel si le problème se produit.
L’impact de l’occurrence est souvent interprété comme la sévérité de l’effet sur les utilisateurs, les clients, ou les autres parties prenantes. En d’autres termes cela est lié au risque métier. L’Analyste de Test devrait contribuer à identifier et à évaluer, pour chaque risque, l’impact potentiel sur le métier ou l’utilisateur. Comme facteurs influençant le risque métier, on peut citer :
- La fréquence d’utilisation de la fonctionnalité touchée
- La perte financière
- Les éventuelles pertes ou responsabilités financières, écologiques ou sociales
- Les sanctions légales, civiles ou pénales
- Les problèmes de sécurité
- La perte de licences
- Le manque de contournements raisonnables
- La visibilité sur la fonctionnalité
- La visibilité de l’échec conduisant à une publicité négative et à une dégradation possible de l’image de marque
- La perte de clients
A partir de l’information disponible sur les risques, l’Analyste de Test doit établir les niveaux de risques métier selon les consignes données par le Test Manager. Ils peuvent être classés avec des attributs (p. ex.., faible, moyen, haut) ou des chiffres. A moins qu’il existe une façon objective de mesurer le risque sur une échelle définie, cela ne peut pas être une mesure quantitative. Il est en général très difficile de réaliser une mesure précise de la probabilité et des conséquences en termes de coût.
Des nombres peuvent être affectés comme valeurs quantitative mais cela ne donnera pas une mesure quantitative exacte. Par exemple, le Test Manager peut décider que les risques métier seront classés avec une valeur allant de 1 à 10, avec 1 correspondant à l’impact métier le plus haut et donc le plus risqué. Une fois que la probabilité (l’évaluation du risque technique) et l’impact (l’évaluation du risque métier) ont été affectés, ces valeurs peuvent être multipliées pour déterminer une valeur globale pour chaque risque. Cette valeur globale est alors utilisée pour prioriser les activités de réduction des risques. Certains modèles de test basé sur les risques, tels que PRISMA®, ne combinent pas les valeurs de risques, ce qui permet à l’approche de test de traiter les risques techniques et métier séparément.
2.4.4 Réduction des Risques
Pendant le projet, les Analystes de Test devraient se charger de:
- Réduire les risques en utilisant des cas de test bien conçus démontrant de façon claire que les tests passent avec succès ou non, et en participant à des revues d’éléments logiciels tels que les exigences, les conceptions et la documentation utilisateur
- Mettre en œuvre de façon efficace les activités de réduction des risques identifiées dans la stratégie de test et le plan de test
- Réévaluer les risques connus à partir d’informations additionnelles collectées lors de l’avancement du projet, en révisant la probabilité, l’impact, ou les deux, selon l’intérêt.
- Prendre en compte de nouveaux risques identifiés à partir de l’information issue du test
Quand on parle de risques-produit (qualité), on considère que le test est une façon de réduire ces risques. En trouvant des défauts, les testeurs réduisent le risque car ils apportent de la visibilité sur les défauts et les façons de les traiter avant la livraison. Si les testeurs ne trouvent pas de défaut, le test réduit alors le risque en assurant que, sous certaines conditions (c.à.d., les conditions testées), le système fonctionne correctement. Les Analystes de Test aident à définir les options de réduction des risques en recherchant les façons de collecter des données exactes, en créant et en testant des scénarios utilisateurs réalistes et en menant des études sur l’utilisabilité.
2.4.4.1 Prioriser les Tests
Le niveau de risque est aussi utilisé pour prioriser les tests. Un Analyste de Test peut préciser qu’il y a un risque élevé dans le domaine de l’exactitude des transactions dans un système de comptabilité. Comme conséquence, pour réduire le risque, le testeur pourrait travailler avec d’autres experts métier pour collecter un nombre important de données pouvant être traitées afin de vérifier leur exactitude. De même, un Analyste de Test pourrait préciser que des problèmes d’utilisabilité constituent un risque important pour un nouveau produit. Plutôt que d’attendre les tests d’acceptation pour découvrir des problèmes, l’Analyste de Test pourrait prioriser du test d’utilisabilité afin qu’il soit fait pendant le niveau intégration et ainsi aider à identifier et résoudre les problèmes d’utilisabilité tôt dans le test. Cette priorisation doit être envisagée le plus tôt possible dans l’étape de gestion des tests afin que le planning puisse prévoir le test nécessaire au bon moment.
Dans certains cas, tous les tests sur les risques les plus élevés sont exécutés avant les tests associés à des risques de niveau inférieur et les tests sont exécutés strictement selon l’ordre de risques (souvent appelé “parcours en profondeur”); dans d’autres cas, une méthode d’échantillonnage est utilisée pour sélectionner un échantillon de tests parmi tous les risques identifiés en utilisant le poids des risques pour pondérer la sélection et en cherchant à couvrir chaque risque au moins une fois (souvent appelé “parcours en largeur ”).
Que le test basé sur les risques soit mené en profondeur ou en largeur, il est possible que le temps alloué au test soit consommé avant que tous les tests n’aient été exécutés. Le test basé sur les risques permet aux testeurs de délivrer aux responsables des rapports en termes de niveau de risque restant à un certain moment, et permet aux responsables de décider de prolonger le test ou de reporter le risque restant sur les utilisateurs, clients, helpdesk/support technique, et/ou sur l’équipe opérationnelle.
2.4.4.2 Ajuster le Test pour les Cycles de Tests suivants
L’évaluation des risques n’est pas une activité réalisée une seule fois avant le début de l’implémentation des tests; c’est un processus continu. Chaque cycle de test prévu doit faire l’objet d’une nouvelle analyse de risque pour prendre en compte des facteurs tels que:
- Toute modification ou tout ajout dans les risques produit
- Les domaines instables ou sujets aux défauts, découverts durant le test
- Les risques par rapport aux défauts corrigés
- Les défauts typiques trouvés pendant le test
- Les domaines ayant été sous-testé (faible couverture de test)
Si du temps additionnel est alloué au test, il est envisageable d’étendre la couverture des risques aux domaines ayant un niveau de risque plus bas.
2.4.1 Vue générale
Le Test Manager porte souvent la responsabilité d’établir et de gérer une stratégie de test basée sur les risques. Le Test Manager demandera en général l’implication de l’Analyste de Test pour s’assurer que l’approche basée sur les risques est correctement mise en œuvre.
L’Analyste de Test devrait être impliqué activement dans les tâches suivantes du test basé sur les risques:
- L’identification des risques
- L’évaluation des risques
- La réduction des risques
Ces tâches sont réalisées de façon itérative tout au long du cycle de vie du projet pour traiter les risques émergents, modifier les priorités, régulièrement évaluer les risques et communiquer sur leurs statuts.
Les Analystes de Test devraient travailler dans le cadre du test basé sur les risques défini pour le projet par le Test Manager. Ils devraient utiliser leur connaissance des risques métier inhérents au projet tels que les risques liés à la sécurité, aux aspects financiers et économiques ainsi qu’aux facteurs politiques.
2.4.2 Identification des Risques
En faisant appel au plus large ensemble possible de parties prenantes, le processus d’identification des risques pourra détecter le plus grand nombre de risques réels. Comme les Analystes de Test possèdent souvent un savoir unique sur le domaine métier du système sous test, ils sont particulièrement bien armés pour mener des interviews d’experts du domaine et d’utilisateurs, pour mener des évaluations indépendantes, pour utiliser ou faire utiliser des templates de risques, organiser des réunions de travail sur les risques, organiser des réunions de réflexion (« brainstorming ») avec des utilisateurs actuels et futurs, définir des check-lists de test et faire appel à l’expérience passée sur des projets ou systèmes similaires. L’Analyste de Test devrait notamment travailler de façon rapprochée avec les utilisateurs et des experts du domaine pour déterminer les zones de risques métier qui devront être traitées pendant le test. L’Analyste de Test peut aussi être particulièrement utile pour déterminer les effets potentiels des risques sur les utilisateurs et les parties prenantes.
Comme exemples de risques pouvant être identifiés dans un projet, on peut citer:
- Des problèmes d’exactitude avec une fonctionnalité logicielle, (p. ex., des calculs incorrects)
- Des problèmes d’utilisabilité, (p. ex., des raccourcis clavier insuffisants)
- Des problèmes d’apprentissage, (p. ex., le manque d’instructions pour les utilisateurs à des points de décisions importants)
Des considérations relatives au test des caractéristiques-qualité spécifiques sont couvertes au chapitre 4 de ce syllabus.
2.4.3 Evaluation des Risques
Alors que l’identification des risques consiste à identifier le plus possible de risques pertinents, l’évaluation des risques est l’étude de ces risques. En particulier, elle consiste à catégoriser chaque risque et déterminer la probabilité et l’impact associés à celui-ci.
Déterminer le niveau de risque consiste généralement à évaluer, pour chaque risque, la probabilité d’occurrence et l’impact de l’occurrence. La probabilité d’occurrence est généralement interprétée comme la probabilité qu’a le problème potentiel de se produire dans le système sous test et d’être observé quand le système sera en production. En d’autres termes, cela est lié à un risque technique. L’Analyste Technique de Test devrait contribuer à chercher et à comprendre le niveau de risque technique potentiel pour chaque risque alors que l’Analyste de Test contribue à comprendre l’impact métier potentiel si le problème se produit.
L’impact de l’occurrence est souvent interprété comme la sévérité de l’effet sur les utilisateurs, les clients, ou les autres parties prenantes. En d’autres termes cela est lié au risque métier. L’Analyste de Test devrait contribuer à identifier et à évaluer, pour chaque risque, l’impact potentiel sur le métier ou l’utilisateur. Comme facteurs influençant le risque métier, on peut citer :
- La fréquence d’utilisation de la fonctionnalité touchée
- La perte financière
- Les éventuelles pertes ou responsabilités financières, écologiques ou sociales
- Les sanctions légales, civiles ou pénales
- Les problèmes de sécurité
- La perte de licences
- Le manque de contournements raisonnables
- La visibilité sur la fonctionnalité
- La visibilité de l’échec conduisant à une publicité négative et à une dégradation possible de l’image de marque
- La perte de clients
A partir de l’information disponible sur les risques, l’Analyste de Test doit établir les niveaux de risques métier selon les consignes données par le Test Manager. Ils peuvent être classés avec des attributs (p. ex.., faible, moyen, haut) ou des chiffres. A moins qu’il existe une façon objective de mesurer le risque sur une échelle définie, cela ne peut pas être une mesure quantitative. Il est en général très difficile de réaliser une mesure précise de la probabilité et des conséquences en termes de coût.
Des nombres peuvent être affectés comme valeurs quantitative mais cela ne donnera pas une mesure quantitative exacte. Par exemple, le Test Manager peut décider que les risques métier seront classés avec une valeur allant de 1 à 10, avec 1 correspondant à l’impact métier le plus haut et donc le plus risqué. Une fois que la probabilité (l’évaluation du risque technique) et l’impact (l’évaluation du risque métier) ont été affectés, ces valeurs peuvent être multipliées pour déterminer une valeur globale pour chaque risque. Cette valeur globale est alors utilisée pour prioriser les activités de réduction des risques. Certains modèles de test basé sur les risques, tels que PRISMA®, ne combinent pas les valeurs de risques, ce qui permet à l’approche de test de traiter les risques techniques et métier séparément.
2.4.4 Réduction des Risques
Pendant le projet, les Analystes de Test devraient se charger de:
- Réduire les risques en utilisant des cas de test bien conçus démontrant de façon claire que les tests passent avec succès ou non, et en participant à des revues d’éléments logiciels tels que les exigences, les conceptions et la documentation utilisateur
- Mettre en œuvre de façon efficace les activités de réduction des risques identifiées dans la stratégie de test et le plan de test
- Réévaluer les risques connus à partir d’informations additionnelles collectées lors de l’avancement du projet, en révisant la probabilité, l’impact, ou les deux, selon l’intérêt.
- Prendre en compte de nouveaux risques identifiés à partir de l’information issue du test
Quand on parle de risques-produit (qualité), on considère que le test est une façon de réduire ces risques. En trouvant des défauts, les testeurs réduisent le risque car ils apportent de la visibilité sur les défauts et les façons de les traiter avant la livraison. Si les testeurs ne trouvent pas de défaut, le test réduit alors le risque en assurant que, sous certaines conditions (c.à.d., les conditions testées), le système fonctionne correctement. Les Analystes de Test aident à définir les options de réduction des risques en recherchant les façons de collecter des données exactes, en créant et en testant des scénarios utilisateurs réalistes et en menant des études sur l’utilisabilité.
2.4.4.1 Prioriser les Tests
Le niveau de risque est aussi utilisé pour prioriser les tests. Un Analyste de Test peut préciser qu’il y a un risque élevé dans le domaine de l’exactitude des transactions dans un système de comptabilité. Comme conséquence, pour réduire le risque, le testeur pourrait travailler avec d’autres experts métier pour collecter un nombre important de données pouvant être traitées afin de vérifier leur exactitude. De même, un Analyste de Test pourrait préciser que des problèmes d’utilisabilité constituent un risque important pour un nouveau produit. Plutôt que d’attendre les tests d’acceptation pour découvrir des problèmes, l’Analyste de Test pourrait prioriser du test d’utilisabilité afin qu’il soit fait pendant le niveau intégration et ainsi aider à identifier et résoudre les problèmes d’utilisabilité tôt dans le test. Cette priorisation doit être envisagée le plus tôt possible dans l’étape de gestion des tests afin que le planning puisse prévoir le test nécessaire au bon moment.
Dans certains cas, tous les tests sur les risques les plus élevés sont exécutés avant les tests associés à des risques de niveau inférieur et les tests sont exécutés strictement selon l’ordre de risques (souvent appelé “parcours en profondeur”); dans d’autres cas, une méthode d’échantillonnage est utilisée pour sélectionner un échantillon de tests parmi tous les risques identifiés en utilisant le poids des risques pour pondérer la sélection et en cherchant à couvrir chaque risque au moins une fois (souvent appelé “parcours en largeur ”).
Que le test basé sur les risques soit mené en profondeur ou en largeur, il est possible que le temps alloué au test soit consommé avant que tous les tests n’aient été exécutés. Le test basé sur les risques permet aux testeurs de délivrer aux responsables des rapports en termes de niveau de risque restant à un certain moment, et permet aux responsables de décider de prolonger le test ou de reporter le risque restant sur les utilisateurs, clients, help desk/support technique, et/ou sur l’équipe opérationnelle.
2.4.4.2 Ajuster le Test pour les Cycles de Tests suivants
L’évaluation des risques n’est pas une activité réalisée une seule fois avant le début de l’implémentation des tests; c’est un processus continu. Chaque cycle de test prévu doit faire l’objet d’une nouvelle analyse de risque pour prendre en compte des facteurs tels que:
- Toute modification ou tout ajout dans les risques produit
- Les domaines instables ou sujets aux défauts, découverts durant le test
- Les risques par rapport aux défauts corrigés
- Les défauts typiques trouvés pendant le test
- Les domaines ayant été sous-testé (faible couverture de test)
Si du temps additionnel est alloué au test, il est envisageable d’étendre la couverture des risques aux domaines ayant un niveau de risque plus bas.
2.4.1 Vue générale
Le Test Manager porte souvent la responsabilité d’établir et de gérer une stratégie de test basée sur les risques. Le Test Manager demandera en général l’implication de l’Analyste de Test pour s’assurer que l’approche basée sur les risques est correctement mise en œuvre.
L’Analyste de Test devrait être impliqué activement dans les tâches suivantes du test basé sur les risques:
- L’identification des risques
- L’évaluation des risques
- La réduction des risques
Ces tâches sont réalisées de façon itérative tout au long du cycle de vie du projet pour traiter les risques émergents, modifier les priorités, régulièrement évaluer les risques et communiquer sur leurs statuts.
Les Analystes de Test devraient travailler dans le cadre du test basé sur les risques défini pour le projet par le Test Manager. Ils devraient utiliser leur connaissance des risques métier inhérents au projet tels que les risques liés à la sécurité, aux aspects financiers et économiques ainsi qu’aux facteurs politiques.
2.4.2 Identification des Risques
En faisant appel au plus large ensemble possible de parties prenantes, le processus d’identification des risques pourra détecter le plus grand nombre de risques réels. Comme les Analystes de Test possèdent souvent un savoir unique sur le domaine métier du système sous test, ils sont particulièrement bien armés pour mener des interviews d’experts du domaine et d’utilisateurs, pour mener des évaluations indépendantes, pour utiliser ou faire utiliser des templates de risques, organiser des réunions de travail sur les risques, organiser des réunions de réflexion (« brainstorming ») avec des utilisateurs actuels et futurs, définir des check-lists de test et faire appel à l’expérience passée sur des projets ou systèmes similaires. L’Analyste de Test devrait notamment travailler de façon rapprochée avec les utilisateurs et des experts du domaine pour déterminer les zones de risques métier qui devront être traitées pendant le test. L’Analyste de Test peut aussi être particulièrement utile pour déterminer les effets potentiels des risques sur les utilisateurs et les parties prenantes.
Comme exemples de risques pouvant être identifiés dans un projet, on peut citer:
- Des problèmes d’exactitude avec une fonctionnalité logicielle, (p. ex., des calculs incorrects)
- Des problèmes d’utilisabilité, (p. ex., des raccourcis clavier insuffisants)
- Des problèmes d’apprentissage, (p. ex., le manque d’instructions pour les utilisateurs à des points de décisions importants)
Des considérations relatives au test des caractéristiques-qualité spécifiques sont couvertes au chapitre 4 de ce syllabus.
2.4.3 Evaluation des Risques
Alors que l’identification des risques consiste à identifier le plus possible de risques pertinents, l’évaluation des risques est l’étude de ces risques. En particulier, elle consiste à catégoriser chaque risque et déterminer la probabilité et l’impact associés à celui-ci.
Déterminer le niveau de risque consiste généralement à évaluer, pour chaque risque, la probabilité d’occurrence et l’impact de l’occurrence. La probabilité d’occurrence est généralement interprétée comme la probabilité qu’a le problème potentiel de se produire dans le système sous test et d’être observé quand le système sera en production. En d’autres termes, cela est lié à un risque technique. L’Analyste Technique de Test devrait contribuer à chercher et à comprendre le niveau de risque technique potentiel pour chaque risque alors que l’Analyste de Test contribue à comprendre l’impact métier potentiel si le problème se produit.
L’impact de l’occurrence est souvent interprété comme la sévérité de l’effet sur les utilisateurs, les clients, ou les autres parties prenantes. En d’autres termes cela est lié au risque métier. L’Analyste de Test devrait contribuer à identifier et à évaluer, pour chaque risque, l’impact potentiel sur le métier ou l’utilisateur. Comme facteurs influençant le risque métier, on peut citer :
- La fréquence d’utilisation de la fonctionnalité touchée
- La perte financière
- Les éventuelles pertes ou responsabilités financières, écologiques ou sociales
- Les sanctions légales, civiles ou pénales
- Les problèmes de sécurité
- La perte de licences
- Le manque de contournements raisonnables
- La visibilité sur la fonctionnalité
- La visibilité de l’échec conduisant à une publicité négative et à une dégradation possible de l’image de marque
- La perte de clients
A partir de l’information disponible sur les risques, l’Analyste de Test doit établir les niveaux de risques métier selon les consignes données par le Test Manager. Ils peuvent être classés avec des attributs (p. ex.., faible, moyen, haut) ou des chiffres. A moins qu’il existe une façon objective de mesurer le risque sur une échelle définie, cela ne peut pas être une mesure quantitative. Il est en général très difficile de réaliser une mesure précise de la probabilité et des conséquences en termes de coût.
Des nombres peuvent être affectés comme valeurs quantitative mais cela ne donnera pas une mesure quantitative exacte. Par exemple, le Test Manager peut décider que les risques métier seront classés avec une valeur allant de 1 à 10, avec 1 correspondant à l’impact métier le plus haut et donc le plus risqué. Une fois que la probabilité (l’évaluation du risque technique) et l’impact (l’évaluation du risque métier) ont été affectés, ces valeurs peuvent être multipliées pour déterminer une valeur globale pour chaque risque. Cette valeur globale est alors utilisée pour prioriser les activités de réduction des risques. Certains modèles de test basé sur les risques, tels que PRISMA®, ne combinent pas les valeurs de risques, ce qui permet à l’approche de test de traiter les risques techniques et métier séparément.
2.4.4 Réduction des Risques
Pendant le projet, les Analystes de Test devraient se charger de:
- Réduire les risques en utilisant des cas de test bien conçus démontrant de façon claire que les tests passent avec succès ou non, et en participant à des revues d’éléments logiciels tels que les exigences, les conceptions et la documentation utilisateur
- Mettre en œuvre de façon efficace les activités de réduction des risques identifiées dans la stratégie de test et le plan de test
- Réévaluer les risques connus à partir d’informations additionnelles collectées lors de l’avancement du projet, en révisant la probabilité, l’impact, ou les deux, selon l’intérêt.
- Prendre en compte de nouveaux risques identifiés à partir de l’information issue du test
Quand on parle de risques-produit (qualité), on considère que le test est une façon de réduire ces risques. En trouvant des défauts, les testeurs réduisent le risque car ils apportent de la visibilité sur les défauts et les façons de les traiter avant la livraison. Si les testeurs ne trouvent pas de défaut, le test réduit alors le risque en assurant que, sous certaines conditions (c.à.d., les conditions testées), le système fonctionne correctement. Les Analystes de Test aident à définir les options de réduction des risques en recherchant les façons de collecter des données exactes, en créant et en testant des scénarios utilisateurs réalistes et en menant des études sur l’utilisabilité.
2.4.4.1 Prioriser les Tests
Le niveau de risque est aussi utilisé pour prioriser les tests. Un Analyste de Test peut préciser qu’il y a un risque élevé dans le domaine de l’exactitude des transactions dans un système de comptabilité. Comme conséquence, pour réduire le risque, le testeur pourrait travailler avec d’autres experts métier pour collecter un nombre important de données pouvant être traitées afin de vérifier leur exactitude. De même, un Analyste de Test pourrait préciser que des problèmes d’utilisabilité constituent un risque important pour un nouveau produit. Plutôt que d’attendre les tests d’acceptation pour découvrir des problèmes, l’Analyste de Test pourrait prioriser du test d’utilisabilité afin qu’il soit fait pendant le niveau intégration et ainsi aider à identifier et résoudre les problèmes d’utilisabilité tôt dans le test. Cette priorisation doit être envisagée le plus tôt possible dans l’étape de gestion des tests afin que le planning puisse prévoir le test nécessaire au bon moment.
Dans certains cas, tous les tests sur les risques les plus élevés sont exécutés avant les tests associés à des risques de niveau inférieur et les tests sont exécutés strictement selon l’ordre de risques (souvent appelé “parcours en profondeur”); dans d’autres cas, une méthode d’échantillonnage est utilisée pour sélectionner un échantillon de tests parmi tous les risques identifiés en utilisant le poids des risques pour pondérer la sélection et en cherchant à couvrir chaque risque au moins une fois (souvent appelé “parcours en largeur ”).
Que le test basé sur les risques soit mené en profondeur ou en largeur, il est possible que le temps alloué au test soit consommé avant que tous les tests n’aient été exécutés. Le test basé sur les risques permet aux testeurs de délivrer aux responsables des rapports en termes de niveau de risque restant à un certain moment, et permet aux responsables de décider de prolonger le test ou de reporter le risque restant sur les utilisateurs, clients, help desk/support technique, et/ou sur l’équipe opérationnelle.
2.4.4.2 Ajuster le Test pour les Cycles de Tests suivants
L’évaluation des risques n’est pas une activité réalisée une seule fois avant le début de l’implémentation des tests; c’est un processus continu. Chaque cycle de test prévu doit faire l’objet d’une nouvelle analyse de risque pour prendre en compte des facteurs tels que:
- Toute modification ou tout ajout dans les risques produit
- Les domaines instables ou sujets aux défauts, découverts durant le test
- Les risques par rapport aux défauts corrigés
- Les défauts typiques trouvés pendant le test
- Les domaines ayant été sous-testé (faible couverture de test)
Si du temps additionnel est alloué au test, il est envisageable d’étendre la couverture des risques aux domaines ayant un niveau de risque plus bas.
Chapitre 3 : Techniques de test
3.1 Introduction
Les techniques de conception des tests abordées dans ce chapitre sont réparties dans les catégories suivantes:
- Basée sur les spécifications (ou basée sur le comportement ou encore boîte noire)
- Basée sur les défauts
- Basée sur l’expérience
Ces techniques sont complémentaires et peuvent être utilisées de façon adaptée à une activité de test particulière, indépendamment du niveau de test en cours.
Noter que ces trois catégories peuvent être utilisées à la fois pour le test de caractéristiques qualité fonctionnelles ou non-fonctionnelles. Le test des caractéristiques non-fonctionnelles est discuté dans le chapitre suivant.
Les techniques de conception des tests, abordées dans les sections suivantes, se concentrent sur l’identification des données de test optimales (p. ex., partitions d’équivalence) ou sur l’obtention de séquences de test (p. ex., modèles d’état). Il est fréquent de combiner ces techniques pour créer des cas de test complets.
3.2 Techniques basées sur les Spécifications
Les techniques basées sur les spécifications sont appliquées aux conditions de test pour obtenir des cas de test à partir d’une analyse des bases de test pour un composant ou système, sans référence à sa structure interne.
Les caractéristiques principales des techniques basées sur les spécifications incluent:
- Les modèles (p. . diagrammes de transition d’état et table de décisions) sont créés pendant la conception des tests selon la technique de test
- Les conditions de tests sont dérivées systématiquement de ces modèles
Certaines techniques apportent aussi des critères de couverture pouvant être utilisés pour mesurer les activités de conception des tests et d’exécution des tests. Satisfaire entièrement un critère de couverture ne signifie pas que tous les tests ont été exécutés, mais plutôt que le modèle ne requiert pas de tests supplémentaires pour augmenter la couverture sur la base de cette technique.
Les tests basés sur les spécifications s’appuient en général sur les documents d’exigences système. Comme les spécifications d’exigences devraient préciser le comportement du système, en particulier d’un point de vue fonctionnel, le test du comportement du système s’appuie souvent sur la création de cas de test à partir des exigences. Dans certains, il n’existe pas d’exigences documentées mais des exigences implicites telles le remplacement des fonctionnalités d’un système préexistant.
Il existe de nombreuses techniques de test basées sur les spécifications. Ces techniques concernent différents types de logiciels et de scénarios. Les sections suivantes présentent la mise en œuvre de chaque technique, ainsi que les limitations ou difficultés que l’Analyste de Test peut rencontrer, et la méthode par laquelle la couverture est mesurée et les différents types de défauts sont détectés.
3.2.1 Partitions d’équivalence
La technique des partitions d’équivalence est utilisée pour réduire le nombre de cas de test nécessaire pour tester un ensemble d’entrées, de sorties, d’intervalles de valeurs ou de temps. Le découpage en partitions est utilisé pour créer des classes d’équivalence (souvent appelées partitions d’équivalence) qui sont constituées d’ensembles de valeurs qui sont traités de la même manière. En sélectionnant dans chaque partition une valeur représentative, la couverture de tous les éléments de la même partition est assurée.
Application
Cette technique est applicable à tous les niveaux de test et est adaptée lorsque tous les éléments d’un même ensemble de valeurs sont supposés être traités de la même façon et lorsque les ensembles de valeurs utilisés par l’application n’interagissent pas. La sélection des ensembles de valeur est applicable aux partitions valides et invalides (c.à.d., partitions contenant des valeurs devant être considérées comme invalides pour le logiciel testé). Il est fortement recommandé d’utiliser cette technique en la combinant avec l’analyse des valeurs limites qui étend les valeurs de test pour inclure celles situées aux extrémités des partitions. C’est une technique fréquemment utilisé pour les tests fumigatoires (« smoke test ») sur une nouvelle version ou une nouvelle livraison afin de rapidement déterminer si les fonctionnalités de base fonctionnent.
Limitations/Difficultés
Si la supposition est incorrecte et que les valeurs dans la partition ne sont pas traitées exactement de la même façon, cette technique peut laisser passer des défauts. Il est donc important de sélectionner avec attention les partitions d’équivalence. Par exemple, un champ de saisie qui accepte des valeurs positives et des valeurs négatives devrait être testé avec deux partitions valides, l’une pour les nombres positifs, l’autre pour les nombres négatifs, car ces deux ensembles seront probablement gérés de façon différente. En fonction de la possibilité ou non d’utiliser le zéro, celui-ci peut devenir une autre partition. Il est important pour l’Analyste de Test de bien comprendre le processus sous- jacent afin de déterminer les meilleures partitions de valeurs.
Couverture
La couverture est calculée en prenant le nombre de partitions pour lesquelles une valeur a été testée et en le divisant pour le nombre de partitions définies. Utiliser plusieurs valeurs pour une même partition n’augmente pas le pourcentage de couverture.
Types de Défauts
Cette technique trouve des défauts fonctionnels dans la gestion des différentes données.
3.2.2 Analyse des Valeurs Limites
L’analyse des valeurs limites est utilisée pour tester les valeurs aux limites de partitions d’équivalence. Il y a deux façons d’aborder l’analyse des valeurs limites : prendre deux ou trois valeurs pour le test. Avec deux valeurs, la valeur limite (sur la limite) et la valeur qui est juste au-delà (par le plus petit incrément possible) sont utilisées. Par exemple, si la partition inclut les valeurs 1 à 10 avec un incrément de 0,5, les deux valeurs de test pour la limite supérieure seront 10 et 10,5. Les valeurs de test pour la limite inférieure seront 1 et 0,5. Les limites sont définies par les valeurs maximum et minimum des partitions d’équivalence.
Avec trois valeurs, les valeurs inférieure, égale et supérieure à la limite sont utilisées. Selon l’exemple précédent, les valeurs pour la limite supérieure seraient 9.5, 10 et 10.5. Les valeurs pour la limite inférieure seraient 1.5, 1 et 0.5. La décision d’utiliser deux ou trois valeurs doit se baser sur les risques associés à l’élément à tester, sachant que trois valeurs seront utilisées pour les éléments associés aux risques les plus élevés.
Application
Cette technique est applicable à tous les niveaux de test et peut être utilisée quand des partitions d’équivalence ordonnées existent. L’ordre est important à cause des concepts consistant à être sur un limite ou au-dessus. Par exemple, une plage de nombres est une partition ordonnée. Une partition correspondant à tous les objets rectangulaires ne serait pas une partition ordonnée et ne pourrait pas avoir de valeurs limites. En plus des plages de nombres, l’analyse des valeurs limites peut être appliquée aux cas suivants :
- Ensembles de variables non-numériques (p. ex., longueur)
- Boucles, y compris dans les cas d’utilisation
- Structures de données enregistrées
- Objets physiques (y compris la mémoire)
- Activités limitées en temps
Limitations/Difficultés
Comme la précision de cette technique dépend de la justesse de l’identification des partitions d’équivalence, elle est sujette aux mêmes limitations et difficultés. L’Analyste de Test devrait ainsi comprendre les incréments des partitions valides et invalides pour être capable de déterminer précisément les valeurs à tester. Seules des partitions ordonnées peuvent être utilisées pour l‘analyse des valeurs limites mais cela ne se limite pas à un ensemble d’entrées valides. Par exemple, lors du test du nombre de cellules gérées par une feuille de calcul, il y aura une partition contenant le nombre de cellules jusqu’à un maximum inclus dans la partition (sur la limite) et une autre partition commençant avec une cellule au-dessus du maximum (au-delà de la limite).
Couverture
La couverture est déterminée en prenant le nombre de limites testées et en divisant par le nombre de limites identifiées (en utilisant la méthode des deux ou des trois valeurs). Cela donnera un pourcentage de couverture pour le test des limites.
Types de Défauts
L’analyse des valeurs limites permet de trouver des déplacements ou des omissions de limites, et peut détecter des cas de dépassement des limites. Cette technique trouve des défauts relatifs à la gestion des valeurs limites, en particulier des erreurs dues à trop peu ou trop de logique (c.à.d., déplacement). Elle peut aussi être utilisée pour trouver des défauts non-fonctionnels, par exemple de tolérance ou de limites de charge (p. ex., le système gère 10,000 utilisateurs simultanés).
3.2.3 Tables de Décision
Les tables de décision sont utilisées pour tester les interactions entre des combinaisons de conditions. Les tables de décision apportent une méthode claire pour vérifier les tests de toutes les combinaisons de conditions possibles et pour vérifier que toutes les combinaisons possibles sont gérées par le logiciel testé. Le but du test par table de décision est d’assurer que toutes les combinaisons de conditions sont testées. En essayant de tester toutes les combinaisons possibles, les tables de décisions peuvent devenir très grandes. Une méthode appelée « test par table de décision réduite » consiste à réduire intelligemment les nombre de combinaisons à partir de toutes celles possibles vers celles qui sont « intéressantes ». Avec cette technique, les combinaisons sont réduites à celles produisant des sorties différentes, et tous les tests redondants ou irréalistes sont supprimés. La décision d’utiliser des tables de décision entières ou réduites est en général basée sur les risques.
Application
Cette technique est en général appliquée aux niveaux de test intégration, système et acceptation. En fonction du code, elle peut aussi être appliquée au test de composant, lorsqu’un composant est chargé d’un ensemble de décisions logiques. Cette technique est particulièrement utile quand les exigences sont représentées sous la forme de diagrammes de flux ou de tables de règles métier. Les tables de décision sont également une technique de définition des exigences et certaines spécifications d’exigences peuvent être faites directement dans ce format. Même lorsque les exigences ne sont pas représentées sous forme de tableau ou de diagrammes de flux, des combinaisons de conditions sont en général présentes dans le texte. Lors de la création des tables de décision, il est important de prendre en compte les combinaisons de conditions définies mais aussi celles qui ne sont pas expressément définies mais qui existeront. Pour concevoir une table de décision valide, le testeur doit être capable de dériver toutes les sorties attendues pour toutes les combinaisons de conditions à partir de la spécification ou de l’oracle de test. C’est seulement lorsque toutes les conditions d’interactions sont prises en compte que la table de décision constituera un bon outil de conception des tests.
Limitations/Difficultés
Trouver toutes les conditions d’interaction peur s’avérer difficile, en particulier lorsque les exigences sont mal formulées ou n’existent pas. Il n’est pas inhabituel de s’apercevoir, lors de la préparation d’un ensemble de conditions que le résultat attendu est inconnu.
Couverture
La couverture minimale pour une table de décision est d’avoir un cas de test pour chaque colonne. Cela suppose qu’il n’y a pas de conditions composées et que toutes les combinaisons de conditions possibles ont été saisies dans une colonne. Lors de la définition de test à partir d’une table de décision, il est aussi important de considérer toutes les conditions aux limites devant être testées. Ces conditions aux limites peuvent entraîner une augmentation du nombre de cas de tests nécessaires pour tester le logiciel de façon adéquate. L’ analyse des valeurs limites et les partitions d’équivalence sont complémentaires à la technique des tables de décision.
Types de Défauts
Des défauts typiques peuvent être un traitement incorrect pour des combinaisons de conditions particulières générant des résultats inattendus. Pendant la création d’une table de décisions, des défauts peuvent être trouvés dans le document de spécification. Les types de défauts les plus communs sont des omissions (aucune information sur ce qui doit réellement se passer dans une situation précise). Le test peut également trouver des problèmes avec des combinaisons de conditions non gérées ou mal gérées.
3.2.4 Graphes de Cause à Effet
Les graphes de cause à effet peuvent être obtenus à partir de toute source décrivant la logique fonctionnelle (c.à.d., les “règles”) d’un programme, telle que les « user stories » ou les diagrammes de flux. Ils peuvent être utiles pour obtenir une vision globale graphique de la structure logique d’un programme et sont notamment utilisés pour créer les tables de décision. Documenter des décisions sous forme de graphes de cause à effet et/ou table de décisions permet d’atteindre une couverture de test systématique de la logique du programme.
Application
Les graphes de cause à effet s’appliquent dans les mêmes situations que les tables de décisions et s’appliquent aux mêmes niveaux de test. En particulier, un graphe de cause à effet montrera des combinaisons de conditions aboutissant à des résultats (causalité), des combinaisons de conditions excluant des résultats (not), des conditions multiples devant obligatoirement être vraies pour causer certains résultats (and) et des conditions alternatives pouvant être vraies pour causer un résultat particulier (or). Ces relations, sont en général plus faciles à voir avec un graphe de cause à effet qu’avec une description textuelle.
Limitations/Difficultés
Les graphes de cause à effet demandent, en comparaison avec d’autres techniques de conception des tests, du temps et un effort supplémentaires pour leur apprentissage. Ils nécessitent également le soutien d’un outil. Les graphes de cause à effet ont leur propre notation qui doit être comprise par le créateur et par le lecteur du graphe.
Couverture
Chaque branche de cause à effet doit être testée, y compris les conditions de combinaisons, pour atteindre la couverture minimale. Les graphes de cause à effet fournissent un moyen de définir des contraintes sur les données et des contraintes dans un flux logique.
Types de Défauts
Ces graphes trouvent les mêmes types de défauts combinatoires que les tables de décisions. De plus, la création des graphes aide à définir le bon niveau de détail dans les bases de test, et par conséquent, aide à améliorer le détail et la qualité de ces bases de test, et aide le testeur à identifier des exigences manquantes.
3.2.5 Test de Transition d’Etat
Le test de transition d’état permet de tester la capacité d’un système à entrer dans des états définis et à en sortir par des transitions valides et invalides. Des événements particuliers font passer le système d’un état à un autre et déclenchent certaines actions. Les événements peuvent être associés à des conditions qui influencent le chemin de transition à prendre. Par exemple, l’évènement correspondant à une connexion avec un nom d’utilisateur et un mot de passe valides donnera lieu à une transition différente de celle déclenchée par une connexion avec un mauvais mot de passe.
Les transitions d’état sont suivies soit dans un diagramme de transition d’état montrant toutes les transitions valides entre les états, de façon graphique ; soit avec une table d’états montrant toutes les transitions possibles, valides ou invalides.
Application
Le test de transition d’état peut s’appliquer à tout logiciel ayant des états définis et étant sensible à des événements qui déclencheront des transitions entre ces états (p. ex., un changement d’écrans). Le test de transition d’état peut être utilisé à tous les niveaux de test. Les logiciels embarqués, les logiciels web, et tout type de logiciels transactionnels sont de bons candidats à ce type de test. Les systèmes de contrôle, (c.à.d., les contrôleurs de feux de circulation), sont aussi de bons candidats pour ce type de test.
Limitations/Difficultés
La détermination des états est souvent la chose la plus difficile dans la définition des tables ou diagrammes d’état. Lorsque le logiciel dispose d’une interface utilisateur, les différents écrans affichés sont souvent utilisés pour définir les états. Pour les logiciels embarqués, les états peuvent dépendre des états que le matériel prendra.
En plus des états en eux-mêmes, l’unité de base d’un test de transition d’état est la transition seule, aussi appelé aiguillage-0 (0-switch). Le simple test de toutes les transitions trouvera certains défauts de transition d’état, mais davantage de défauts seront trouvés par les tests de séquences de transactions. Une séquence de deux transactions successives sera appelée aiguillage-1, une séquence de trois transactions successives sera appelée aiguillage-2, et ainsi de suite (ces aiguillages sont parfois appelés aiguillages N-1 , où N représente le nombre de transactions qui seront traversées. Une simple transaction, par exemple un aiguillage-0, est désignée par application de la formule aiguillage 1-1.
Couverture
Comme avec d’autres techniques de test, il y a une hiérarchie des niveaux de couverture de test. Le degré minimum de couverture acceptable est d’avoir visité chaque état et traversé chaque transition. Une couverture des transitions à 100% (aussi appelée 100% de couverture d’aiguillage-0 ou 100% de couverture logique des branches) garantira que chaque état est visité et chaque transition traversée, à moins que la conception du système ou le modèle de transition d’état (diagramme ou table) soit incorrect. En fonction des relations entre les états et les transitions, il peut être nécessaire de traverser certaines transitions plusieurs fois afin d’exécuter d’autres transitions au moins une fois.
Le terme “aiguillage-n ” correspond au nombre de transitions couvertes. Par exemple, atteindre 100% de couverture d’aiguillage-1 demande à ce que toute séquence valide de deux transitions successives soit testée au moins une fois. Ce test pourrait faire apparaître certains types d’ erreur de couverture que 100% d’aiguillage-0 manquerait.
Une “couverture Aller-Retour” correspond aux situations dans lesquelles les séquences de transitions forment des boucles. 100% de « couverture Aller-Retour » est obtenu lorsque toutes les boucles partant d’un état et revenant vers ce même état ont été testées. Cela doit être testé pour tous les états inclus dans des boucles.
Pour chacune de ces approches, un degré de couverture encore plus important pourra être atteint en essayant d’inclure toutes les transitions invalides. La couverture des exigences et la couverture des différents jeux pour le test de transition d’état doit identifier si les transitions invalides sont incluses.
Types de Défauts
Les principaux défauts trouvés peuvent être des traitements incorrects dans l’état courant à cause des traitements faits dans un état précédent, des transitions incorrectes ou non supportées, des états qui n’ont pas de sortie et le besoin d’états ou de transitions supplémentaires. Pendant la création du modèle de machine à états, des défauts peuvent être trouvés dans le document de spécification. Les types de défauts fréquents sont les omissions (aucune information sur ce qui doit réellement se passer dans une certaine situation) et les contradictions.
3.2.6 Techniques de Test Combinatoire
Le test combinatoire est utilisé lors du test de logiciel avec plusieurs paramètres, chacun avec plusieurs valeurs, ce qui aboutit à davantage de combinaisons que ce qui est faisable dans le temps imparti. Les paramètres doivent être indépendants et compatibles dans la mesure où il doit être possible de combiner toute option d’un facteur avec n’importe quelle fonction d’un autre facteur. La classification arborescente permet à certaines combinaisons d’être exclues, si certaines options ne sont pas compatibles. Cela ne veut pas dire que les facteurs combinés ne s’influenceront pas, au contraire, mais qu’ils s’influenceront de façon acceptable.
Le test combinatoire offre une façon d’identifier un sous-ensemble adéquat de ces combinaisons pour atteindre un certain niveau de couverture. Le nombre d’éléments à inclure dans les combinaisons peut être sélectionné par l’Analyste de Test, y compris des éléments seuls, des paires, des ensembles de trois éléments et plus. Différents outils existent pour aider l’Analyste de Test dans cette tâche (voir www.pairwise.org pour des exemples). Ces outils demandent à ce que les paramètres et leurs valeurs soient listés (test par paires et tests par tableaux orthogonaux) ou graphiquement représentés (classification arborescentes). Le test par paires est une méthode appliquée pour tester des paires de variables combinées. Les tableaux orthogonaux sont des tableaux prédéfinis, mathématiquement justes qui permettent à l’Analyste de Test de remplacer les éléments à tester pour les variables dans un tableau, en produisant un ensemble de combinaisons qui atteindront un certain niveau de couverture lors du test. Des outils de classification arborescente permettent à l’Analyste de Test de définir la taille des combinaisons à tester (c.à.d., combinaison de deux valeurs, trois valeurs, etc.).
Application
Le problème d’un nombre de combinaisons trop important se manifeste dans au moins deux situations liées au test. Certains cas de test contiennent plusieurs paramètres, chacun avec plusieurs valeurs possibles, par exemple un écran avec plusieurs champs de saisie. Dans ce cas, les combinaisons de valeurs constituent les données d’entrée pour les cas de test. De plus, certains systèmes se configurent selon un nombre important de dimensions, ce qui donne un très grand nombre de configurations possibles. Dans ces deux situations, le test combinatoire peut être utilisé pour identifier un sous-ensemble de combinaisons de taille raisonnable.
Pour les paramètres ayant un grand nombre de valeurs, les partitions de classes d’équivalence, ou un autre mécanisme de sélection, peuvent être appliqués en premier lieu, à chaque paramètre individuellement, pour réduire le nombre de valeur pour chaque paramètre, avant que le test combinatoire ne soit appliqué pour réduire l’ensemble des combinaisons obtenues.
Ces techniques sont en général appliquées aux niveaux de test intégration, système et intégration système.
Limitations/Difficultés
La principale limitation avec ces techniques est l’hypothèse que les résultats de quelques tests seront représentatifs de tous les tests et que ces quelques tests représentent l’utilisation cible. Si une interaction inattendue entre certaines variables se produit, elle ne sera pas forcément détectée par ce type de test, si cette combinaison particulière n’est pas testée. Ces techniques peuvent être difficiles à expliquer à un public non technique pour qui la réduction logique des tests pourra être difficile à comprendre.
Il est parfois difficile d’identifier les paramètres et leurs valeurs respectives. Il est difficile d’obtenir à la main le plus petit ensemble possible permettant d’atteindre un certain niveau de couverture. En général des outils sont utilisés pour trouver cet ensemble minimal de combinaisons. Certains outils permettent de forcer l’inclusion ou l’exclusion de (sous-) combinaisons dans la sélection finale. Cette possibilité peut être utile à l’Analyste de Test pour accentuer ou réduire certains facteurs selon la connaissance du domaine ou les informations sur l’usage du produit.
Couverture
Il y a différents niveaux de couverture. Le plus bas niveau de couverture est appelé « 1-wise » ou couverture de singleton. Il demande à ce que chaque valeur de chaque paramètre soit présente dans au moins l’une des combinaisons choisies. Le niveau de couverture suivant est appelé « 2-wise » couverture de paires. Il demande à ce que chaque paire de valeurs possible soit incluse dans au moins une combinaison. Cette idée peut être généralisée à la couverture « n-wise », qui demandera à ce que toute combinaison de valeurs possible pour n paramètres soit incluse dans l’ensemble de combinaisons sélectionnées. Plus le n est élevé, plus le nombre de combinaisons nécessaires pour atteindre 100% de couverture est important. La couverture minimale avec des techniques est d’avoir un cas de test pour chaque combinaison produite par l’outil.
Types de Défauts
Les défauts les plus communs trouvés avec ce type de test sont les défauts liés aux combinaisons de valeurs avec plusieurs paramètres.
3.2.7 Test de Cas d’Utilisation
Le test de cas d’utilisation fournit des tests de transactions basés sur les scénarios qui simulent l’usage du système. Des cas d’usage sont définis en termes d’interactions entre les acteurs et le système qui effectue des actions. Les acteurs peuvent être des utilisateurs ou des systèmes extérieurs.
Application
Le test des cas d’utilisation est en général appliqué aux niveaux de test système et acceptation. Il peut être utilisé pour le test d’intégration en fonction du niveau d’intégration et même au niveau composant en fonction du comportement du composant. Les cas d’utilisation servent souvent de base au test de performance parce qu’ils représentent un usage réaliste du système. Les scénarios décrits dans les cas d’utilisation peuvent être affectés à des utilisateurs virtuels pour créer une charge réaliste sur le système.
Limitations/Difficultés
Pour être valides, les cas d’utilisation doivent représenter des transactions réalistes avec l’utilisateur. L’information doit provenir d’un utilisateur ou d’un représentant des utilisateurs. La valeur d’un cas d’utilisation est diminuée si celui-ci ne représente pas les activités d’un utilisateur réel. Pour que la couverture de test puisse être rigoureuse, il est important de disposer d’une description précise des différents chemins (flux) possibles. Les cas d’utilisation doivent être considérés comme un guide, mais pas comme une définition exhaustive de ce qui doit être testé car ils ne fournissent pas systématiquement une définition claire de l’ensemble des exigences. Il peut également être intéressant de créer d’autres modèles, tels que des diagrammes de flux, à partir de la description des cas d’utilisation, pour améliorer la précision du test et pour vérifier le cas d’utilisation lui-même.
Couverture
La couverture minimale d’un cas d’utilisation consiste à avoir au moins un cas de test pour le principal chemin possible, et un cas de test pour chaque chemin ou flux alternatif. Les chemins alternatifs incluent les chemins concernant les exceptions et les défaillances. Les chemins alternatifs sont parfois considérés comme des extensions du chemin principal. Le pourcentage de couverture est déterminé en prenant le nombre de chemins testés et en divisant par le nombre total de chemins principaux et alternatifs.
Types de Défauts
Les défauts pourront être la mauvaise gestion de scénarios définis, l’absence de prise en compte de chemins alternatifs, le mauvais traitement de certaines conditions et une gestion des erreurs imprécise ou incorrecte.
3.2.8 Test de «User Story»
Dans certaines méthodes Agile , telles que Scrum, les exigences sont préparées sous la forme de
« user stories » décrivant des petites unités fonctionnelles pouvant être conçues, testées et montrées dans une même itération [Cohn04]. Ces « user stories » comprennent une description de la fonctionnalité à développer, d’éventuels critères non-fonctionnels, et aussi des critères d’acceptation devant être satisfaits pour que la « »user story» » soit considérée terminée.
Application
Les « user stories » sont d’abord utilisées en environnement Agile et dans tout autre environnement itératif et incrémental du même type. Elles sont utilisées à la fois pour les tests fonctionnels et pour les tests non-fonctionnels. Les «user stories» sont utilisées à tous les niveaux de test avec comme attente, la démonstration par le développeur de la fonctionnalité développée pour la «user story» avant la remise du code aux membres de l’équipe en charge des tâches de test des niveaux suivants. (p. ex., intégration, performance).
Limitations/Difficultés
Comme les «user stories» sont de petits incréments de fonctionnalité, il peut être nécessaire de développer des pilotes et des bouchons pour réellement tester la partie de fonctionnalité qui est délivrée. Cela nécessite en général de la programmation et l’utilisation d’outils qui aideront à tester, comme des outils de test d’ IHM (Interface Homme Machine). La création de « drivers » et de bouchons est en général sous la responsabilité du développeur, même si un Analyste Technique de Test peut aussi être impliqué dans la production de code et l’utilisation d’outils de test d’ IHM. Si un modèle d’intégration continue est utilisé, comme dans le cas de la plupart des projets Agiles, les besoins de pilotes et bouchons sont réduits.
Couverture
La couverture minimale d’une «user story» consiste à vérifier que chacun des critères d’acceptation spécifiés a été satisfait.
Types de Défauts
Les défauts sont en général fonctionnels lorsque le logiciel ne parvient pas à fournir la fonctionnalité spécifiée. D’ autres défauts trouvés sont des problèmes d’intégration de la fonctionnalité de la nouvelle «user story» avec la fonctionnalité déjà existante. Comme les «user stories» peuvent être développées indépendamment, des défauts de performance, d’interface et de gestion des erreurs peuvent être trouvées. Il est important pour l’Analyste de Test de réaliser non seulement le test de la fonctionnalité livrée individuellement mais aussi le test d’intégration à chaque fois qu’une nouvelle «user story» est testée.
3.2.9 Analyse par Domaine
Un domaine est un ensemble défini de valeurs. Ce domaine peut être défini comme une plage de valeur pour une simple variable (un domaine à une dimension, p. ex., “les hommes âgés de 24 à 66 ans”), ou comme plusieurs plages de valeurs pour des variables associées (un domaine à plusieurs dimensions, p. ex., “les hommes âgés de 24 à 66 ans ET ayant un poids compris entre 69 et 90 kg “). Pour un domaine à plusieurs dimensions, chaque cas de test doit inclure les valeurs nécessaires pour chaque variable concernée.
L’analyse par domaine pour un domaine à une dimension utilise en général les partitions d’équivalence et l’ analyse des valeurs limites. Une fois les partitions définies, l’Analyste de Test sélectionne pour chaque partition des valeurs correspondant à une valeur qui est dans la partition (IN), une valeur à l’extérieur de la partition (OUT), une valeur sur la limite de la partition (ON) et une valeur juste sous la limite de la partition (OFF). Avec ces valeurs, chaque partition est testée avec ses conditions aux limites.
Avec des domaines à plusieurs dimensions, le nombre de cas de test générés par ces méthodes augmente de façon exponentielle avec le nombre de variables concernées, alors qu’une approche par domaine débouche en théorie sur une croissance linéaire. De plus, comme l’approche formelle intègre une théorie sur les défauts (un modèle de fautes), qui manque aux partitions d’équivalence et à l’analyse des valeurs limites, cet ensemble de tests réduit pourra trouver des défauts dans des domaines à plusieurs dimensions, que les plus grands ensembles de test heuristique ne trouveraient pas forcément. Avec des domaines à plusieurs dimensions, le modèle de test peut être construit comme une table de décision (ou “matrice de domaine”). L’identification des valeurs des cas de test pour des domaines à plusieurs dimensions nécessitera en général un support outillé.
Application
L’analyse par domaine combine les techniques utilisées pour les tables de décisions, les partitions d’équivalence et l’analyse des valeurs limites pour créer un ensemble réduit de tests qui couvre néanmoins les domaines importants et les domaines sujets aux défaillances. Elle est souvent appliquée dans les cas où les tables de décisions seraient inappropriées à cause du trop grand nombre de variables pouvant interagir. L’analyse par domaine peut être utilisée à tous les niveaux de test mais est le plus souvent utilisée aux niveaux intégration et système.
Limitations/Difficultés
Réaliser une analyse par domaine demande une bonne compréhension du logiciel afin de pouvoir identifier les différents domaines et les interactions possibles entre les domaines. Si un domaine est oublié, il manquera des tests, mais il est probable que le domaine soit détecté parce que des variables OFF et OUT pourraient se trouver dans le domaine non détecté. L’analyse par domaine est une technique puissante à utiliser lors du travail de définition des domaines de test avec le développeur.
Couverture
La couverture minimale pour l’analyse par domaine est d’avoir un test pour chaque valeur IN, OUT, ON et OFF dans chaque domaine. Lorsqu’il y a un chevauchement de valeurs (par exemple, la valeur OUT d’un domaine est la valeur IN d’un autre domaine), il n’est pas utile de dupliquer les tests. Grâce à cela, les tests réellement nécessaires sont souvent moins de quatre par domaine.
Types de Défauts
Les défauts peuvent être des problèmes fonctionnels au sein du domaine, la gestion des valeurs limites, des problèmes d’interaction de variables et de gestion d’ erreur (en particulier pour les valeurs n’appartenant pas à un domaine valide).
3.2.10 Combiner les Techniques
Il arrive que des techniques soient combinées pour créer des cas de test. Par exemple, les conditions identifiées dans une table de décision peuvent donner lieu à des partitions d’équivalence pour découvrir différentes façon de satisfaire une condition. Les cas de test couvriront alors non seulement toutes les combinaisons de conditions, mais aussi, pour les conditions qui auront donné lieu à des partitions, les partitions d’équivalence couvertes par les cas de tests supplémentaires. Lors de la sélection de la technique particulière à appliquer, l’Analyste de Test devrait se demander si la technique est applicable, quelles sont les limitations et difficultés, et quels sont les objectifs du test en termes de couverture et de défauts à détecter. Il n’y aura pas forcément « LA » technique pour une situation donnée. Une combinaison de technique offrira souvent la couverture la plus large à condition qu’il y ait suffisamment de temps et les bonnes compétences pour correctement appliquer les techniques.
3.3 Techniques basées sur les défauts
3.3.1 Utiliser les Techniques Basées sur les Défauts (K2)
Une technique de conception des tests basée sur les défauts utilise le type de défaut recherché comme base pour la conception des tests, avec des tests dérivés systématiquement de ce que l’on sait des types de défauts. A la différence du test basé sur les spécifications, qui dérive ses tests des spécifications, le test basé sur les défauts dérive les tests de taxonomies de défauts (c.à.d., des listes par catégorie) pouvant être totalement indépendantes du logiciel testé. Les taxonomies peuvent inclure des listes de types de défauts, de causes racines, de symptôme de défaillances et de toute autre donnée relative à des défauts. Le test basé sur les défauts peut aussi utiliser, pour cibler le test, des listes de risques identifiés et de scénario de risque. Cette technique de test permet que testeur de cibler un type spécifique de défaut ou de travailler de façon systématique avec une taxonomie de défauts regroupant les défauts connus et répandus d’un type particulier. L’Analyste de Test utilise des données de taxonomie pour déterminer l’objectif du test, qui est de trouver un type de défaut spécifique. A partir de ces éléments, l’Analyste de Test pourra créer les cas de test et conditions de test provoquant le défaut, s’il existe.
Application
Le test basé sur les défauts peut être appliqué à tous les niveaux de test mais est en général utilisé lors du test système. Des taxonomies standard existent pour les différents types de logiciels. Ce type de test indépendant du produit aide à améliorer la connaissance des standards industriels utilisés pour dériver des cas de test. En suivant des taxonomies spécifiques à l’industrie, des métriques relatives à l’occurrence des défauts peuvent être suivies tout au long des projets et même au sein des organisations.
Limitations/Difficultés
Il existe de nombreuses taxonomies des défauts spécifiques à un type de test particulier, l’utilisabilité par exemple. Il est important de choisir la taxonomie applicable au logiciel testé, si elle existe. Par exemple, il n’y aura pas forcément de taxonomie propre au logiciel innovant. Certaines organisations pourront avoir compilé leurs propres taxonomies pour le logiciel innovant. Certaines organisations pourront avoir compilé leurs propres taxonomies de défauts probables ou fréquemment rencontrés. Quelle que soit la taxonomie utilisée, il est important de définir la couverture attendue avant de commencer à tester.
Couverture
Cette technique apporte des critères de couverture qui sont utilisés pour déterminer à quel moment tous les cas de test utiles auront été définis. En pratique, le critère de couverture pour une technique basée sur les défauts aura tendance à être moins systématique que pour une technique basée sur les spécifications puisque seules des règles générales de couverture sont données et puisque l’appréciation du degré de couverture nécessaire reste personnel. Comme avec d’autres techniques, le critère de couverture ne signifie pas que tous les tests ont été exécutés, mais plutôt que les défauts étudiés ne permettent plus de créer des tests supplémentaires utiles avec cette technique.
Types de Défauts
Les types de défauts découverts dépendent en général de la taxonomie utilisée. Si une taxonomie propre aux IHM est utilisée, la majeure partie des défauts trouvés portera sur l ’IHM, mais d’autres défauts peuvent être découverts comme résultats de cette technique de test.
3.3.2 Taxonomie de Défauts (K4)
Les taxonomies de défauts sont des listes de types de défauts organisées par catégories. Ces listes peuvent être très générales et utilisées pour servir de directives à haut niveau ou peuvent être très spécifiques. Par exemple, une taxonomie utilisée pour des IHM pourrait contenir des termes généraux comme : fonctionnalité, gestion des erreurs, affichage graphique et performance. Une taxonomie détaillée pourrait inclure la liste de tous les objets graphiques possibles (en particulier pour une interface graphique utilisateur) et pourrait décrire une mauvaise gestion de ces objets comme :
- Zone de texte
- Une donnée valide n’est pas acceptée
- Une donnée valide est acceptée
- La longueur d’une entrée n’est pas vérifiée
- Des caractères spéciaux ne sont pas détectés
- Des messages d’erreur pour les utilisateurs ne sont pas clairs
- L’utilisateur ne peut pas corriger une erreur de saisie
- Aucune règle n’est appliquée
- Champ de saisie de la date
- Des dates valides ne sont pas acceptées
- Des dates invalides ne sont pas rejetées
- Les plages de dates ne sont pas vérifiées
- La précision des données n’est pas gérée correctement (p. ex.., hh:mm:ss)
- L’utilisateur ne peut pas corriger une donnée erronée
- Aucune règle n’est appliquée (p. ex.., la date de fin doit être supérieure à la date de début)
Il existe beaucoup de taxonomies de défauts, allant de taxonomies formelles, pouvant être achetées, à des taxonomies sur mesure, faites pour les besoins spécifiques d’une organisation. Des taxonomies de défauts développées en interne peuvent aussi être utilisées pour cibler des défauts spécifiques
trouvés dans l’organisation. Lors de la création d’une nouvelle taxonomie de défauts ou lors de l’adaptation d’une existante, il est important de définir les buts et objectifs de la taxonomie. Par exemple, le but peut être d’identifier des problèmes d’interface utilisateur ayant été découverts sur des systèmes en production ou d’identifier des problèmes relatifs à la gestion des champs de saisie d’entrées.
Pour créer une taxonomie:
- Créer un but et définir le niveau de détail désiré
- Sélectionner une taxonomie existante pour l’utiliser comme base
- Définir les valeurs et les défauts le plus souvent rencontrés dans l’organisation et/ou dans des pratiques extérieures
Plus la taxonomie est détaillée, plus elle sera longue à développer et à maintenir, mais cela doit permettre d’augmenter la productivité dans les résultats de test. Des taxonomies détaillées peuvent être redondantes mais elles permettent à l’équipe de test de se répartir le test sans perte d’information ou de couverture.
Une fois que la taxonomie la plus adaptée a été sélectionnée, elle peut être utilisée pour créer des conditions de test et des cas de test. Une taxonomie basée sur les risques peut aider le test à se concentrer sur un domaine spécifique. Des taxonomies peuvent également être utilisées pour des domaines non fonctionnels tels que l’utilisabilité, la performance, etc. Des listes de taxonomies sont offertes par différentes publications de l’IEEE, et sur Internet.
3.4 – Techniques basées sur l’expérience
Les tests basés sur l’expérience utilisent les compétences et l’intuition des testeurs, avec leur expérience sur des applications ou technologies similaires. Ces tests permettent de trouver des défauts mais ne sont pas aussi appropriés que d’autres techniques pour atteindre certains niveaux de couverture de test, ou pour produire des procédures de test réutilisables. Lorsque la documentation du système est pauvre, que le temps consacré au test est très réduit ou que l’équipe de test a une forte expertise dans le système à tester, le test basé sur l’expérience peut être une bonne alternative à des approches plus structurées. Le test basé sur l’expérience peut être inadapté à des systèmes demandant une documentation de test détaillée, une parfaite répétabilité ou la capacité à mesurer précisément la couverture de test.
En utilisant des approches dynamiques ou heuristiques, les testeurs s’appuient normalement sur les tests basés sur l’expérience, et le test est plus réactif aux événements que des approches de test planifiées à l’avance. De plus l’exécution et l’évaluation sont des tâches concurrentes. Certaines approches structurées des tests basés sur l’expérience ne sont pas entièrement dynamiques, (c.à.d., que les tests ne sont pas entièrement créés au moment où le testeur exécute les tests).
Même si certaines notions de couverture sont présentées pour les techniques discutées, les techniques basées sur l’expérience n’ont pas de critères de couverture formels.
3.4.1 Estimation d’Erreur (K2)
Avec la technique de l’estimation d’erreur, l’Analyste de Test utilise l’expérience pour deviner les erreurs potentielles pouvant avoir été faites lors de la conception et du développement du code. Une fois les erreurs attendues identifiées, l’Analyste de Test détermine les meilleures méthodes à utiliser pour découvrir les défauts associés. Par exemple, si l’Analyste de Test prévoit des erreurs du logiciel lors de l’introduction d’un mot de passe invalide, des tests seront conçus pour entrer un nombre important de valeurs différentes dans le champ mot de passe afin de voir si l’erreur a réellement été faite et a produit une défaillance visible lors de l’exécution des tests.
En plus de son utilisation comme technique de test, l’estimation d’erreur est aussi utile lors de l’analyse de risque pour identifier les différents modes de défaillance possibles.
Application
L’estimation d’erreur est utilisée principalement lors des tests d’intégration et des tests système, mais peut être utilisée à tous les niveaux de test. Cette technique est souvent utilisée conjointement à d’autres techniques et permet d’élargir le périmètre des tests existant. L’estimation d’erreur peut aussi être utilisée efficacement lors du test de la nouvelle version d’un logiciel, afin de commencer à tester les défauts et erreurs les plus fréquents avant de commencer des tests plus rigoureux et sous formes de script. Des check-lists et taxonomies peuvent aider à guider le test.
Limitations/Difficultés
La couverture est difficile à évaluer et varie beaucoup en fonction des capacités et de l’expérience de l’Analyste de Test. Elle sera plus efficace avec un testeur expérimenté habitué aux différents types de défauts les plus souvent introduits dans le code testé. L’estimation d’erreur est souvent utilisée mais rarement documentée et, par conséquent, peut être moins reproductible que d’autres formes de test.
Couverture
Lorsque l’on utilise une taxonomie, la couverture est déterminée selon les erreurs de données et les types de défauts correspondants. Sans taxonomie, la couverture est limitée par l’expérience et la connaissance du testeur, ainsi que par le temps disponible. L’intérêt de cette technique sera variable et fonction de la capacité du testeur à bien cibler les domaines problématiques.
Types de Défauts
Les principaux défauts sont en général ceux issus de la taxonomie retenue, ou “devinés” par l’Analyste de Test, et qui n’ont pas été trouvés par les tests basés sur les spécifications.
3.4.2 Test basé sur les check-lists (K3)
Avec la technique du test basé sur les check-lists, l’Analyste de Test expérimenté, utilise une liste de haut niveau d’éléments à noter, à vérifier, à mémoriser, ou un ensemble de règles et critères par rapport auxquels un produit doit être vérifié. Ces check-lists sont construites sur la base d’un ensemble de standards, de l’expérience et d’autres considérations. On peut citer comme exemple de test basé sur les check-lists, une check-list relative aux interfaces graphiques utilisée comme base pour les tests.
Application
Le test basé sur les check-lists est le plus efficace dans les projets disposant d’une équipe de test expérimentée, connaissant bien le logiciel à tester ou le domaine couvert par la check-list (p. ex., pour appliquer efficacement une check-list portant sur l’interface utilisateur, l’Analyste de Test peut être habitué au test d’interface utilisateur, mais pas spécifiquement au logiciel testé). Comme les check- lists sont en général de haut niveau et ne fournissent habituellement pas les étapes détaillées que l’on trouve dans les cas de test et les procédures de test, la connaissance du testeur est utilisée pour combler les manques. Sans étapes détaillées, les check-lists sont faciles à maintenir et peuvent être appliquées à de nombreuses livraisons du même type. Les check-lists peuvent être utilisées à tous les niveaux de test. Elles sont également utilisées pour le test de régression et le test fumigatoire.
Limitations/Difficultés
Le caractère de haut niveau des check-lists peut limiter la possibilité de reproduire les résultats de test. Des testeurs différents pourront interpréter différemment une même check-list et suivre des approches différentes pour satisfaire les éléments de la check-list. Cela peut entraîner des résultats différents, malgré l’utilisation d’une même check-list. Cela peut aboutir à une couverture plus large, mais parfois au détriment de la possibilité de reproduire les résultats de test. Les check-lists peuvent aussi conduire à une confiance excessive par rapport au niveau de couverture atteint, puisque le test
reste à l’appréciation du testeur. Les check-lists peuvent être dérivées de cas de tests ou de listes détaillées et ont tendance à grossir avec le temps. Leur maintenance est nécessaire pour assurer qu’elles couvrent les principaux aspects du logiciel testé.
Couverture
La couverture dépend de la check-list mais, compte-tenu de la nature de haut niveau des check-lists, les résultats seront différents en fonction de l’Analyste de Test qui appliquera la check-list.
Types de Défauts
Les principaux défauts trouvés avec cette technique seront des défaillances dues à une variation des données, de l’ordre des étapes ou du workflow général lors du test. L’utilisation de check-lists peut aider à garder un test renouvelé puisque de nouvelles combinaisons de données et de processus sont possibles durant le test.
3.4.3 Test Exploratoire (K4)
Le Test Exploratoire se caractérise par la réalisation simultanée par le testeur de la découverte du produit et de ses défauts, de la planification du travail de test à faire, de la conception et de l’exécution des tests, et du reporting des résultats. Le testeur ajuste dynamiquement les objectifs de test lors de l’exécution et ne conçoit qu’une documentation réduite.
Application
Un bon test exploratoire est géré, interactif et créatif. Il demande peu de documentation sur le système à tester et est souvent utilisé lorsque la documentation n’est pas disponible ou n’est pas adaptée à d’autres techniques de test. Le test exploratoire est souvent utilisé pour compléter d’autres techniques de test et pour servir de base au développement de cas de test supplémentaires.
Limitations/Difficultés
Le test exploratoire peut être difficile à gérer et à programmer. Sa couverture est sporadique et il est difficile à reproduire. L’une des méthodes utilisée pour gérer le test exploratoire est d’utiliser des chartes pour identifier les domaines à couvrir lors d’une session de test, et de limiter le temps pour préciser celui à consacrer au test. A la fin d’une session ou d’un ensemble de sessions de test, le Test Manager peut organiser une réunion de “débriefing” pour collecter les résultats des tests et définir des chartes pour les sessions futures. Les réunions de “débriefing” sont difficiles à organiser pour les grandes équipes ou les grands projets.
Une autre difficulté avec les sessions de test exploratoire est de les suivre précisément dans un système de gestion des tests. Cela se fait parfois en créant des cas de test qui sont en fait des sessions de test exploratoire. Cela permet de suivre le temps alloué au test exploratoire, ainsi que la couverture prévue, avec les autres efforts de test.
Le test exploratoire étant peu reproductible, des problèmes peuvent survenir lorsqu’il faut se souvenir des étapes nécessaires pour reproduire une défaillance. Certaines organisations utilisent les fonctionnalités de capture/rejeu d’un outil d’automatisation des tests pour enregistrer les étapes suivies par le testeur. Cela apporte un enregistrement complet de toutes les activités suivies lors de la session de test exploratoire (ou lors de toute autre session de test basé sur l’expérience). Rechercher dans les petits détails pour trouver la cause réelle d’une défaillance peut être fastidieux mais il y a au moins un enregistrement de toutes les étapes suivies.
Couverture
Des chartes peuvent être créées pour spécifier les tâches, les objectifs et les livrables. Des sessions exploratoires sont alors planifiées pour atteindre ces objectifs. La charte peut aussi préciser à quel endroit doit être concentré l’effort de test, ce qui fait ou ne fait pas partie de la session de test, et quelles ressources devraient être engagées pour accomplir les tests prévus. Une session peut aussi se concentrer sur un type particulier de défauts et sur d’autres domaines pouvant être sources de problèmes et que l’on peut traiter sans utiliser des scripts formels de test.
Types de Défauts
Les principaux types de défauts trouvés avec le test exploratoire sont liés à des problèmes de scénario non détectés lors des tests fonctionnels basés sur des scripts, à des problèmes se produisant entre des valeurs limites, et à des problèmes liés à des « workflows ». Des problèmes de performance et de sécurité sont aussi parfois découverts lors du test exploratoire.
3.4.4 Appliquer la meilleure technique
Les techniques basées sur les défauts et sur l’expérience nécessitent la mise en œuvre d’une connaissance des défauts et d’une expérience dans le domaine du test pour cibler le test afin d’augmenter le taux de détection des défauts. Elles vont du « test rapide » dans lequel le testeur n’a pas formellement préparé les activités à réaliser, aux sessions documentées, en passant par des activités simplement planifiées. En général, elles sont toujours utiles, en particulier dans les contextes suivants:
- Aucune spécification disponible
- Le système sous test est très peu documenté
- Manque de temps consacré à la conception et à la création de tests détaillés
- Testeurs disposant d’une forte expérience dans le domaine et/ou la technologie
- Objectif de maximiser la couverture des tests avec des tests complémentaires aux tests documentés
- Nécessité d’analyser des défaillances opérationnelles
Les techniques basées sur les défauts et sur l’expérience sont également utiles lorsqu’elles sont utilisées avec des techniques basées sur les spécifications, car elles couvrent les trous dans la couverture de test dus aux faiblesses typiques de ces techniques. Comme avec les techniques basées sur les spécifications, il n’existe pas une seule technique parfaite pour toutes les situations. Il est important pour l’Analyste de Test de comprendre les avantages et les inconvénients de chaque technique et d’être capable de sélectionner la meilleure technique ou la meilleure combinaison de techniques pour une situation donnée, en prenant en compte le type de projet, le planning, l’accès à l’information, les compétences du testeur et tout autre facteur pouvant influencer la sélection.
Les tests basés sur l’expérience utilisent les compétences et l’intuition des testeurs, avec leur expérience sur des applications ou technologies similaires. Ces tests permettent de trouver des défauts mais ne sont pas aussi appropriés que d’autres techniques pour atteindre certains niveaux de couverture de test, ou pour produire des procédures de test réutilisables. Lorsque la documentation du système est pauvre, que le temps consacré au test est très réduit ou que l’équipe de