登台和UAT环境之间有什么区别?


10

我知道在开发解决方案时,我们应该至少有3种不同的环境:

  • 开发:程序员可以随时更改和推送更改,以便快速测试他们的代码并与其他更改集成,而不必担心破坏任何东西-它与TEST数据库和服务相关;
  • UAT:开发人员应该尊重UAT,因为它应该包含有关硬件的生产环境的“尽可能好”的副本,不同之处在于该环境通过生产数据的可编辑副本连接到UAT数据库-问答团队和用户都使用它来验证将要投入生产的变更
  • 生产:真实交易。

在SoftwareEngineering上研究了这个问题在ServerFault 研究了这个问题,它们在暂存环境的含义上似乎有所不同。另外,有关该主题的Wikipedia页面指出:

暂存环境的主要用途是在将所有安装/配置/迁移脚本和过程应用于生产环境之前对其进行测试。这样可以确保对生产环境的所有主要和次要升级都能在最短的时间内可靠地完成而不会出错。

对我来说,登台等于UAT,您必须在UAT上测试应用程序和部署过程,然后才能进入现实世界。因此,我们将对UAT所做的更改以与推送到生产的方式相同的方式推送到软件包中,完全自动化,并在生产环境中进行所有应有的仪式。

话虽如此,UAT环境和暂存环境之间的适当区别是什么?

-

编辑:为了清楚起见,我在考虑Web应用程序,无论是Internet网站还是Intranet网站。没有“表单”应用或移动应用。


4
我希望有更多人参与进来,但这似乎主要是基于意见的。在我当前的环境中,暂存和UAT不同。UAT是一个实时的公共环境,可以与生产部署同步,但具有不同的数据负载,以允许用户试用该软件。我们称其为用户的沙盒环境。暂存是在生产和UAT中运行它们之前测试部署和基础结构更改的专用场所。对客户有义务提供和使用UAT,而不是分期付款。其他公司可能会有所不同。
Thomas Owens

@ThomasOwens的意思恰恰是:两种环境是不同的,对于某些人来说,这似乎是一回事,而对于其他人来说,则意味着另外的事。关于服务器故障的问题表明,您使用暂存指向在线生产数据,而只是“翻转开关”,我认为这是一种有趣的方法,但与您所说的不同。
马查多

2
对于某些人来说是一回事,而对于其他人来说又是另一回事,这一事实使得这种主要基于观点的观点没有答案。万一我错了,我还没有扣动扳机。这是一个写得很好的问题,并且可能存在一个标准定义。现在,如果人们选择忽略该标准定义并使用自己的标准定义,那就另当别论了。
Thomas Owens

@ThomasOwens,公平的声明。如果您不介意,让我们将其打开几天,如果它仅产生基于观点的答案,我很乐意投票与您关闭。:)
Machado

@ThomasOwens同意,我认为这个问题在人们所说的分期中也有些主观。我们的UAT和暂存环境是“同一件事”,但这是因为我们有很多发行版,因此当我们准备发布时,我们将接管暂存环境并为UAT准备释放它。从事自己的工作的开发人员仍然可以在我们的舞台环境中使用功能分支,因此不会阻塞它们。
八月

Answers:


10

区别在于数据。

为新功能的“用户接受”设置了UAT环境。为了测试该功能,QA或涉众可能会以特定方式设置用户个人资料以行使特定功能,或者可能会设置模拟产品或配置以将其全部检查出来。

暂存环境通常设置有生产数据的副本,有时是匿名的。一些公司会定期从生产快照中“刷新”他们的登台数据库。主要重点是确保应用程序将以与UAT中相同的方式在生产中运行。测试人员不会在数据库上重新设置数据,而是在数据库中搜索与一组基本测试用例相匹配的配置文件和产品。通常,“真实”数据中存在古怪之处,这会导致在UAT期间遗漏的意外边缘情况。此外,任何数据迁移测试都需要在登台环境中进行。


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

这里的用法定义非常广泛,可能包括各种各样的事情,从最终用户完成的某些配置更改到UAT环境无法使用的昂贵的基础结构功能。重要的是,暂存的软件产品版本可以是新版本,也可以是当前版本,但始终是已经通过验收的版本。

换一种说法:

  • UAT的存在是为了证明如果以与当前版本相同的方式使用,新版本的软件产品将可以工作。
  • 存在分阶段来证明具有某些接受版本的软件产品的新软件产品使用方式将与现在使用当前版本的软件产品的方式相同。

注意:正如问题本身所描述的那样,对“暂存环境”的理解不同,并且您的公司/环境中使用的理解可能有所不同。


0

这些不同环境的使用确实取决于您的需求。从您对“ staging == UAT”的评论来看,听起来好像您有一个很小的应用程序,没有QA团队,只有几个开发人员。

较大的应用程序环境可能具有集成测试环境以及QA环境,前者在其中开发人员运行集成测试,而后者在QA团队进行测试。可能存在一个训练环境,其库存数据已在每次训练之前恢复。过渡环境将在操作团队的控制下,以确保正确进行部署。客户团队将使用用户接受测试(UAT)环境。可能还存在用于复制客户问题的生产快照环境。

我的观点是在确定所需环境时要提防单一观点。


看来您有3个不同的测试环境,它们具有不同的用途,但仍然是测试环境:1个专注于问答,1个专注于开发人员,一个专注于运营团队。但是所有这些都仍然是测试环境,例如,与测试数据库绑定在一起。这是正确的还是我错过了什么?
马查多

他们每个人都将绑定到自己的数据库,是的。
BobDalgleish

-1

UAT代表“ 用户接受测试”,是执行用户接受测试的环境。请注意对用户的重视-您的质量检查测试有所不同,实际用户(或至少您的培训团队,销售人员,支持人员等)可以使用UAT尝试新功能并评估软件,然后再部署到他们的生产系统。

这究竟意味着什么取决于您的过程:

  • UAT(环境)可能与生产“级别”一致,实际上是供用户试用新功能的沙箱。
  • UAT(环境)可能已经在生产中“领先”,因此新功能只有在经过评估后才能部署到生产中。(我不喜欢这种方法,因为它必然意味着您的交货时间更长)。
  • 如果您有一个多租户系统,甚至可能不需要UAT环境,那么您可以选择让用户通过使用功能标记来评估生产系统中的新功能。

在持续部署/持续交付方面,过渡环境用于在“类似于生产”的环境中测试软件,因为开发人员很可能会在与生产存在重大差异的环境中工作(例如,没有负载平衡,体积更小)。数据集等...)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.