分期的重点是什么?

Ham*_*ner 18 deployment testing release-management

我以为我已经解决了这个问题,但在阅读了持续交付(优秀的书)之后,我有点困惑。他们谈论拥有服务器:

  • 发展
  • 各种形式的自动化测试
  • 用户验收测试 (UAT) - 即与客户坐下来向他们演示,并让他们进行探索性测试。内部测试人员也可以使用此设置进行探索性测试。
  • 分期
  • 生产。

我一直认为登台提供 UAT 功能,但他们似乎将登台作为一个单独的级别。那么在该方案中,临时服务器将提供什么功能?

Phi*_*ack 17

我在一家非常大的互联网公司的发布管理团队工作。我们基本上使用您在上面概述的流程,并且我们特意选择了该流程。在我们的方法中,暂存充当生产中最终测试级别的分支机制。

显然,您希望在进入生产环境之前进行所有测试,但在拥有大量用户的大型复杂环境中,这是一个非常难以实现的目标。特别是,在 QA 中充分加载测试软件实际上是不可能的。功能测试比负载测试更容易自动化。当您有成千上万的用户访问您的服务器时,事情会以奇怪且难以预测的方式失败。

所以这就是我们要做的:

  • 发展
    • 包括持续集成和自动化测试
  • 发布测试
    • 我的小组分析了发布本身
    • 查看安装日志
    • 测试回滚
  • 质量保证
    • 用户验收测试

这就是我们在暂存和生产之间进行分支的点。我们使用火车模型进行发布,每隔几周就会推出新火车。偶数列车前往登台服务器(正在生产中)。奇数列车没有。

在偶数列车之间,开发人员有能力将个别更改推送到临时服务器(当然,这些更改经过 QA 测试之后)。这使他们能够验证他们的软件在实际生产环境中是否按预期运行。这通常是为被认为具有较高风险的组件保留的,我们不会将每一小块都推到暂存阶段。

然后,每个人都明白,当下一个偶数列车开始时,它将清除暂存服务器上的内容并将它们设置回列车基线。开发人员要么确保他们的更改上线,要么决定他们还没有准备好供一般使用,在这种情况下,这些更改只会在登台服务器上被删除。

总而言之,简短的回答(至少对我们而言)是不可能在 QA 中完全测试复杂的系统。暂存提供了一种进行有限生产测试的安全方法。

与此相关的是,这是我刚刚介绍的发布过程如何工作的演示文稿中幻灯片


Chr*_*s S 12

分期将把完整的产品系统放到位,但还没有真正使用它们。当它们投入使用时将是“生产”。你应该把所有东西都放在合适的地方,因为它会被使用,测试,然后翻转开关。

UAT 通常使用与将在生产中使用的硬件/软件/配置显着不同的“测试”环境。

例如,在我工作的地方,我们让客户在我们的服务器上运行的 VM 环境中测试所有内容。当他们的系统上线时,它将在他们的硬件上运行,在他们的设施中,可能与他们现有的系统集成;它与我们的服务器或测试环境完全无关(除了代码和一些配置已从那里复制......)

  • @jftuga,见第一段的最后一句... (3认同)

Gre*_*ray 5

暂存最简单的解释是测试您的部署过程并使用真实数据源进行测试。一些系统将暂存与其测试环境相结合,但对于大型系统,部署过程可能非常复杂,或者一旦您连接到实时/生产数据源,它们可能需要额外的测试步骤。在这些情况下,暂存环境允许您测试部署过程并使用实时数据检查最后一分钟的错误,然后在验证工作正常后,您可以快速将暂存环境切换到生产环境。

这方面的一个示例是 Windows Azure,它需要 5-25 分钟来部署新版本,但您可以部署到过渡环境,执行测试,然后立即交换生产和过渡环境