1

假设我有一堆涵盖我的应用程序的单元测试、集成测试和 e2e 测试。让这些持续运行在 prod 上是否有意义,例如每 10 分钟?

我想不,这就是为什么:我的测试已经在每次产品部署后运行。如果他们通过并且在那之后没有代码更改,他们应该继续通过。因此,此后对其进行测试是没有意义的。

我真正想要持续测试的是我的基础设施——它还在运行吗?在这种情况下,每 10 分钟运行一次 API 集成测试以检查我的 API 是否仍在工作是有意义的。所以我正在处理我的测试套件的一个子集——那些测试我的基础设施可用性(集成+e2e)与仅测试单个代码(单元测试)的套件。因此,在实践中,与用于测试部署前/部署后的套件相比,我是否会有单独的测试套件来测试产品正常运行时间?

4

1 回答 1

1

这种“冗余”验证(它们也可以包括构建,顺便说一句,不仅仅是测试)提供了额外的数据点,提高了您实际生产过程的监控精度。

根据您的生产环境的复杂性,即使是简单的“它是否启动/运行?” 问题可能没有简单的答案,验证的子集/快捷方式版本可能不会削减它 - 您只会涵盖这些版本,而不是实际的生产版本。

例如,仅仅因为构建服务器启动并不意味着它也能够成功构建产品,您需要检查构建本身的各个方面:每个工具的可用性、存储、依赖项、操作系统资源等。对于复杂的构建 只执行构建本身可能比可靠地管理代码检查构建是否可行更简单;)

有 2 个生产过程属性可以从更精确的监控中受益(并且子集/快捷方式验证也不适合):

  • 可靠性/稳定性——间歇性故障的类型、发生率和根本原因(是的,那些可能在满足发布日期与否之间产生差异的令人讨厌的意外)
  • 性能- 各种验证的平均/最小/最大持续时间;如果验证在所涉及的持续时间/资源方面很昂贵,则尤其重要;规划、预算、生产 ETA 等可能需要趋势

如果其中任何一个适用于您的环境或具有可接受的成本/收益比,请不要知道,但它们对于大多数非常大/复杂的 sw 项目绝对重要。

于 2015-07-06T10:57:33.530 回答