L’accélération des rythmes de mise en production, l’amélioration de l’expérience utilisateur des clients et des salariés, l’intégration au système d’information des interfaces web, mobiles et des objets connectés, sont des effets directs de la transformation digitale.
Mettre rapidement en ligne la nouvelle page de prix, de nouveaux services de réservation, ou l’offre TGVmax chez Voyages-sncf.com ne peut se faire sans une transformation de l’ensemble des pratiques de développement vers l’agilité à l’échelle.
Avec la transformation digitale, les approches agiles se sont imposées pour le développement des interfaces web, mobiles et des objets connectés, afin de répondre aux accélérations des mises en production et d’amélioration de l’expérience utilisateur. L’intégration de ces applications au système d’information impose maintenant de passer à une agilité à grande échelle.
La transformation digitale et l’agilité à grande échelle sont indissociables et s’appuient sur les piliers suivants :
– Le passage en « feature teams » : pour accélérer les mises en production, il faut paralléliser les développements entre équipes agiles focalisées chacune sur une thématique (ou une partie du système). Ce sont des équipes ‘cross-fonctionnelles’ qui intègrent toutes les compétences : d’expression de besoins, d’architecture, de test, d’interface et d’expérience utilisateur, de développement, et de mise en production, pour délivrer le service avec des mises en production fréquentes.
– L’intégration continue et l’intensification des tests automatisés : maîtriser les risques d’une mise en production plus rapide nécessite de tester plus, mieux (nous allons voir cela dans la section suivante), mais aussi de tester en continu.
– L’amélioration de la qualité perçue et de l’expérience utilisateur : deux enjeux critiques si l’on ne veut pas que le client aille voir ailleurs. L’expérience utilisateur se construit en agrégeant les caractéristiques de qualité à l’usage (en termes de fonctionnalité, de performance, de sécurité en particulier) avec des interfaces adaptées aux profils, aux conditions d’utilisation et aux besoins effectifs de l’utilisateur.
– Une agilité qui implique toute l’organisation : les équipes de développement ne sont pas les seules à passer à l’agile, mais l’organisation dans son ensemble, incluant l’analyse métier, la production et, bien-sûr, les fonctions d’assurance qualité !
– Une adaptation incrémentale de l’architecture : c’est un des défis importants du passage à l’agilité à l’échelle, car pour pouvoir passer en ‘feature teams’ il faut que l’architecture évolue afin de diminuer les dépendances entre les différentes parties du système du point de vue de sa conception interne. Et parallèlement, il faut maintenir la cohérence de l’architecture en articulant les évolutions réalisées au sein des équipes.
Transformation digitale
et agile
vont de pair
Le test joue un rôle central dans le passage à l’agilité à grande échelle
Comment sécuriser des mises en production plus rapides, sur des systèmes plus complexes, et avec des objectifs de qualité plus importants ?
En testant plus et mieux !
Le test est au cœur de la transformation digitale et agile car la priorité donnée à l’expérience utilisateur nécessite de mettre à sa disposition des services de qualité. L’amélioration des pratiques de test et leur plus grande automatisation accompagnent nécessairement la transformation agile, pour qu’elle atteigne son objectif : un niveau de satisfaction des utilisateurs accru couplé à des mises en production plus rapides.
‘FROM 3 STARS RATING TO 5 STARS IN THE APP STORE’, présenté par Spotify lors de la conférence UCAAT 2015, montre les enjeux : l’amélioration des pratiques du test a été un contributeur décisif pour améliorer la notation des services rendus à ses utilisateurs.
Cette amélioration des pratiques du test est caractérisée par deux piliers :
– Le renforcement des pratiques du test unitaire et d’intégration par les Développeurs. Le code doit être stable, ce qui implique un renforcement des tests unitaires et d’intégration mis en œuvre dans l’intégration continue. Ces tests automatisés sont créés et maintenus par les Développeurs. Ils constituent le socle de la pyramide du test et leur renforcement est intégré dans les pratiques quotidiennes du développement.
– L’accroissement de la valeur métier des tests applicatifs et des tests de bout en bout. En complément des tests unitaires et des tests d’intégration, les tests d’acceptation au niveau d’une application ou traversant plusieurs applications doivent posséder une forte pertinence métier. Ces tests vont traduire des parcours applicatifs représentatifs des différents types d’utilisateur, avec une intensité de test qui dépendra des risques estimés sur les fonctions testées.
Les Développeurs, au sein de l’équipe agile, portent le renforcement des tests unitaires et d’intégration, et le maintien de leur automatisation en lien avec l’intégration continue. Les testeurs, avec le Product Owner, portent la mise en œuvre des tests au niveau applicatif et de bout-en-bout.
La collaboration entre le product owner et les testeurs au sein de la ‘feature team’
Une bonne pratique essentielle, dite « shift left », est l’implication des testeurs en amont dans les différentes étapes de raffinement de l’expression des besoins. Lors de la décomposition des besoins métiers en User Stories plus détaillées, les Testeurs contribuent à la définition des critères d’acceptation pour chaque User Story. Avec leur vision test, ils peuvent questionner le service rendu, mais aussi la qualité globale attendue.
Mieux encore, lorsque les Testeurs écrivent les scénarios d’acceptation pour les expressions de besoins détaillés, cela améliore à la fois la compréhension partagée de la User Story, et cela permet de fournir les scénarios d’acceptation pilotant les développements.
Travail collaboratif
entre Product Owner,
Analystes métier
et testeurs
La représentation visuelle des parcours utilisateurs, mais aussi des règles métiers (par exemple au travers de tables de décision), permettent de clarifier l’expression de besoins pour un ensemble de User Stories (rassemblées en Epic dans le jargon agile) et produire les scénarios de test d’acceptation associés. Ces tests peuvent être exécutés manuellement ou automatisés à partir des « fixtures » de test, c’est-à-dire des fonctions d’automatisation fournies par les Développeurs.
Au-dela des ‘feature teams’, les tests de bout-en-bout
L’éclatement des développements en ‘Feature Teams’ présente un avantage important : pouvoir paralléliser les mises en production. Cela induit aussi la nécessité de conserver une vision globale du système et de sa qualification.
Les expressions de besoin peuvent être raffinées et décomposées en User Stories pour chaque « Feature team », mais à un moment donné, les parcours utilisateurs de bout-en-bout doivent être qualifiés pour s’assurer que les processus métiers délivrés par l’organisation sont opérationnels sur l’ensemble des services rendus.
Prenons l’exemple de services digitaux de suivi de la consommation d’énergie pour des clients particuliers ou professionnels : l’ajout de service pour permettre de configurer le suivi, par exemple, doit à la fois être testé dans la fonctionnalité, et dans le parcours qui va d’une consommation à la facturation, donc bien au-delà de la fonction modifiée.
Les tests de bout-en-bout, inter ‘feature teams’ sont donc indispensables et viennent compléter le test des User Stories et des ensembles de User Stories. La représentation visuelle des parcours applicatifs, au bon niveau de détails, par exemple sous la forme de workflows métiers, permet de partager les priorités du test entre les Testeurs, le Product Owner et les Analystes Métiers.
Une difficulté évidente concerne l’automatisation de ce niveau de test : ne pas automatiser les tests de bout-en-bout revient à ralentir certaines mises en production, mais l’automatisation à ce niveau de test peut être assez couteuse en création et en maintenance. L’efficience des tests, leur optimisation devient alors un point essentiel : il faut limiter le nombre de ces tests de haut niveau tout, en optimisant leur valeur métier.
L’évolution du rôle des testeurs dans l’agilité à l’échelle
Dans le contexte de la transformation vers l’agilité à l’échelle, les Testeurs sont en premier lieu positionnés au sein des ‘Feature Teams’ pour apporter leur contribution au travail quotidien de l’équipe. Leur rôle évolue : ils travaillent dans un mode collaboratif renforcé, à la fois avec le Product Owner pour les tests d’acceptation, et avec les Développeurs pour la remontée des anomalies et l’automatisation des tests.
Les Testeurs portent également une vision globale de la qualité du produit, en lien avec la vision Métier.
En second lieu, les Testeurs sont positionnés sur le bout-en-bout, c’est-à-dire sur des tests portant sur la qualification de scénarios d’usage qui traversent les fonctionnalités gérées par plusieurs ‘feature teams’. Ici aussi, la question de l’optimisation de ces tests est essentielle, par une approche dirigée par les risques sur les processus métiers pour piloter la production des tests de bout-en-bout.
Quelle que soit le positionnement du Testeur, au sein de la ‘feature team’ ou au sein de l’équipe de tests de bout-en-bout, sa fonction évolue vers plus de capacité collaborative au service de la pertinence métier des tests produits.
En conclusion – Renforcer les pratiques de test pour réussir la transformation digitale et agile
La transformation digitale des grandes organisations s’accompagne du passage vers l’agilité des modes de développement IT. Cette évolution concerne l’ensemble des parties-prenantes : Analystes Métiers, Développeurs, Testeurs, et Production.
Le renforcement des pratiques du test joue un rôle central pour réussir cette transformation dans l’objectif à la fois de réduire le time-to-market, d’améliorer la satisfaction des utilisateurs et de sécuriser la qualité des mises en production.
Le rôle des Testeurs évolue :
– ils interviennent plus en amont dans le raffinement de l’expression de besoin, en collaboration avec le Product Owner et les Analystes Métier,
– ils produisent les tests d’acceptation qu’ils exécutent dès la réception des fonctions correspondantes,
– et ils collaborent aussi avec les développements pour accroitre le patrimoine des tests automatisés.
Ces dernières années ont permis une forte augmentation de la professionnalisation des Testeurs, s’appuyant en particulier sur le référentiel de la certification des compétences CFTL / ISTQB. Cette nouvelle phase conduit à approfondir et élargir ces compétences autour d’un rôle qui devient central dans la production itérative des nouveaux services pour les utilisateurs.
___________
Bruno Legeard est Expert Testing – CFTL (Comité Français des Tests Logiciels)