Garantir la qualité en agile
Introduction
Nous avons indiqué dans les chapitres précédents, en particulier lors de l’analyse et de la formalisation du besoin, que le niveau de qualité sur l’expression des besoins devait être fixé précisément. Le test est une activité de vérification et de validation qui permet de s’assurer que le niveau de qualité est respecté. Dans ce chapitre, nous nous interrogerons sur l’activité du test en agile et présenterons quelques spécificités, techniques et approches pour concevoir de bons tests, en relation avec une expression des besoins de qualité.
Tests en agile
1. Fondamentaux du test
L’intérêt du test n’est plus à démontrer. Le test est un moyen de vérifier et d’évaluer la qualité des livrables à différents moments du cycle de vie d’un produit, et de garantir que le produit fonctionne comme attendu par les utilisateurs et autres parties prenantes. En d’autres termes, la qualité du produit est directement liée à la satisfaction des exigences.
Les objectifs du test peuvent varier en fonction du contexte du système testé, du niveau de test et du cycle de vie du développement du produit.
Dans les approches traditionnelles, en cascade ou en V, le test est une activité importante qui suit typiquement les phases de conception et de développement. Cette activité est en général bien maîtrisée par les organisations. Ces dernières peuvent en effet s’appuyer sur de très nombreux retours d’expérience et de nombreuses formations. L’activité et le métier du test sont décrits et reconnus par des certifications au niveau international, comme avec l’ISTQB (International Software Testing Qualifications Board).
Le test est une activité qui dépasse largement le périmètre d’une phase identifiée en tant que telle dans un cycle. En effet, le travail à réaliser dans cette discipline ne se résume pas uniquement à exécuter les tests, mais bien plus largement à analyser, concevoir, planifier, implémenter les tests et maintenir un référentiel de tests.
Les bonnes pratiques de tests s’appuient sur les éléments suivants :
-
Des besoins traduits sous forme d’exigences.
-
Une couverture des exigences par des tests, matérialisée par des matrices de couverture.
-
Une stratégie de test définie.
Cette stratégie de test est un maillon essentiel car elle détaille l’organisation des tests avec le processus de test intégré au processus de développement utilisé, les ressources à gérer et les différents niveaux de tests à effectuer afin de réduire les risques.
Dans les approches traditionnelles, une équipe spécialisée dans...
Cas de test (Story Test)
Un cas de test correspond à une condition de test particulière d’une histoire utilisateur ; il doit être utile en soi. Un cas de test doit être défini par un intitulé et décrit par des étapes de test avec définition des jeux de données utilisées et des résultats attendus.
Une bonne pratique est souvent de tester le cas le plus courant, celui que l’on appelle le cas nominal, pour chaque cas d’usage. À partir de ce cas nominal, il faut alors trouver des cas particuliers (scénarios alternatifs et scénarios d’exception) qui permettront de tester in fine et au moins une fois tous les éléments, toutes les transitions, toutes les alternatives, toutes les valeurs et toutes les combinaisons d’entrées/sorties possibles.
Par exemple, pour l’histoire utilisateur suivante :
"En tant que client, je veux connaître les possibilités de covoiturage afin de sélectionner un véhicule pour effectuer mon voyage."
Le cas courant pourrait être :
-
Le client souhaite partir de Paris 15e pour aller à Avignon le 3 juillet vers 9 heures.
-
Le site affiche la liste des offres pour cette date au départ de Paris 15e et à destination d’Avignon dont les heures souhaitées de départ s’étalent...
Pratiques et techniques de test en agile
De nouvelles pratiques de test sont apparues avec le déploiement de l’agilité dans les organisations. Même si ces pratiques ne sont pas obligatoires pour être agile, elles ont fait leurs preuves en matière d’efficacité.
1. Test Driven Development (TDD)
Le concept du développement piloté par les tests (TDD) est une démarche de développement utilisant des cycles de livraison courts, basée sur des cas de test préfabriqués et combinant les méthodes de conception de tests et de conception de logiciels.
C’est une approche issue de l’eXtreme Programming (XP), qui est fondée sur les principes suivants :
-
Pratique basée sur les tests unitaires.
-
Codage des tests par les développeurs.
-
Codage des tests avant le codage des fonctions.
TDD définit que l’on doit d’abord rédiger les cas de tests, puis écrire le code, puis tester, et enfin revisiter le code tant que le test n’est pas "ok". Les tests doivent pouvoir être rejoués sans cesse et sans effort pour le développeur. Ce processus est répété jusqu’à résoudre le problème d’origine dans son intégralité.
Figure 5 - Approche TDD
Cette pratique de test peut être un peu déroutante au début, mais elle...