Historique de la question
Les environnements de test sont apparus avec la complexification des produits informatiques. La création d'un environnement distinct permet aux testeurs de vérifier en toute sécurité les nouvelles fonctionnalités, sans impacter les utilisateurs réels et les données.
Problème
Si les tests sont réalisés sur l'environnement de production, il existe un risque de perte de données, de perturbation des processus métier ou d'incidents de sécurité. Parfois, les environnements de test et de production diffèrent, ce qui provoque des erreurs "insaisissables" : les modifications fonctionnent en test, mais échouent en production (ou vice versa).
Solution
On organise des environnements séparés pour les tests (test, staging, pre-prod), qui reproduisent autant que possible l'environnement de production. Pour les tests manuels, il est crucial d'assurer une réelle conformité entre l'API, les données, la configuration et même le matériel. Une attention particulière est accordée à l'isolation des données utilisateur, à la configuration de la journalisation, de la surveillance et des données de contrôle.
Caractéristiques clés :
Peut-on utiliser l'environnement de production pour des tests si ceux-ci sont inoffensifs ?
Non, il y a toujours un risque de perturber le travail des utilisateurs ou de "révéler" des données de test. Même des tests "inoffensifs" peuvent affecter les statistiques ou provoquer une charge.
Quelle est la différence entre les environnements test, staging et pre-prod ?
Test — environnement pour les tests manuels et automatisés principaux, qui peut différer par les données. Staging/pre-prod — aussi proche que possible de la production, reproduit l'infrastructure et les données pour le test final.
Quelles données est-il préférable d'utiliser dans l'environnement de test : réelles, anonymisées ou synthétiques ?
La meilleure option est des données anonymisées, proches par leur structure des données réelles. Les données réelles compromettent la sécurité, alors que les données exclusivement synthétiques ne reflètent pas le comportement réel.
Le test d'un correctif est effectué en production, après la sortie, le bug est corrigé uniquement dans l'environnement de test, ce qui conduit à une nouvelle erreur en production : les clients se plaignent massivement.
Avantages :
Inconvénients :
L'équipe vérifie manuellement une fonctionnalité dans un staging séparé, les données de test sont régulièrement mises à jour, les tests sont aussi proches que possible de la réalité.
Avantages :
Sécurité de la production
Inconvénients :