Les tests en production : et si cela était bénéfique
À une époque où les tests manuels se retrouvent limités en temps, il est l'heure de penser à des alternatives. L'experte Gerie Owen explique pourquoi les tests en production sont essentiels.
Tester en production ? Vraiment ? Les tests en production - parfois appelés tests synthétiques - s'appliquent presque toujours aux applications Web, afin de garantir un comportement, des performances et un niveau de disponibilité adaptés en fonction de l'utilisation en production d'une application.
Les tests synthétiques ne sont pas très différents des tests automatisés. Vous enregistrez des séquences de tests en accédant à des pages Web et en entrant des données pour simuler des transactions courantes, puis vous les exécutez de façon régulière. L'objectif est de s'assurer que ces applications sont disponibles quand il le faut et qu'elles répondent aux normes du fournisseur. Ces tests servent également à vérifier que les résultats de chaque étape sont conformes aux attentes.
Une des différences clés est que ces types de tests sont exécutés alors que l'application est en cours d'exécution, face aux clients. Dynatrace, Catchpoint Systems et New Relic font partie de ce marché. Vous pouvez utiliser ces services de test à partir de points de présence mondiale, en simulant des clients réels ou des utilisateurs à partir de leur localisation géographique.
Ces tests peuvent également être utilisés pour surcharger une application et déterminer si cela affecte les performances. En créant de nombreuses instances de test, reposant sur divers types de tests géographiquement répartis, on peut simuler le comportement de l'utilisateur avec beaucoup plus de précision que dans un laboratoire.
Les résultats de ces tests dits synthétiques sont généralement affichés sur le tableau de bord du centre de contrôle des opérations réseau de l’entreprise ou dans un outil de monitoring. Les testeurs effectuent leurs tests dans le monde entier et tout au long de la journée, surveillent les signes d'un comportement inhabituel.
Les tests en production ne disparaissent pas
Comme vous pouvez l'imaginer, les tests en production sont controversés chez les testeurs traditionnels. Il existe une forte culture selon laquelle il est préférable d'effectuer les tests avant qu'une application ne soit placée en production. Une fois ces essais terminés, les testeurs sont plus ou moins assurés que l'application ne contient pas de défauts critiques et qu'elle se comportera comme prévu en production.
Cependant, il est impossible de maîtriser l'environnement de production pendant les essais de préproduction. Cela entraîne des défaillances qui se manifestent une fois l’interaction avec les utilisateurs réels effectuée. Si le déploiement se fait sur une ou plusieurs instances cloud, par exemple, le comportement des services cloud utilisés peut aussi affecter la qualité – lors d’une dégradation des performances dans un datacenter par exemple.
Les ingénieurs réseau ont besoin d'alertes, afin qu'ils puissent prendre des mesures. Les alertes peuvent être par exemple des notifications si un test ou un chargement de pages individuelles prend beaucoup plus de temps que d'habitude. Ces ingénieurs ont également accès à des graphiques sur les performances et les niveaux de disponibilité. Une seule défaillance n'est généralement pas une priorité, mais une série de défaillances ou une dégradation régulière des performances sont généralement la première indication d'un problème au niveau de l’application.
Les tests en production offrent aussi la possibilité d'identifier des problèmes sporadiques au niveau du réseau. Ces problèmes de disponibilité et de performance peuvent être réglés pendant la production (équilibrage de charge, routage, etc.).
Ceux qui effectuent ces tests sont généralement des ingénieurs réseau possédant les compétences nécessaires pour comprendre le fonctionnement réseau et serveurs. Ce qui leur manque, c'est la compréhension de la valeur d’usage de l'application et du comportement des utilisateurs.
Les testeurs traditionnels peuvent travailler à partir d'exigences et de retours utilisateurs pour concevoir des batteries de tests en production. Ils peuvent également développer des tests conçus pour sonder uniquement les points faibles d’une application.