L'une des principales idées fausses dans le paysage actuel des tests est que les tests en production ne nécessitent que trois compétences : l'expertise des processus, la connaissance des outils de test automatisés et les capacités de gestion des incidents. Ces compétences sont importantes, mais une absence flagrante — non seulement dans cette liste, mais aussi dans l'esprit des responsables du recrutement — concerne un élément que l'on pourrait considérer comme le plus fondamental :
La capacité à concevoir un test pratique pour les environnements de production.
Ce serait comique si ce n'était pas si alarmant : presque aucune organisation n'accorde la priorité à l'expertise en matière de compétences clés en assurance qualité lors de la mise en œuvre de stratégies de tests en production.
Qu'un test soit exécuté manuellement ou par automatisation dans un système de production en direct, vous devez d'abord savoir en concevoir un qui fournisse des informations exploitables sans perturber l'expérience utilisateur, n'est-ce pas ?
Ce serait comique si ce n'était pas si alarmant : presque aucune organisation n'accorde la priorité à l'expertise en conception de tests lors de la mise en œuvre de stratégies de tests en production. Qu'un test soit exécuté manuellement dans un environnement contrôlé ou automatisé dans un système de production en direct, vous devez d'abord savoir en concevoir un qui fournisse des informations exploitables sans perturber l'expérience utilisateur, n'est-ce pas ?
Exclure l'expertise en conception de tests de votre approche des tests en production pose un problème évident :
N'est-il pas essentiel de savoir que la personne qui met en œuvre les tests dans votre environnement de production comprend ce qui constitue un test pertinent ?
Puisque l'automatisation de tests mal conçus en production vous fournit plus rapidement des données peu fiables et crée des risques inutiles ? Et être « agile » tout en testant la production de manière incompétente ne me semble pas constituer une réelle amélioration, si ce n'est peut-être pour le maître Scrum.
L'importance et la discipline de la conception des tests, en particulier pour les scénarios de tests en production, doivent depuis longtemps être réhabilitées. Considérez ceci comme ma contribution à cet effort.
Qu'est-ce qui est essentiel pour des tests efficaces en production ?
La première étape pour maîtriser les tests en production consiste à établir quelques distinctions essentielles qui seront sans aucun doute déjà intuitivement familières à la plupart des professionnels de l'assurance qualité, mais qui sont rarement présentées de manière systématique dans le contexte des tests en production.
Explorons ces concepts fondamentaux qui transformeront votre approche des tests en production.
Fonctionnalités explicites et implicites dans les environnements de production
Commençons par la distinction essentielle entre les fonctionnalités explicites et implicites lors des tests en production.
Les premières correspondent à ce que la plupart d'entre nous considérons comme des « fonctionnalités ». Il s'agit de fonctions et de capacités officiellement spécifiées par le produit, dont la spécification formelle guide la mise en œuvre par l'ingénierie. Lors des tests en production, ces fonctions explicites constituent généralement l'objet principal des outils de surveillance et d'observabilité.
De ce fait, tester les fonctionnalités explicites en production peut sembler simple, mais même lorsque les fonctionnalités sont bien définies, ce n'est pas le cas, comme nous le verrons plus loin. Au moins, le niveau de précision propre aux fonctionnalités explicites facilite la construction d'une structure de tests de production autour de celles-ci (ou de l'illusion d'une telle structure).
Les fonctionnalités implicites dans un environnement de production sont d'une tout autre nature.
Elles consistent en des comportements et des réponses à des entrées utilisateur ou environnementales qui n'ont pas été formellement définis ou anticipés. L'incapacité à concevoir correctement des tests pour ces fonctionnalités implicites en production est, de loin, la principale source de bogues critiques découverts après le déploiement du produit (l'autre source étant des tests insuffisants dans des environnements matériels, logiciels ou périphériques périphériques).
En d'autres termes :
Tester les fonctionnalités implicites en production exige une grande ingéniosité et beaucoup d'imagination. C'est la partie véritablement créative des stratégies de tests en production.
Tester les fonctionnalités implicites dans les environnements de production exige une certaine dose de ruse diabolique pour devenir compétent, et malheureusement, cela ne peut pas s'apprendre par le biais des processus d'assurance qualité standard.
Aucune méthodologie agile ni aucun cadre de test automatisé ne vous apprendra à tester efficacement les fonctionnalités implicites en production, mais une conception appropriée des tests peut y encourager.
Alors, comment définir une stratégie de conception de tests pour les fonctionnalités implicites dans votre environnement de production ? Heureusement, c'est possible. Mais avant d'aborder directement cette question, explorons quelques distinctions supplémentaires pertinentes et essentielles à l'efficacité des tests en production.
Tests positifs et tests négatifs
À retenir : Lors des tests en production, les tests positifs comme les tests négatifs nécessitent des considérations particulières qui vont au-delà des approches traditionnelles de l'assurance qualité.
La plupart des personnes travaillant dans l'assurance qualité comprennent la différence fondamentale entre ces deux types de tests :
- Tests positifs en production : validation du bon fonctionnement des fonctionnalités comme prévu dans les environnements réels
- Tests négatifs en production : tester stratégiquement la manière dont votre système réagit à des entrées inattendues sans perturber les utilisateurs réels
Pourquoi les tests en production sont différents
Bien que ces distinctions soient claires sur le plan conceptuel, les tests en production introduisent des défis uniques :
- Enjeux plus importants : les cas limites affectent les clients réels et les opérations commerciales
- Complexité du monde réel : les comportements des utilisateurs suivent rarement des schémas prévisibles
- Continuité des activités : les tests ne doivent pas perturber les opérations normales
Au-delà des spécifications
Les spécifications fournissent rarement tout ce qui est nécessaire pour effectuer des tests efficaces en production :
Être excessivement dépendant de la spécification — qu’elle provienne de l’équipe produit ou de l’équipe d’ingénierie — limite votre réflexion. Cela pose particulièrement problème lors des tests en production, où les schémas d’utilisation réels s’écartent souvent des spécifications.
Cela illustre ce que j’appelle « l’erreur empirique » : attendre que quelque chose vous dise explicitement quoi faire avant de pouvoir le comprendre.
La conception réussie de tests pour les environnements de production nécessite :
- Une paramétrisation appropriée des fonctionnalités
- Une réflexion logique sur ce qui est possible
- La prise en compte des interactions avec les utilisateurs et l’environnement
Exemple concret : des comportements inattendus
À l’époque du Crétacé des logiciels (c’est-à-dire dans les années 80), j’ai testé un logiciel de conversion de documents et découvert des fonctionnalités surprenantes :
Afficher l’image
Exemple classique : dans WordPerfect, il était possible d’insérer une commande d’interligne au milieu d’un paragraphe, qui n’affectait que les lignes suivantes, créant ainsi des paragraphes avec deux valeurs d’interligne différentes.
Équivalents modernes lors des tests en production :
- Des combinaisons inattendues d’autorisations utilisateur dans les applications infonuagiques
- Des séquences de requêtes API imprévues dans les architectures de microservices
- Des conditions de concurrence dans les environnements à forte concurrence
Explorons maintenant les trois paramètres clés qui affineront votre approche des tests en production :
1. Test de la portée des fonctionnalités
Définition : identifier comment les utilisateurs pourraient déployer des fonctionnalités dans des contextes ou de façons qui n’ont jamais été imaginés lors de la conception.
Pourquoi est-ce important pour les tests
Toutes les contraintes ne sont pas prévues lors du développement. Dans les environnements de production, cette omission peut avoir de graves conséquences.
Au-delà de la simple validation
Lors des tests en production, tenez compte des limites suivantes :
À retenir : valider une fonctionnalité en production ne consiste pas seulement à confirmer qu’elle fonctionne comme prévu, mais aussi à vérifier qu’elle ne peut pas être utilisée de manière imprévue, au risque d’affecter la stabilité ou la sécurité du système.
Have an account? Log In
2. Test de l’interruption des flux de travail dans les systèmes réels
Avertissement : cette approche suppose que vous testez déjà des flux de travail définis en production. Si ce n’est pas le cas, commencez par corriger ces fondamentaux !
Au-delà du « chemin nominal »
Lors des tests en production, explorez les perturbations critiques suivantes des flux de travail :
✅ Flux de travail interrompus : processus commencé, mais jamais terminé
✅ Opérations annulées : l’utilisateur annule explicitement l’opération en cours
✅ Processus redémarrés : l’utilisateur tente plusieurs fois d’effectuer la même action
✅ Retour en arrière : l’utilisateur revient à des étapes précédentes avec des entrées différentes
Conseils de mise en œuvre pour les tests en production
Utilisez des techniques telles que les indicateurs de fonctionnalité afin de contrôler en toute sécurité l’exposition à ces tests dans les environnements de production.
Applications concrètes
Conseil de pro : ces scénarios sont rarement consignés dans les spécifications, mais représentent le comportement réel des utilisateurs en production.
3. La séquentialité dans les tests en production
Le défi : Dans les systèmes de production comportant plusieurs processus concurrents, la séquence des opérations peut entraîner des défaillances inattendues, difficiles à reproduire dans les environnements de test.
Deux schémas critiques de séquentialité
Conditions contributives antérieures
Afficher l’image
- Définition : Événements qui doivent se produire avant un processus défaillant
- Caractéristiques : Peuvent ne se manifester qu’après des séquences spécifiques qui mettent plusieurs jours à se produire naturellement
- Exemple en production : Autorisations utilisateur modifiées → le cache expire → une API spécifique est appelée
Conditions contributives ultérieures
- Définition : Défaillances qui ne deviennent apparentes qu’au cours d’interactions ultérieures
- Manifestation : La défaillance reste masquée jusqu’à une opération ultérieure
- Exemple en production : Une corruption des données se produit silencieusement jusqu’à la génération d’un rapport
Pourquoi est-ce si difficile ?
Définir la portée des tests de séquentialité en production nécessite :
- Une connaissance approfondie des interactions entre les systèmes
- La modélisation des transitions d’état pour les processus complexes
- La compréhension des combinaisons d’états prévues et imprévues
"Comme ces deux valeurs d’interligne dans un même paragraphe, ces états inattendus peuvent semer le chaos dans les environnements de production."
Outils essentiels pour tester la séquentialité en production
- Outils d’ingénierie du chaos pour introduire délibérément des défaillances contrôlées
- Outils d’observabilité pour suivre les changements d’état entre les systèmes
- Traçage distribué pour suivre les chemins des requêtes à travers les microservices
En résumé : Les problèmes de séquentialité représentent l’une des sources les plus importantes de bogues graves dans les systèmes de production modernes. Donnez la priorité à cet aspect dans votre stratégie de test.
En résumé
Les indicateurs de fonctionnalités transforment les tests en production, qui passent d’une pratique risquée à un processus contrôlé et axé sur les données. En dissociant le déploiement de la mise en production et en offrant des possibilités de restauration instantanée, ils créent un filet de sécurité qui permet aux équipes de valider les logiciels dans des conditions réelles sans compromettre l’expérience utilisateur ni la stabilité du système.
Plateformes de gestion des fonctionnalités pour les tests en production
Les plateformes de gestion des fonctionnalités ont transformé les tests en production, qui sont passés d’une entreprise risquée à un processus contrôlé et systématique. Pourtant, de nombreuses organisations ne parviennent pas à exploiter efficacement ces outils dans le cadre de leur stratégie de conception des tests.
L’évolution de la gestion des risques en production
Les approches traditionnelles des tests en production reposaient sur des décisions binaires : une fonctionnalité était soit disponible pour tout le monde, soit pour personne. Les plateformes de gestion des fonctionnalités changent fondamentalement ce paradigme :
- Contrôle précis : Tester les fonctionnalités auprès de segments d’utilisateurs spécifiques plutôt que d’effectuer des déploiements tout ou rien
- Correction instantanée : Désactiver les fonctionnalités problématiques sans déploiement de code ni restauration
- Exposition progressive : Augmenter progressivement l’exposition des utilisateurs en fonction des données de performance en temps réel
Au-delà des simples indicateurs de fonctionnalités
Bien que l’utilisation de simples indicateurs de fonctionnalités existe depuis des années, les plateformes modernes de gestion des fonctionnalités offrent des capacités essentielles qui transforment les tests en production :
Lorsqu’elles sont correctement intégrées à votre stratégie de conception des tests, les plateformes de gestion des fonctionnalités permettent :
- Confinement ciblé des risques - Limiter l’exposition aux nouvelles fonctionnalités à des segments d’utilisateurs spécifiques
- Validation auprès d’utilisateurs réels - Tester avec de véritables utilisateurs plutôt qu’avec des données de test synthétiques
- Correction immédiate - Résoudre les problèmes sans déploiements d’urgence ni restaurations
Intégration aux outils d’observabilité
La véritable puissance des plateformes de gestion des fonctionnalités apparaît lorsqu'elles sont intégrées aux systèmes d'observabilité et de surveillance :
Approche traditionnelle :
- Détecter les problèmes après le déploiement complet
- Vérification manuelle des résultats des tests
- Analyse post-mortem après les incidents
Intégration de la gestion des fonctionnalités :
- Corréler l'activation des fonctionnalités avec les métriques du système
- Surveillance automatisée des performances pour chaque indicateur de fonctionnalité
- Visibilité en temps réel sur les impacts des fonctionnalités
Impact concret : transformer les tests en production
Les organisations qui mettent en œuvre des plateformes de gestion des fonctionnalités font état d'avantages significatifs :
- Réduction de la gravité des incidents : « Nous pouvons tester les fonctionnalités en production bien avant un lancement marketing. Et si une fonctionnalité provoque des problèmes le jour du lancement, nous pouvons simplement la désactiver avec un interrupteur d'arrêt — aucun retour en arrière. » — Chris Guidry, vice-président de l'ingénierie, O'Reilly Media.
- Accélération des cycles de mise en production : Les équipes d'IBM, de TrueCar et d'autres entreprises de premier plan s'appuient sur la gestion des fonctionnalités pour effectuer des tests en production, en bénéficiant de ce qu'elles décrivent comme des « mises en production sûres et sans cérémonie ».
- Amélioration de la couverture des tests : Les indicateurs de fonctionnalité révèlent des cas limites impossibles à simuler dans des environnements contrôlés.
Mise en œuvre pratique dans la conception des tests
Pour intégrer efficacement les plateformes de gestion des fonctionnalités à votre stratégie de conception des tests :
- Concevez des points de vérification qui correspondent aux transitions des indicateurs de fonctionnalité
- Créez des scénarios de secours pour chaque composant contrôlé par un indicateur de fonctionnalité
- Établissez des seuils de performance qui déclenchent la désactivation automatique des fonctionnalités
- Définissez des cas de test propres à chaque segment afin de valider le comportement auprès des différentes populations d'utilisateurs
- Documentez les dépendances entre indicateurs afin d'éviter les défaillances en cascade
Les plateformes de gestion des fonctionnalités ne remplacent pas une conception réfléchie des tests — elles la renforcent. La qualité de vos tests en production dépend toujours fondamentalement de la qualité de leur conception.
Pièges courants à éviter
Même avec une gestion robuste des fonctionnalités, plusieurs difficultés subsistent :
- Dette liée aux indicateurs - Indicateurs abandonnés ou oubliés qui créent une dette technique
- Surveillance insuffisante - Échec à corréler l'état des indicateurs avec les performances du système
- Excès de confiance - Réduction prématurée des tests en préproduction
- Interdépendances entre indicateurs - Création de relations complexes et difficiles à diagnostiquer
En résumé
Les plateformes de gestion des fonctionnalités offrent de puissantes capacités pour effectuer des tests en production, mais elles doivent être intégrées de manière réfléchie à votre stratégie globale de conception des tests. Les organisations qui en tirent le plus de valeur ne se contentent pas de déployer ces outils — elles repensent fondamentalement le fonctionnement de la conception des tests dans un environnement contrôlé par des indicateurs de fonctionnalité.
Lorsqu'elle est correctement mise en œuvre dans le cadre d'une approche complète de conception des tests, la gestion des fonctionnalités transforme les tests en production, qui passent d'un mal nécessaire à un avantage concurrentiel.
Outils pour les tests en production : défis de mise en œuvre
Bien que les indicateurs de fonctionnalité et les plateformes de gestion constituent le fondement des tests en production, l'écosystème d'outils plus large présente ses propres défis de mise en œuvre. La sélection et la configuration des bons outils nécessitent une attention particulière aux compétences de l'équipe, à l'architecture du système et aux besoins de l'organisation.
Outils de surveillance et d'observabilité
La réussite des tests en production dépend d'une visibilité complète sur le comportement du système :
- Surveillance des performances des applications (APM)
Avantages : Fournit des informations détaillées sur les performances dans l'ensemble de la pile applicative.
Défis : Nécessite souvent une instrumentation importante et peut générer une quantité excessive de données qui submerge les petites équipes. - Systèmes de gestion des journaux
Avantages : Indispensables pour le débogage et l'analyse médico-légale lors des tests en production.
Défis : Peuvent générer des volumes de données considérables en l'absence de stratégies adéquates de filtrage et d'indexation. - Traçage distribué
Avantages : Offre une visibilité de bout en bout dans les architectures de microservices.
Défis : La complexité de mise en œuvre augmente considérablement dans les environnements hétérogènes utilisant plusieurs piles technologiques.
Systèmes de gestion des alertes
Une alerte appropriée est essentielle lors du test de nouvelles fonctionnalités en production :
- Plateformes d’agrégation des alertes
Avantages : Regrouper les notifications provenant de plusieurs systèmes de surveillance.
Défis : Excellentes pour la gestion des incidents, mais peuvent être perturbatrices si elles ne sont pas configurées avec soin afin d’éviter la fatigue liée aux alertes. - Systèmes de réponse aux incidents
Avantages : Fluidifier la communication lors des incidents en production.
Défis : Nécessitent des procédures opérationnelles et des points d’intégration bien définis pour être efficaces ; peuvent créer une surcharge pour les déploiements simples.
More Articles
Considérations relatives à la mise en œuvre
Lors de la mise en œuvre d’outils pour les tests en production, les équipes doivent évaluer :
- Exigences en matière d’évolutivité - L’outil pourra-t-il gérer vos volumes de trafic et la croissance de vos données ?
- Capacités d’intégration - Avec quelle facilité se connecte-t-il à votre chaîne d’outils existante ?
- Consommation de ressources - Quelle surcharge l’outil lui-même introduit-il ?
- Expertise de l’équipe - Disposez-vous des compétences nécessaires pour maximiser la valeur de l’outil ?
- Rapport signal/bruit - Pouvez-vous extraire des informations utiles sans vous noyer dans les données ?
Pièges courants lors de la mise en œuvre
- Multiplication des outils - Accumuler trop de solutions qui se chevauchent
- Instrumentation incomplète - Oublier des points de surveillance critiques
- Fatigue liée aux alertes - Générer un nombre excessif de notifications que les équipes finissent par ignorer
- Contexte insuffisant - Ne pas corréler les métriques avec l’impact sur les utilisateurs
- Silos de données - Créer des systèmes de surveillance isolés qui ne partagent pas leurs informations
Trouver le juste équilibre
Les mises en œuvre des tests en production les plus réussies trouvent un équilibre entre :
- Surveillance complète et complexité maîtrisable
- Informations détaillées et surcharge d’informations
- Réponses automatisées et points de décision humains
Lors de la mise en œuvre d’outils de test dans des environnements de production, commencez modestement avec des objectifs ciblés, puis élargissez progressivement la couverture à mesure que votre équipe développe son expertise des outils et de l’interprétation des données obtenues.
Charge, complexité, latence
Prenez en compte les facteurs macroscopiques de charge, de complexité et de latence dans la conception de vos tests. Ces facteurs peuvent affecter l’exécution ou l’achèvement d’une requête, d’un processus, ou d’un événement.
La pertinence de la charge du système devrait être évidente. Le traitement des requêtes ou des transactions pendant les périodes de forte sollicitation du système peut échouer (à n’importe quelle étape du processus de transaction).
Cela devrait constituer un élément par défaut de la planification de vos tests. Comme nous le savons tous, la charge peut également être générée par la requête elle-même — c’est-à-dire une requête de données qui déclenche le traitement et la transmission de très grandes quantités de données.
La complexité désigne ici principalement la complexité des requêtes envoyées à un système. Cette complexité peut consister en un certain nombre de conditions spécifiées (ainsi que leurs exclusions et exceptions), en un certain nombre de bases de données (virtuelles ou autres) impliquées dans les requêtes, ou encore dans la topologie de traitement du système lui-même.
Dans le contexte de cette discussion, j’utilise le terme latence pour désigner l’introduction de délais dans le processus de requête, ce qui ne correspond pas à son sens habituel. Je fais ici référence à la latence de l’utilisateur, et non à la latence de réponse du système lui-même.
En d’autres termes, comment la fonctionnalité ou la capacité se comporte-t-elle si l’utilisateur arrive à une étape précise du processus, puis reste en pause à cet endroit sans rien faire ? Le système expire-t-il (ce qu’il devrait probablement faire) ? Doit-il inviter l’utilisateur à agir ? Doit-il rester dans cet état jusqu’à la fin des temps ?
Les réponses à ces questions peuvent être fournies dans les spécifications, mais le produit testé peut ne pas se comporter de cette manière, ce qui explique précisément pourquoi nous testons.
Rôles des utilisateurs
Bien entendu, les utilisateurs finaux peuvent interagir avec les systèmes logiciels dans différents rôles. Un même utilisateur peut interagir avec le système dans différents rôles, en fonction de ses actions.
Cependant, les processus et services peuvent également avoir différents rôles et privilèges associés. Dans les deux cas, veillez à ce que la conception et la planification de vos tests, qu’il s’agisse de fonctionnalités ou de capacités, prennent en compte et testent tous les états de rôle possibles.
Et maintenant ?
Vous cherchez davantage de conseils sur la conception des tests ? Et vous souhaitez développer votre SaaS et renforcer vos compétences en leadership ?
Abonnez-vous à notre newsletter pour recevoir les dernières informations des CTO et des futurs leaders technologiques.
Nous vous aiderons à développer votre activité plus intelligemment et à diriger plus efficacement grâce aux guides, ressources et stratégies de grands experts !




