在生产代码/服务器上运行测试

时间:2009-07-15 03:40:25

标签: performance automated-tests staging

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

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

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

我从未真正考虑过针对生产服务器运行测试,因为这会给网站增加额外的压力。我一直以为你会对登台服务器运行所有测试,如果这些工作正常,只要托管服务提供商没有遇到问题,你就可以假设该网站是可以运行的。

您是否有任何关于在实际生产服务器上测试生产代码的想法?

非常感谢你们!

6 个答案:

答案 0 :(得分:8)

如果你认为selenium脚本是“监控”而不是“测试”,那么它会有所帮助吗?我希望每个主要的网站都有某种监控,即使它只是一个周期性的PING,或者经常加载主页。虽然可以采取这种方式,但不要害怕这个概念。那么这种监控/测试对您和您的客户有什么好处呢?

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

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

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

答案 1 :(得分:4)

我长期从事过类似的制作服务器。根据我的经验,我可以说,总是最好在Stage环境中测试我们的更改更改/补丁,并在生产服务器中进行部署。这是因为除了数据量之外,临时和生产环境都是相似的。 如果真的需要,一旦安装了代码/补丁,就可以在Production服务器上运行一些测试。但是不建议/总是在生产服务器上运行测试的好方法。

答案 2 :(得分:1)

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

在临时环境中运行它可以让您在不使用生产环境作为测试平台的情况下,在新数据流入系统时评估功能。

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

答案 3 :(得分:0)

您需要运行自动化测试的生产环境会发生什么变化?我知道您可能需要监控和警报以确保服务器已启动并运行。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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