5

在单元测试/自动化测试方面,我相对缺乏经验,所以如果它没有任何意义,请原谅这个问题。

我正在处理的当前代码库是如此紧密耦合,以至于我需要重构大部分代码才能对其运行单元测试,所以我阅读了一些帖子并发现了 Selenium,我认为这是一个真正的很酷的程序。

我的客户希望在我们的生产服务器上每十分钟运行一次特定的自动化测试,以确保我们的站点正常运行,并且某些功能/方面运行正常。

我从来没有真正想过要对生产服务器运行测试,因为你给站点增加了额外的压力。我一直认为您会针对暂存服务器运行所有测试,如果这些测试有效,那么只要托管服务提供商没有遇到问题,您就可以假设生产站点是可操作的。

您对在实际生产服务器上测试生产代码有什么想法吗?

非常感谢你们!

4

6 回答 6

8

如果您将 selenium 脚本视为“监控”而不是“测试”,也许会有所帮助?我希望那里的每个主要网站都进行某种监视,即使它只是定期 PING 或每隔一段时间加载主页。虽然这种方式可能会走得太远,但总体上不要害怕这个概念。那么这种监控/测试对您和您的客户有什么好处呢?

  1. 不知何故,世界上所有最好的测试都不能预测用户会做的奇怪事情,无论是有意的还是纯粹的数字力量(如果打字机上的 100 万只猴子可以写哈姆雷特,想象一下几百个满意的点击用户可以做什么?网站可以告诉您它是否已启动,但如果表格已损坏并且报告现在失败,则不会告诉您,这一切都是因为用户输入了一个带有变音符号的值。

  2. 虽然您的站点可能在登台服务器上表现出色,但它可能会随着时间的推移而开始退化。如果您正在监控这些硒测试的性能,您可以领先于缓慢的投诉。当然,正如您所提到的,请确保您的监控也不会引起问题!您可能必须说服您的客户,某些测试适合每 X 分钟运行一次,而其他测试应该只在每天凌晨 3 点运行一次。

  3. 如果您最终对实时站点进行了紧急更改,您将更有信心知道测试正在运行以确保一切正常。

于 2009-07-15T03:52:08.883 回答
4

我长期以来一直在类似的生产服务器上工作。根据我的经验,我可以说,总是最好在 Stage 环境中测试我们的更改/补丁,然后在生产服务器中部署它。这是因为,除了数据量之外,暂存环境和生产环境都是相似的。如果确实需要,可以在安装代码/补丁后在生产服务器上运行少量测试。但是不推荐/好方法总是在生产服务器上运行测试。

于 2009-07-15T03:47:43.637 回答
1

我的建议是每晚将生产数据库映射到暂存/测试环境,并每晚在那里运行单元测试。客户建议的方法有利于确保引入系统的新数据不会导致系统内出现异常,但我不同意在生产中这样做。

在暂存环境中运行它将使您能够在新数据流入系统时评估功能,而无需使用生产环境作为测试平台。

[编辑] 为确保站点正常运行,您可以编写一个简单的程序,每 10 分钟对其进行一次 ping 操作,而不是针对它运行整个测试套件。

于 2009-07-15T03:50:30.383 回答
0

运行自动化测试所需的生产环境会发生什么变化?我了解您可能需要监控和警报以确保服务器正常运行。

于 2009-07-15T03:45:21.190 回答
0

无论选择什么,无论是监控还是测试类型的解决方案,您首先应该为您的客户做的事情就是警告他们。正如您所提到的,在生产中进行测试几乎从来都不是一个好主意。一旦他们意识到危险并且没有其他合乎逻辑的选择,请仔细构建非常少的测试。将它们分层应用并认真监控它们,以确保它们不会对应用程序造成任何问题。

于 2009-07-23T18:51:34.317 回答
0

我同意彼得的观点,这听起来更像是监控而不是测试。我认为这是一个很小的区别,但很重要。如果客户的要求与服务水平协议有关,那么他们的要求听起来就不会太古怪。

此外,如果服务提供商没有遇到任何问题,则认为网站运行正常可能并不安全。如果网站被请求淹没怎么办?或者也许在测试中运行良好的 SQL 开始导致更大的生产数据库出现问题(超时、阻塞等)?

于 2009-12-02T06:05:27.727 回答