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

问题描述:

在单元测试/自动化测试方面,我相对缺乏经验,所以请原谅它是否没有任何意义。在生产代码/服务器上运行测试

我正在使用的当前代码基础非常紧密,以至于我无法在其上运行单元测试之前需要重构大部分代码,所以我阅读了一些帖子并发现了Selenium,这是我认为是一个非常酷的程序。

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

我从来没有真正想过对生产服务器运行测试,因为您正在向网站添加额外的压力。我一直以为你会对临时服务器运行所有测试,如果这些工作正常,只要托管服务提供商没有遇到问题,就可以假设该授权网站是可操作的。

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

非常感谢你们!

如果您将硒脚本想象为“监视”而不是“测试”,这可能会有所帮助吗?我希望每个主要的网站都会进行某种监控,即使它只是定期的PING,或者每隔一段时间加载一次主页。虽然有可能采取这种方式,但不要害怕这个概念。那么,这种监测/测试对你和你的客户有什么好处?

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

  2. 虽然您的网站在暂存服务器上可能表现出色,但它可能会随着时间的推移而开始降级。如果您正在监测这些硒测试的性能,则可以在慢速投诉之前保持领先。当然,正如你所提到的,确保你的监控不会造成问题!你可能不得不说服你的客户,特定的测试适合每X分钟运行一次,而其他测试只能在每天凌晨3点运行一次。

  3. 如果您最终要对现场进行紧急更改,您会更加确信知道测试正在运行以确保一切正常。

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

+0

不,我的意思是,我的客户希望我在网站上每10分钟运行一次测试,以确保它在大声笑我向他们解释说,如果它在我们的开发/分段环境中工作,则不需要。 我认为在我们的合同中,如果有任何“关键问题”在10分钟内未得到解决,他们会损失$$ – 2009-07-15 03:50:04

+0

如果确定应用程序正在运行,您可以使用像sitecope这样的服务来监控服务器的时间时间。您可以设置各种参数进行测试。 – 2009-07-15 03:55:13

我长期从事类似的生产服务器。根据我的经验,我可以说的是,总是最好在Stage环境中测试我们的更改/修补程序并将其部署到生产服务器中。这是因为,除了数据量之外,分段和生产环境都是相似的。 如果确实需要,一旦安装了代码/补丁程序,就可以在生产服务器上运行少量测试。但不建议/总是在生产服务器上运行测试。

+0

他们不希望测试运行在他们想要测试的“补丁”上,以确保用户可以登录主页的某些部分。 我试着解释说,这是过度杀伤,一旦生产和一些烟雾测试,只有硬件故障会导致网站失效。 – 2009-07-15 03:51:12

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

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

为了确保网站已经启动,您可以编写一个简单的程序,每10分钟一次,而不是运行整个测试套件。

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

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

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