La stratégie de test agile, un préalable à la performance d’entreprise

Par Nabil BEDOUI : Ingénieur conseil chez ACIAL, responsable du pôle performance.

La mise en place d’une réelle stratégie de test permet de piloter ces indicateurs en mettant en place un cadre pour maîtriser les coûts, réduire les cycles de livraison (time-to-market) et améliorer la qualité par la gestion des risques.

Pour être pragmatiques, les entreprises doivent trouver le bon équilibre entre ces différents paramètres. Ainsi, fournir des produits à moindre coût répondant aux exigences des clients et avec une qualité satisfaisante renforce l’image de marque et la légitimité sur le marché.
Dans le domaine du développement logiciel, l’adoption d’une stratégie basée sur la démarche Agile s’avère efficace pour répondre aux défis relatifs à la dynamique du marché. Cette démarche, à la différence des méthodes traditionnelles  (cycle en V, cascade …..), intègre les tests et l’assurance qualité très en amont dans le cycle de vie du projet.
QU’EST-CE QU’UNE DEMARCHE AGILE ?
Une démarche Agile est un groupe de méthodes de conception logiciel, basées sur des développements itératifs et incrémentaux, où les exigences et les solutions évoluent grâce à l’étroite collaboration entre les analystes métiers, les développeurs, les testeurs et les responsables applicatifs. Le manifeste Agile a été introduit au cours de l’année 2001.
LE CYCLE DE VIE AGILE :
Afin de comprendre comment l’activité de test s’inscrit dans la démarche Agile, il est important de se focaliser sur le cycle de vie de développement du système (SDLC).      
Un cycle de vie Agile est composé de différentes phases :
L’initialisation du projet.
Un projet s’inscrivant dans une démarche Agile nécessite un planning réaliste et une gestion efficace pour aboutir. Le responsable de l’activité test faisant partie intégrante de l’équipe projet doit établir le processus qualité, en mettant en place la stratégie de test. Cette stratégie détaillera le processus de développement utilisé, les ressources à gérer et les différents niveaux de tests à effectuer.
L’organisation de l’équipe prend une part importante de cette phase. Les modèles les plus couramment adoptés dans les projets agiles sont :
•        Organisation basée sur une équipe globale
Une organisation devenue un référentiel dans l’univers Agile consiste à regrouper l’ensemble des profils dans une même équipe. Ces profils, ayant les bonnes compétences et une vision claire du métier, seront à l’origine du succès du projet. Une telle équipe doit avoir des compétences en analyse du métier, en conception, en développement, en leaderships et surtout en tests. Les tests et le développement sont ainsi couplés.
 Ce choix stratégique a plusieurs avantages, notons par exemple :      
%uF0FC  Le gain de productivité, grâce à la réduction significative du temps d’attente entre la phase de développement et celle des tests, inhérent aux méthodes traditionnelles.
%uF0FC  La  réduction de la quantité de documents imposés par les procédures d’échanges et de communications entre les différentes équipes du projet.
%uF0FC  L’augmentation de la qualité du code fourni par des développeurs soutenus par les testeurs en appliquant les tests avant l’implémentation.
•        Organisation basée sur une équipe dédiée aux tests.
Le choix d’une équipe globale peut atteindre ses limites en fonction de la taille et de la complexité du projet. Dans ce cas, le découpage en sous-systèmes ou en plusieurs équipes devient incontournable. Ainsi, les tests seront assurés par une équipe dédiée. Cette équipe aura à sa charge la validation de la qualité des différentes livraisons à la fin de chaque itération (sprint). Afin de réduire le coût des projets, cette équipe peut être mutualisée et donc intervenir sur plusieurs applications simultanément.
La phase de développement :
Dans une topologie globale, l’équipe regroupe les analystes métier, les développeurs, les testeurs, et les utilisateurs de l’application. Ces acteurs se réunissent régulièrement et déterminent ensemble les nouvelles fonctionnalités à implémenter au cours du prochain sprint. Ces itérations, d’une durée définie, forment la clé de réussite de la démarche Agile. Souvent, la maîtrise du processus n’est pas suffisante au début du projet. En revanche, cette maîtrise s’améliore de jour en jour, en fonction de l’évolution du niveau de compréhension par l’équipe du système à implémenter.
Pour qualifier le système, plusieurs niveaux de tests sont utilisés :
•        Le développement piloté par les tests ou TDD
Le concept du développement piloté par les tests (TDD) est une technique 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 logiciels. A la lumière de cette intégration, il est à noter que cette technique est sans doute la plus efficace pour améliorer la qualité et éliminer les doublons.
TDD définit que l’on doit rédiger les cas de tests, écrire le code, tester et enfin revisiter le code produit. Selon Kent Beck, une règle clé des principes des tests préventifs consiste à «ne jamais écrire une seule ligne de code sans lui associer un test automatique ».
L’ajout de l’automatisation aux techniques traditionnelles de test implique une plus grande motivation des développeurs, davantage disposés à effectuer des tests unitaires et des tests de composants car les tests font partie de l’écriture du code. Une tâche de prédilection pour les développeurs !
Ces tests serviront aussi à des tests de non régression étant donné le caractère itératif de l’approche.
•        Le développement piloté par le test d’acceptation ou ATDD
A la différence du TDD, l’ATDD est réalisé pour qualifier les exigences en rédigeant un test client équivalent à un test fonctionnel ou à un test d’acceptation dans une méthode traditionnelle. Ce test est souvent nommé « développement piloté » par les critères d’acceptation du client. Cette technique consiste à construire par défaut un automate de test de l’exigence et à piloter l’implémentation des fonctionnalités de cette exigence via le TDD jusqu’à la réussite du test.
•        Les autres niveaux de tests
Au départ, lorsque la démarche Agile avait été portée sur les tests unitaires et d’acceptation, il apparaissait que les autres types de tests, comme le test système, le test de bout-en-bout et le test d’exploration ne faisaient pas partie de cette démarche et qu’ils pouvaient être effectués dans d’autres cadres.
Mais avec la maturité de la démarche Agile, les testeurs sont devenus très influents et leur rôle devient plus important dans les équipes projets. Ainsi, tous les types de tests font aujourd’hui partie intégrante de la stratégie de test Agile.
La Phase de livraison
Le but de tout projet Agile est de livrer le produit le plus rapidement possible et de passer ensuite à un processus d’amélioration continue. Cela signifie qu’il n’y a pas de phase finale de livraison pour un produit. Le produit sera mis en production dès que les fonctionnalités implémentées fonctionneront convenablement et que la qualité du produit remplira les critères d’acceptation du client. D’autres itérations peuvent être lancées pour compléter les fonctionnalités, donnant naissance à de nouvelles versions du produit.
 
