我以为我可以解决这个问题,但是在阅读了《持续交付》(优秀书籍)之后,我有点困惑。他们谈论拥有用于以下目的的服务器:
- 发展
- 各种形式的自动化测试
- 用户验收测试(UAT)-即与客户坐下来并向他们演示,然后让他们进行探索性测试。内部测试人员也可以使用此设置进行探索性测试。
- 分期
- 生产。
我一直认为分期提供UAT功能,但它们似乎将分期作为一个单独的级别。因此,在该方案中,登台服务器将提供什么功能?
我以为我可以解决这个问题,但是在阅读了《持续交付》(优秀书籍)之后,我有点困惑。他们谈论拥有用于以下目的的服务器:
我一直认为分期提供UAT功能,但它们似乎将分期作为一个单独的级别。因此,在该方案中,登台服务器将提供什么功能?
Answers:
分阶段将把完整的产品系统部署到位,但尚未实际使用它们。当它们投入使用将是“生产”。您应该将所有东西放置在适当的位置,进行测试,然后翻转开关。
UAT通常使用“测试”环境,该环境与将在生产环境中使用的硬件/软件/配置有很大不同。
例如,在我工作的地方,我们让客户在服务器上运行的VM环境中测试所有内容。当他们的系统上线时,它将在他们的硬件上,在他们的设施上运行,可能与他们现有的系统集成在一起。它将与我们的服务器或测试环境完全无关(除非已从那里复制了代码和某些配置...)
我在一家大型互联网公司的发布管理团队中工作。我们基本上使用了您上面概述的过程,并且我们故意选择了该过程。在我们的方法中,分段充当最终生产中测试级别的分支机构。
显然,您想要在投入生产之前进行所有测试,但是在拥有大量用户的大型复杂环境中,这是一个非常困难的目标。特别是,实际上不可能在QA中充分加载测试软件。功能测试比负载测试容易得多。当您有成千上万的用户访问您的服务器时,事情就会变得奇怪而难以预测。
所以这是我们的工作:
这就是我们在登台和生产之间进行分支的地方。我们使用火车模型进行发布,每隔几周就会有新的火车开始。偶数编号的火车会转到登台服务器(正在生产中)。奇数编号的火车没有。
在偶数训练之间,开发人员可以将单独的更改推送到登台服务器(当然,这些更改已通过质量检查进行了测试)。这使他们能够验证其软件在实际生产环境中是否按预期运行。通常将其保留给那些被认为具有较高风险的组件,我们不会将每一个细小的组件都推到阶段。
然后,每个人都知道,当下一个偶数火车开始时,它将清除登台服务器上的内容并将它们重新设置为火车基线。开发人员要么确保他们的更改已准备就绪,要么决定尚未准备好将其普遍使用,在这种情况下,这些更改只会在登台服务器上被擦除。
总之,简短的答案(至少对我们而言)是不可能在质量保证中完全测试复杂的系统。分阶段提供了进行有限的生产测试的安全方法。
与此相关的是,这是我刚刚发布的幻灯片的幻灯片,介绍了发布过程的工作原理。
登台的最简单解释是测试您的部署过程并使用真实数据源进行测试。某些系统将阶段与测试环境结合在一起,但是对于大型系统,部署过程可能非常复杂,或者一旦连接到实时/生产数据源,它们可能是额外的测试步骤。在这种情况下,暂存环境使您可以测试部署过程并使用实时数据检查最后一刻的错误,然后在验证一切正常后,可以快速将暂存环境切换到生产环境。
例如Windows Azure,它需要5到25分钟的时间来部署新版本,但是您可以部署到暂存环境中,执行测试,然后立即交换生产和暂存环境。