1

Apologies if this is open ended.

Currently my team and I are working on our End to end (E2E) testing strategy and we seem to be unsure whether we should be executing our E2E tests against our staging site or on our production site. We have gathered that there are pros and cons to both.

Pro Staging Tests

  • wont be corrupting analytics data on production.
  • Can detect failure before hitting production.

Pro Production Tests

  • Will be using actual components of the system including database and other configurations and may capture issues with prod configs.

I am sometimes not sure if we are conflating E2E with monitoring services (if such a thing exists). Does someone have an opinion on the matter?

In addition when are E2E tests run? Since every member of the system is being tested there doesn't seem to be an owner of the test suite making it hard to determine when the E2E should be run. We were hoping that we could run E2E in some sort of a pipeline before hitting production. Does that mean I should run these test when either the Front end / backend changes? Or would you rather just run the execution of the E2E on an interval regardless of any change?

4

2 回答 2

2

在我的团队经验中,测试自动化最好定期在专用测试服务器中完成,并且只有在连续成功测试多个会话后才能部署新代码。

本地测试运行用于测试自动化开发和调试。

测试服务器 - 用于计划运行,因为 - 无论您在编写测试方面多么出色,在某些时候它们将连续运行数小时,并且您需要随着时间的推移对它们进行可靠的统计,并使用不会破坏生产服务器的虚假数据.

我不同意@MetaWhirledPeas 关于只追求快速测试运行的观点。您的首要任务应该始终是更好的覆盖和减少片状。您始终可以通过并行化来减少运行时间。

在生产中运行 - 我见过很多情况,当测试结果在官方网站的一个有趣的状态下,使公司声誉下降。其他危险是:

  1. 破坏你的数据库
  2. 从不存在的用户那里购买并开始赔钱
  3. 对官网 api 造成不必要的压力,使客户端在运行过程中体验不佳,甚至导致服务器完全停止。

因此,在我们的团队中,我们为生产现场配备了专门的手动测试仪。

于 2020-12-02T21:15:38.890 回答
1

根据您的部门/环境/项目的设置方式,您可能无法拥有所有最佳选择,但理想情况下您不想在生产中进行测试。

我想说的是,普遍的愿望是尽可能频繁地使用虚假数据,并对其进行整理以涵盖真实世界的场景。如果您的 prod 配置和设置与您的测试环境不同,请努力确保您的测试环境配置尽可能匹配 prod。如果您使用 CI 工具,这更容易完成,但无论您的设置是什么,都需要遵守纪律。

测试何时运行将取决于某些事情。

  • 如果您已经使您的网站和依赖项变得微不足道,并且您已经在使用持续集成工作流程,那么您可能能够在拉取请求评估期间构建代码并启动测试。这是理想。
  • 如果您有一个缓慢的构建/部署过程,您可能希望保持一个永久的测试环境运行。然后,您可以在每次部署到您的测试环境后启动测试,或者临时运行它们。

您还可以安排测试定期运行,但这通常表明测试花费的时间太长。努力创建快速测试,以便在某些时候为与 CI 工具集成打开大门。并行化会有所帮助,但您最大的收获将来自于使用cy.request()重复性任务(如登录)和使用cy.intercept()存根响应而不是等待服务。

于 2020-12-02T17:41:12.233 回答