Je sais que nous devrions avoir au moins 3 environnements différents lors du développement d'une solution:
- Développement : Les programmeurs sont libres de changer et de pousser les changements à tout moment afin de tester rapidement leur code et de s'intégrer à d'autres changements, sans craindre de casser quoi que ce soit - ceci est connecté aux bases de données et services TEST;
- UAT : devrait être traité avec respect par les développeurs, car il devrait contenir une copie "aussi bonne que possible" de l'environnement de production concernant le matériel, à la différence que cet environnement est connecté aux bases de données UAT avec une copie modifiable des données de production - il est utilisé à la fois par l'équipe Q&A et les utilisateurs pour valider les modifications qui iront en production
- Production : la vraie affaire.
J'ai examiné cette question sur SoftwareEngineering et cette question sur ServerFault , et ils semblent différer sur la signification de l'environnement de transfert. En outre, la page Wikipedia sur le sujet indique que:
L'utilisation principale d'un environnement de transfert consiste à tester tous les scripts et procédures d'installation / configuration / migration avant de les appliquer à l'environnement de production. Cela garantit que toutes les mises à niveau majeures et mineures de l'environnement de production seront effectuées de manière fiable et sans erreur, en un minimum de temps.
Pour moi, Staging équivaut à UAT, où vous devez tester les procédures d'application et de déploiement avant de passer au monde réel. Donc, nous poussons le package avec les modifications d'UAT de la même manière que nous poussons à la production, entièrement automatisé et avec toute la cérémonie que nous devrions avoir avec l'environnement de production.
Cela étant dit, quelle est la bonne différence entre un environnement UAT et un environnement de transfert?
-
EDIT: Juste pour être clair, je pense en termes d'application Web, que ce soit un site Internet ou un site intranet. Pas d'application "formulaires" ni d'application mobile.
Réponses:
La différence, ce sont les données.
Un environnement UAT est mis en place pour «l'acceptation par l'utilisateur» des nouvelles fonctionnalités. Afin de tester cette fonctionnalité, le contrôle qualité ou les parties prenantes peuvent configurer des profils utilisateur d'une manière particulière afin d'exercer des fonctionnalités particulières, ou peuvent configurer des produits ou des configurations fictifs pour les vérifier tous.
Un environnement intermédiaire est souvent mis en place avec une copie des données de production, parfois anonymisées. Certaines sociétés «actualisent» régulièrement leur base de données intermédiaire à partir d'un instantané de production. L'objectif principal est de s'assurer que l'application fonctionnera en production de la même manière que dans UAT. Au lieu de reconfigurer les données, les testeurs rechercheront dans la base de données des profils et des produits qui correspondent à un ensemble essentiel de cas de test. Souvent, les «vraies» données contiennent des caprices qui donnent lieu à des cas marginaux inattendus qui ont été manqués pendant l'UAT. De plus, tout test de migration de données devrait avoir lieu dans l'environnement de transfert.
la source
La définition de l'utilisation est très large ici et peut inclure toutes sortes de choses allant d'un changement de configuration effectué par les utilisateurs finaux à une fonctionnalité d'infrastructure coûteuse non disponible sur l'environnement UAT. Il est important de noter que la version du produit logiciel sur la mise en scène peut être nouvelle ou actuelle, mais toujours une version qui a déjà été acceptée.
En d'autres termes:
Remarque: comme cela a été décrit dans la question elle-même, il existe différentes interprétations de «l'environnement de transfert» et celle utilisée dans votre entreprise / environnement peut être différente.
la source
L'utilisation de ces différents environnements dépend vraiment de vos besoins. D'après votre commentaire que "staging == UAT", cela ressemble beaucoup à si vous avez une très petite application sans équipe QA, et seulement quelques développeurs.
Les environnements d'application plus importants peuvent avoir un environnement de test d'intégration, ainsi qu'un environnement QA, le premier où les développeurs exécutent leurs tests d'intégration et le second où l'équipe QA exécute leurs tests. Il peut exister un environnement de formation contenant des données de stock qui sont restaurées avant chaque session de formation. L'environnement de préparation serait sous le contrôle de l'équipe des opérations, pour garantir que les déploiements se déroulent correctement. L'environnement de test d'acceptation par l'utilisateur (UAT) serait utilisé par l'équipe client. Il peut également y avoir un environnement d'instantané de production pour reproduire les problèmes des clients.
Mon point est de méfier du point de vue unique lors de la détermination des environnements dont vous avez besoin.
la source
UAT signifie " User Acceptance Testing" et est l'environnement dans lequel les tests d'acceptation des utilisateurs sont effectués. Notez l'accent mis sur l'utilisateur - vos tests d'assurance qualité sont différents, l'UAT est une chance pour les utilisateurs réels (ou au moins votre équipe de formation, les ventes, le personnel de support, etc.) d'essayer de nouvelles fonctionnalités et d'évaluer le logiciel avant son déploiement sur leurs systèmes de production.
Ce que cela signifie exactement dépendra de vos processus:
En termes de déploiement continu / livraison continue, l'environnement de transfert est utilisé pour tester les logiciels dans un environnement "de type production", car il est probable que les développeurs travailleront dans un environnement présentant des différences significatives par rapport à la production (par exemple, pas d'équilibrage de charge, un plus petit jeu de données etc ...)
la source