1) Introduction
Dans « Agence tous risques », Hannibal Smith dit toujours: J’adore quand un plan se déroule bien…
Ce qui est intéressant dans cette notion de planification, c’est qu’elle n’est pas perçue pareillement suivant les cultures. Les gens du nord de l’Europe s’en tiennent facilement aux plans, quand les latins sont plus réactifs au changement.
Cela est important quand on sait que l’Agilité est née en réaction à cette planification de projet, qui est rarement appliquée comme il était prévu !
Depuis cette année 2001, écriture du manifeste Agile, de nombreux progrès ont été réalisés en termes de prise en compte de la qualité logicielle dans les projets de développement.
En parallèle, l’Agilité a convaincu de plus en plus d’organisations, qui la mettent en œuvre plus ou moins et avec plus ou moins de succès. Des interrogations se posent souvent sur les tests.
La convergence entre les bonnes pratiques de tests et l’agilité est maintenant à faire.
Après avoir discuté du manifeste Agile et de son impact sur les tests, cet article discutera des pratiques actuelles d’organisation et de planification des tests dans les environnements Agile.
2) Comprendre le manifeste Agile
Les auteurs du manifeste Agile se sont réunis en 2001 et ont réfléchi et écrit comment ils voyaient le développement des logiciels. Si dans le nord de l’Europe les projets sont très planifiés, en France et dans les pays latin, nous avons une culture plus réactive et
-
L’agilité semblera plus facile à mettre en œuvre,
-
Mais parfois, moins bien comprise que chez les non latins et des raccourcis trompeurs sont faits
-
Sa mise en oeuvre sera plus ou moins respectée…
Les individus et leurs interactions plus que les processus et les outils
Voici donc le premier des 4 grands concepts de l’agilité.
-
Vous avez entendu parler des services Méthodes qui doivent institutionnaliser l’usage d’outils pour tout le monde. Ces services sont essentiels à condition de laisser une part de liberté pour les projets. Ces processus doivent en effet être utilisés selon le contexte projet pour éviter l’effet « dictateur » qui peut entraîner leur rejet.
-
Parfois plusieurs services se succèdent, développement, intégration, validation MOA, validation opérationnelle de production, légale…
-
Parfois, ces différents services qui ont leur part de tests ne communiquent pas ensemble et un chef de projet fait un lien entre eux pour suivre l’avancement, suivant un Master test plan ou des procédures organisationnelles.
L’agilité va ici mettre en avant ce besoin de communication entre les services.
Cela signifie que ce fameux plan de tests maître pour le projet doit être réalisé par l’ensemble des parties prenantes du projet et qu’elles vont ensemble le suivre dans le temps.
Une bonne communication entre les personnes internes et externes à l’équipe agile est ici essentielle et fonctionne si les individus sont responsables et motivés pour travailler ensemble. La responsabilisation des individus et une bonne communication avec les autres, entraînera l’envie pour chacun de bien faire, et d’atteindre l’excellence.
La collaboration avec les clients plus que la négociation contractuelle
De même que les personnes doivent travailler ensemble, le client doit être mis à parti. Cela peut sembler difficile dans le cadre de relations contractuelles avec des parties tierces. Effectivement, il faut prévoir un modèle de contrat spécifique avec des limites pour accepter le changement avec en échange la forte participation et réactivité du client pendant le projet.
Néanmoins cela n’empêche pas de faire une bonne analyse fonctionnelle plutôt que de seulement recueillir le besoin du client qui ne le connait pas toujours.
Livrer le plus souvent des versions opérationnelles permettra d’éviter l’effet tunnel et de faire réagir le client.
L’adaptation au changement plus que le suivi d’un plan
Régir en fonction de contraintes commerciales ou techniques est important. Il faut re-prioriser ce qui était prévu. Mais il faut un plan qui prévoit que des changements vont avoir lieu, comment les gérer, des points de non-retour, ainsi que précisant comment les testeurs seront réaffectés à d’autres activités en cas d’arrêt momentané.
Pour bien s’adapter au changement, il faut avoir une vision globale du projet, et avoir prévu comment accueillir le changement pour ne pas avoir à subir de brusques changements de rythmes.
Finalement, ce n’est pas le plan qui est suivi mais la méthode de gestion des changements précisée dans le plan !, et ce plan lui-même devra être ajusté à intervalles réguliers.
Des logiciels opérationnels plus qu’une documentation exhaustive
Ce quatrième concept du manifeste est important pour les tests et la qualité du logiciel. Est-ce une réaction aux demandes d’avancement lassantes des ingénieurs Qualité logicielle ? (« T’en es où dans ton avancement d’écriture des spécifications, ou de l’avancement de tes scénarios de tests ? »). L’assurance qualité qui aurait dû apporter une vision globale de ce qu’il y a de fait et reste à faire et qui doit permettre de prendre des décisions, a parfois peut être semblé être de l’inspection de travaux finis.
Egalement, peut être que dans certains cas, avoir des spécifications trop détaillées n’est pas utile. D’une manière générale, si l’information n’est pas utilisée ou réutilisable, il faut effectivement s’interroger sur son opportunité.
Comme pour l’adaptation aux changements, la bonne documentation est celle qui va permettre de travailler et de réaliser des logiciels qui sont utilisés. « Juste ce qu’il faut », signifie avoir les éléments nécessaires et suffisants pour travailler et maintenir le logiciel dans le temps.
3) Organisation des tests
Dans le concept de l’agilité que nous venons de voir, regardons comment les organisations mettent en œuvre l’Agilité.
Le premier point est de voir comment dimensionner l’agilité dans une organisation.
L’agilité a été conçue au départ pour créer un logiciel opérationnel.
S’il s’agit de créer un logiciel et de simplement le livrer, le nombre de compétences nécessaires sera limité. Les développeurs, clients, testeurs seront concernés.
Les niveaux de tests (voir TMAP Next) et non pas phases de tests, seront tests de développement et acceptation métier. Cela correspond à l’exemple 1. Des itérations vont se suivre et livrer à chaque fois un logiciel accepté par le client. A charge au client d’intégrer par la suite chaque itération ou un ensemble d’itérations. Il pourra faire cela en environnement agile.
Par contre dans certains cas, l’organisation du projet prévoit que non seulement le logiciel sera livré au client, mais qu’il sera également intégré dans le système d’information. L’organisation doit alors prévoir des tests d’intégration dans le SI, ainsi que des tests opérationnels comme l’exploitation voire le déploiement.
Dans d’autres cas, l’organisation souhaite mettre en œuvre l’agilité sur l’intégration d’un progiciel dans le SI. Dans ce cas il y aura moins de tests de développement que de tests d’intégration dans le SI.
Gérer une équipe Agile devant contenir tous les acteurs, développeurs, testeurs métier, intégrateurs, performance, exploitation n’est pas aisé… Dans le cas de l’exemple 2, la communication en face à face, les « standing meeting », et la réalisation du « Done » comprenant les tests, risquent d’être difficiles. Il arrive dans ce cas que les responsables du projet ne prennent plus en compte la qualité du produit mais privilégient le développement des fonctionnalités.
Egalement, si la taille de l’équipe est réduite et intervient sur le cycle de vie complet, les testeurs se verrons demander des tests de performance, d’intégration, … Ce qui ne sera pas forcément dans leur domaine de compétence. Dès lors ils ne seront pas très motivés et cela ne correspondra pas au concept d’’excellence que prône l’agilité.
3.1 Stratégie de tests
Avant de discuter d’une autre organisation des tests dans l’agilité, regardons les caractéristiques qui sont à vérifier ou à valider et qui vont influencer l’organisation des équipes.
Vous connaissez peut être les 4 quadrants du test de Brian Marick repris par la suite par Lisa Crispin et Janet Gregory dans leur ouvrage « A Practical Guide for Testers and Agile Teams…”
Ce quadrant combine des tests de vérification et de validation (c’est-à-dire une critique du logiciel par des gens extérieurs) avec des points techniques et métier.
Le plan de test global du projet ou de l’itération doit prévoir des tests de non régression ou des tests des nouveautés pour ces différentes caractéristiques Qualité.
Quand je dis prévoir, il faut se rappeler le concept d’acceptation du « changement », c’est à dire qu’il faut prévoir ce qui ne changera pas et ce qui est susceptible de changer.
Qu’est-ce que l’on pourrait considérer comme stable ?
-
La méthodologie de chiffrage qui doit rester dans la philosophie Agile (Poker, estimation par plusieurs personnes)
-
Le besoin du client, c’est à dire les exigences générales, en termes de performance, de facilité d’installation, de facilité d’utilisation, de sécurité
-
Le besoin du système en termes d’interopérabilité, de capacité à être maintenu
-
Les techniques de tests à mettre en œuvre
-
Le fait qu’il y ait un backlog de tests en début d’itération et un « done » comprenant les tests à la fin de l’itération.
Qu’est ce qui n’est pas stable ?
Le périmètre des fonctionnalités, le calendrier des tests, les aléas projet
3.2 L’organisation Agile distribuée
Nous avons donc maintenant un ensemble d’objectifs de tests, de méthodes pour tester et chiffrer la charge nécessaire. Regardons comment imaginer une organisation des tests combinant les méthodes traditionnelles avec l’agilité.
Voici la méthode traditionnelle préconisée par l’ISTQB.
On commence par organiser les tests, périmètre, chiffrage, environnements, types de tests, stratégie de test.
Ce plan de tests sera suivi et ce contrôle permettra d’ajuster le plan à la réalité.
Une fois le plan de test réalisé, l’analyste de tests conçoit ses tests, implémente les environnements, exécute les tests tout en évaluant son travail et en informant les autres, avant finalement de clore le projet ou le cycle de tests.
1- Une planification générale du projet comme dit précédemment et qui sera suivie et ajustée. Rappelez vous que j’ai dit que ce plan de tests maître du projet explique « comment tester », donne une prévision des itérations pendant lesquelles cela sera fait, et ne donne pas le détail du périmètre ni le calendrier précis.
2- Ensuite, pour chaque itération, un plan de tests d’itération entre plusieurs équipes agiles, va donner des objectifs de tests à réaliser à plusieurs équipes.
Une équipe testera fonctionnellement les nouveautés, une autre équipe peut prendre en charge la non régression fonctionnelle, une autre les tests de performance, une autre les tests d’intégration dans le SI et une autre équipe de la production, l’acceptation opérationnelle.
Chaque équipe planifie en interne comment elle va tester l’itération, peut spécifier ses tests pour réutilisation en non régression, va déployer dans des environnements de tests spécifiques les livraisons des développeurs, exécuter les tests et clore l’itération.
Dans ce modèle, une équipe agile par service sera dédiée au projet.
L’avantage est que chaque équipe sera formée à ce qu’elle doit tester, et aura une taille permettant une bonne communication.
4) Conclusion
Dans les grandes organisations qui souhaitent faire évoluer leur système d’information en mettant en œuvre les méthodes Agiles, il faut combiner plan de test maître traditionnel et Agilité.
Lorsque le périmètre de l’Agilité aura été défini, qu’une partie du plan de tests maître aura été précisée, les stratégies d’itération en découleront plus facilement. En effet elles auront défini quels testeurs couvriront quels types de tests. Le test manager a toute sa place pour définir cette organisation avec les coach Agiles et les « product owner »