Was ist der Unterschied zwischen Staging- und UAT-Umgebungen?

9

Ich weiß, dass wir bei der Entwicklung einer Lösung mindestens drei verschiedene Umgebungen haben sollten:

  • Entwicklung : Die Programmierer können Änderungen jederzeit ändern und verschieben, um ihren Code schnell zu testen und in andere Änderungen zu integrieren, ohne befürchten zu müssen, dass etwas kaputt geht. Dies ist mit den TEST-Datenbanken und -Diensten verbunden.
  • UAT : Sollte von den Entwicklern mit Ehrfurcht behandelt werden, da es eine "so gut wie möglich" Kopie der Produktionsumgebung in Bezug auf Hardware enthalten sollte, mit dem Unterschied, dass diese Umgebung mit einer bearbeitbaren Kopie der Produktionsdaten mit UAT-Datenbanken verbunden ist - Es wird sowohl vom Q & A-Team als auch von den Benutzern verwendet, um Änderungen zu validieren, die in die Produktion gehen
  • Produktion : Das echte Geschäft.

Ich habe mich mit dieser Frage zu SoftwareEngineering und dieser Frage zu ServerFault befasst , und sie scheinen sich hinsichtlich der Bedeutung der Staging-Umgebung zu unterscheiden. Auf der Wikipedia-Seite zum Thema heißt es außerdem:

Die Hauptverwendung einer Staging-Umgebung besteht darin, alle Installations- / Konfigurations- / Migrationsskripts und -verfahren zu testen, bevor sie auf die Produktionsumgebung angewendet werden. Dies stellt sicher, dass alle größeren und kleineren Upgrades der Produktionsumgebung in kürzester Zeit zuverlässig und fehlerfrei durchgeführt werden.

Für mich ist Staging gleich UAT, wo Sie die Anwendungs- und Bereitstellungsverfahren testen müssen, bevor Sie in die reale Welt wechseln. Also schieben wir das Paket mit den Änderungen an UAT genauso voran wie mit der Produktion, vollautomatisch und mit all den Zeremonien, die wir mit der Produktionsumgebung haben sollten.

Was ist der richtige Unterschied zwischen einer UAT-Umgebung und einer Staging-Umgebung?

- -

EDIT: Um ganz klar zu sein, ich denke an eine Webanwendung, sei es eine Internet-Website oder eine Intranet-Website. Keine "Formular" -App oder mobile App.

Machado
quelle
4
Ich möchte, dass mehr Leute abwägen, aber dies scheint in erster Linie meinungsbasiert zu sein. In meiner aktuellen Umgebung unterscheiden sich Staging und UAT. UAT ist eine öffentliche Live-Umgebung, die mit Produktionsbereitstellungen synchronisiert ist, jedoch eine andere Datenlast aufweist, damit Benutzer mit der Software herumspielen können. Wir bezeichnen es als Sandbox-Umgebung für Benutzer. Staging ist ein privater Ort zum Testen von Bereitstellungs- und Infrastrukturänderungen, bevor diese in Production und UAT ausgeführt werden. Es bestehen Verpflichtungen gegenüber Kunden hinsichtlich der Verfügbarkeit und Nutzung von UAT, jedoch nicht hinsichtlich der Bereitstellung. Andere Unternehmen dürften anders sein.
Thomas Owens
@ThomasOwens der Punkt ist genau das: Beide Umgebungen sind unterschiedlich und für manche Menschen scheint es eine Sache zu sein und für andere Menschen bedeutet es andere Dinge. In der Frage zu Server Fault heißt es, dass Sie Staging verwenden, das auf Online-Produktionsdaten verweist, und einfach den Schalter umlegen. Dies ist meiner Meinung nach ein interessanter Ansatz, aber eine andere Ansicht als die, die Sie sagen.
Machado
2
Die Tatsache, dass es eine Sache für einige Menschen und etwas anderes für andere Menschen ist, macht diese hauptsächlich meinungsbasierte Sache aus - es gibt keine Antwort. Ich habe den Abzug beim Schließen noch nicht gedrückt, falls ich mich irre. Es ist eine gut geschriebene Frage, und es gibt möglicherweise eine Standarddefinition. Wenn die Leute diese Standarddefinition ignorieren und ihre eigene verwenden, ist das eine andere Geschichte.
Thomas Owens
@ ThomasOwens, faire Aussage. Wenn es Ihnen nichts ausmacht, lassen Sie es ein paar Tage offen und wenn es nur meinungsbasierte Antworten hervorbringt, würde ich gerne abstimmen, um mit Ihnen zu schließen. :)
Machado
@ThomasOwens stimmte zu Ich denke, diese Frage ist auch etwas subjektiv in dem, was die Leute als Inszenierung bezeichnen. Unsere UAT- und Staging-Umgebung sind "dasselbe", aber dies liegt daran, dass wir viele Releases haben. Wenn wir zur Veröffentlichung bereit sind, übernehmen wir die Staging-Umgebung und bereiten sie für die Freigabe durch UAT vor. Entwickler, die an ihren eigenen Dingen arbeiten, haben immer noch die Möglichkeit, Feature-Zweige in unserer Bühnenumgebung zu verwenden, damit sie nicht blockiert werden.
August

Antworten:

9

Der Unterschied sind die Daten.

Eine UAT-Umgebung wird für die "Benutzerakzeptanz" neuer Funktionen eingerichtet. Um diese Funktionalität zu testen, können QS oder Stakeholder Benutzerprofile auf eine bestimmte Weise einrichten, um bestimmte Funktionen auszuüben, oder Scheinprodukte oder -konfigurationen einrichten, um sie alle zu überprüfen.

