Quelle est la différence entre les environnements intermédiaire et UAT?

10

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.

Machado
la source
4
Je veux que plus de gens interviennent, mais cela semble principalement basé sur l'opinion. Dans mon environnement actuel, Staging et UAT sont différents. UAT est un environnement public en direct qui est synchronisé avec les déploiements de production mais avec une charge de données différente pour permettre aux utilisateurs de jouer avec le logiciel. Nous l'appelons un environnement Sandbox pour les utilisateurs. Le staging est un endroit privé pour tester le déploiement et les changements d'infrastructure avant de les exécuter dans Production et UAT. Il existe des obligations envers les clients concernant la disponibilité et l'utilisation de l'UAT, mais pas la mise en scène. D'autres sociétés sont susceptibles d'être différentes.
Thomas Owens
@ThomasOwens le point est précisément que: Les deux environnements sont différents et pour certaines personnes, cela semble être une chose et pour d'autres, cela signifie d'autres choses. La question sur Server Fault a déclaré que vous utilisez la mise en scène pointant vers des données de production en ligne et que vous "basculez le commutateur", ce qui, je pense, est une approche intéressante, mais c'est une vue différente de ce que vous dites.
Machado
2
Le fait que c'est une chose pour certaines personnes et quelque chose d'autre pour d'autres est ce qui fait que cela est principalement basé sur l'opinion - il n'y a pas de réponse. Je n'ai pas encore appuyé sur la gâchette pour la fermer, au cas où je me trompe. C'est une question bien écrite et il peut y avoir une définition standard. Maintenant, si les gens choisissent d'ignorer cette définition standard et d'utiliser la leur, c'est une autre histoire.
Thomas Owens
@ThomasOwens, déclaration juste. Si cela ne vous dérange pas, gardons-le ouvert pendant quelques jours et s'il génère uniquement des réponses basées sur des opinions, je voterais volontiers pour conclure avec vous. :)
Machado
@ThomasOwens a convenu que je pense que cette question est également quelque peu subjective dans ce que les gens appellent la mise en scène. Notre UAT et notre environnement de staging sont la "même chose" mais c'est parce que nous avons de nombreuses versions, donc lorsque nous sommes prêts pour la sortie, nous prenons en charge l'environnement de staging et le préparons pour que UAT le publie. Les développeurs qui travaillent sur leurs propres choses ont toujours un moyen d'utiliser les branches de fonctionnalités sur notre environnement de scène, donc cela ne les bloque pas.
août

Réponses:

10

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.

John Wu
la source
1
| Environment | Software version  | Way of usage of software |
 ------------- ------------------- --------------------------
| UAT         | New               | Same as production       |
| Staging     | New or production | New for this version     |

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:

  • UAT existe pour prouver que la nouvelle version du logiciel fonctionnerait si elle était utilisée de la même manière que la version actuelle.
  • La mise en scène existe pour prouver qu'une nouvelle façon d'utiliser le produit logiciel avec une version acceptée du produit logiciel fonctionnerait de la même manière que la version actuelle du produit logiciel utilisée actuellement.

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.

Vlad
la source
0

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.

BobDalgleish
la source
Il semble que vous ayez 3 environnements de test différents, avec des objectifs différents, mais toujours des environnements de test: 1 axé sur les questions et réponses, 1 axé sur les développeurs et un axé sur l'équipe des opérations. Mais tous testent toujours des environnements et sont liés à des bases de données de test, par exemple. Est-ce correct ou ai-je raté quelque chose?
Machado
Chacun d'entre eux serait lié à sa propre base de données, oui.
BobDalgleish
-1

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:

  • UAT (l'environnement) peut être "au niveau" de la production et est essentiellement un bac à sable pour les utilisateurs avec lequel essayer de nouvelles fonctionnalités.
  • UAT (l'environnement) peut être "en avance" sur la production, de sorte que les nouvelles fonctionnalités ne sont pas déployées en production tant qu'elles n'ont pas été évaluées. (Je n'aime pas cette approche car cela signifie nécessairement que vous avez des délais plus longs).
  • Si vous disposez d'un système multi-locataire, vous n'aurez peut-être même pas besoin d'un environnement UAT, mais vous pourriez choisir que les utilisateurs évaluent les nouvelles fonctionnalités dans les systèmes de production en utilisant des indicateurs de fonctionnalité.

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 ...)

Justin
la source