QUEL ROLE A LE TESTEUR ?
L’expérience a montré que le profil de testeur le mieux adapté à la démarche agile est celui qui a des compétences de développe
ment et qui s’est orienté vers la qualification applicative. Ceci permet au testeur de cohabiter et de communiquer d’une manière fluide et sans risque de divergence avec les développeurs de l’équipe.
Parmi les responsabilités qui incombent à ce testeur :
•        Faciliter la communication entre l’équipe technique et les responsables d’application dans la définition des critères d’acceptation ;
•        Soutenir en amont la validation des besoins ;
•        Créer les tests d’acceptation à automatiser en élargissant leur champ d’application ;
•        Réaliser des tests manuels et des tests d’exploration à la fin de chaque sprint ;
•        Estimer les charges, planifier les tâches de tests et surtout alerter l’équipe sur les risques potentiels ;
•        Veiller à ce que les bonnes pratiques de tests soient utilisées :
%uF0FC  La technique de conception de tests ;
%uF0FC  Les indicateurs de maturité de la couverture des tests ;
 
BIEN S’ORGANISER POUR REUSSIR LES TESTS AGILES
Les projets Agiles imposent leurs propres défis aux équipes de test. Périmètre flou du projet, multiples itérations, documentation minimaliste, des besoins de tests fréquents très en amont du projet et l’implication du responsable applicatif dans le processus de développement : tout cela demande des capacités et des compétences fortes de la part de l’équipe de test.
Certaines de ces compétences essentielles sont :
•        La gestion des ressources
En fonction de l’avancement du projet, des compétences spécialisées peuvent s’avérer nécessaires pour couvrir différents types de tests. Ainsi, la mise à disposition d’un vivier de ressources permet une gestion efficace à travers le cycle de vie du projet.
•        La communication
Les avantages de l’organisation basée sur une équipe de test dédiée ne seront atteints qu’à la condition de mettre en place un système de communication fluide entre les testeurs, les développeurs, les analystes et les responsables applicatifs.
Le cycle itératif de développement et la fréquence de livraison exigent que toutes les équipes soient au même niveau de compréhension des exigences des utilisateurs de l’application. L’équipe de test doit maîtriser les outils de gestion de changement.
•        L’amélioration des processus
Un autre facteur clé de succès pour le développement Agile est la mise en œuvre de la gouvernance de la qualité des processus. Généralement, une organisation qui n’a pas de processus en place sera dans le chaos. Ces organisations devraient s’assurer que la gestion de configuration, la gestion du changement, la gestion de projet et la gestion des versions sont en place. Plusieurs méthodes proposent un contrôle du niveau de maturité de ces processus permettant de les améliorer, comme par exemple TMMi, CMMi,TPI, LEAN IT…
 
L’APPROCHE AGILE MET LE TEST AU CŒUR DES PROJETS
Les entreprises qui adoptent les projets Agiles réalisent l’importance de faire participer les équipes de test à l’initialisation du projet. Cela garantit une livraison rapide des applications métiers. Dans le cas où l’intérêt de la mise en place d’une stratégie de test Agile est d’atteindre la satisfaction du client par le retour sur l’investissement et la réduction des délais de livraison, une attention particulière est à apporter à la qualité. Cette qualité doit être mesurée à l’aide d’indicateurs de maturité et faire l’objet d’une amélioration continue.
 
Nabil BEDOUI : Ingénieur conseil chez ACIAL, responsable du pôle performance.
 
Nabil a démarré sa carrière en 1992, en tant que directeur de projets chez AINS, éditeur de logiciel de gestion. En 1998, il rejoint Cross-Systems Intégration en tant qu’architecte SI et puis en tant que responsable de l’offre performance. En 2004, il crée MARWAEL Consulting, qui propose des prestations de conseil dans la qualification des performances des systèmes-applicatifs.  En Septembre 2010, ACIAL lui propose de rejoindre son équipe afin de développer l’activité du pôle performance.
Nabil est titulaire d’un diplôme d’ingénieur et a obtenu un DEA en informatique & calcul numérique de l’école normale supérieure de Cachan.