Eine Staging-Umgebung wird häufig mit einer Kopie von Produktionsdaten eingerichtet, die manchmal anonymisiert sind. Einige Unternehmen "aktualisieren" ihre Staging-Datenbank regelmäßig anhand eines Produktions-Snapshots. Das Hauptaugenmerk liegt darauf, sicherzustellen, dass die Anwendung in der Produktion genauso funktioniert wie in UAT. Anstatt Daten neu einzurichten, durchsuchen Tester die Datenbank nach Profilen und Produkten, die einer wesentlichen Reihe von Testfällen entsprechen. Oft enthalten die "echten" Daten Macken, die zu unerwarteten Randfällen führen, die während der UAT übersehen wurden. Außerdem müssten alle Datenmigrationstests in der Staging-Umgebung stattfinden.

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

Die Definition der Verwendung ist hier sehr weit gefasst und kann alle Arten von Dingen umfassen, die von einigen Konfigurationsänderungen durch Endbenutzer bis hin zu kostspieligen Infrastrukturfunktionen reichen, die in der UAT-Umgebung nicht verfügbar sind. Wichtig ist, dass die Version des Softwareprodukts beim Staging entweder neu oder aktuell sein kann, aber immer eine, die bereits akzeptiert wurde.

Mit anderen Worten:

  • UAT ist vorhanden, um zu beweisen, dass eine neue Version des Softwareprodukts funktionieren würde, wenn sie genauso verwendet würde wie die aktuelle Version.
  • Es gibt Staging , um zu beweisen, dass eine neue Art der Verwendung von Softwareprodukten mit einer akzeptierten Version des Softwareprodukts genauso funktioniert wie die aktuelle Version des Softwareprodukts.

Hinweis: Wie in der Frage selbst dargestellt, gibt es unterschiedliche Auffassungen von "Staging-Umgebung", und eines, das in Ihrem Unternehmen / Ihrer Umgebung verwendet wird, kann unterschiedlich sein.

Vlad
quelle
0

Die Verwendung dieser verschiedenen Umgebungen hängt wirklich von Ihren Anforderungen ab. Aus Ihrem Kommentar "staging == UAT" geht hervor, dass Sie eine sehr kleine Anwendung ohne QA-Team und nur ein paar Entwickler haben.

Größere Anwendungsumgebungen verfügen möglicherweise über eine Integrationstestumgebung sowie eine QS-Umgebung, in der erstere Entwickler ihre Integrationstests ausführen und in letzterer das QA-Team ihre Tests ausführen. Möglicherweise gibt es eine Schulungsumgebung mit Bestandsdaten, die vor jeder Schulungssitzung wiederhergestellt werden. Die Staging-Umgebung würde vom Betriebsteam kontrolliert, um sicherzustellen, dass die Roll-outs ordnungsgemäß durchgeführt werden. Die UAT-Umgebung (User Acceptance Test) wird vom Kundenteam verwendet. Möglicherweise gibt es auch eine Produktions-Snapshot-Umgebung zum Reproduzieren von Kundenproblemen.

Mein Punkt ist es, den einzelnen Gesichtspunkt zu beachten, wenn Sie die Umgebungen bestimmen, die Sie benötigen.

BobDalgleish
quelle
Es scheint, als hätten Sie 3 verschiedene Testumgebungen mit unterschiedlichen Zwecken, aber dennoch Testumgebungen: 1 mit Schwerpunkt auf Fragen und Antworten, 1 mit Schwerpunkt auf Entwicklern und eine mit Schwerpunkt auf dem Betriebsteam. Alle testen jedoch noch Umgebungen und sind beispielsweise an Testdatenbanken gebunden. Ist das richtig oder fehlt mir etwas?
Machado
Jeder von ihnen wäre an seine eigenen Datenbanken gebunden, ja.
BobDalgleish
-1

UAT steht für " User Acceptance Testing" und ist die Umgebung, in der Benutzerakzeptanztests durchgeführt werden. Beachten Sie die Betonung des Benutzers - Ihre QS-Tests sind unterschiedlich. UAT bietet tatsächlichen Benutzern (oder zumindest Ihrem Schulungsteam, Vertrieb, Support-Personal usw.) die Möglichkeit, neue Funktionen auszuprobieren und die Software zu bewerten, bevor sie bereitgestellt wird ihre Produktionssysteme.

Was dies genau bedeutet, hängt von Ihren Prozessen ab:

  • UAT (die Umgebung) ist möglicherweise "eben" mit der Produktion und ist im Wesentlichen eine Sandbox, mit der Benutzer neue Funktionen ausprobieren können.
  • UAT (die Umgebung) ist möglicherweise der Produktion "voraus", sodass neue Funktionen erst dann in der Produktion bereitgestellt werden, wenn sie evaluiert wurden. (Ich bin nicht begeistert von diesem Ansatz, da dies zwangsläufig bedeutet, dass Sie längere Vorlaufzeiten haben).
  • Wenn Sie ein mandantenfähiges System haben, benötigen Sie möglicherweise nicht einmal eine UAT-Umgebung. Stattdessen können Sie festlegen, dass Benutzer neue Funktionen in Produktionssystemen mithilfe von Funktionsflags bewerten.

In Bezug auf Continuous Deployment / Continuous Delivery wird die Staging-Umgebung zum Testen von Software in einer "produktionsähnlichen" Umgebung verwendet, da Entwickler wahrscheinlich in einer Umgebung mit erheblichen Unterschieden zur Produktion arbeiten werden (z. B. kein Lastausgleich, eine kleinere Datensatz etc ...)

Justin
quelle