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

Performance 在生产代码/服务器上运行测试,performance,automated-tests,staging,Performance,Automated Tests,Staging,在单元测试/自动测试方面,我相对缺乏经验,所以如果这个问题没有任何意义,请原谅 我目前正在处理的代码库是如此紧密地耦合在一起,以至于在能够对其运行单元测试之前,我需要重构大部分代码,因此我阅读了一些文章并发现了Selenium,我认为这是一个非常酷的程序 我的客户希望每十分钟在我们的生产服务器上运行一次特定的自动化测试,以确保我们的站点能够正常运行,并且某些功能/方面能够正常运行 我从来没有想过对生产服务器运行测试,因为这会给站点增加额外的压力。我一直认为您可以对一台临时服务器运行所有测试,如果

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

我目前正在处理的代码库是如此紧密地耦合在一起,以至于在能够对其运行单元测试之前,我需要重构大部分代码,因此我阅读了一些文章并发现了Selenium,我认为这是一个非常酷的程序

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

我从来没有想过对生产服务器运行测试,因为这会给站点增加额外的压力。我一直认为您可以对一台临时服务器运行所有测试,如果这些测试都有效,您可以假设生产站点可以运行,只要宿主提供商没有遇到问题

您对在实际生产服务器上测试生产代码有何想法


谢谢大家

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

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

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

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


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

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

  • 不知何故,并不是世界上所有最好的测试都能预测用户将做的奇怪的事情,不管是有意的还是纯粹依靠数字的力量(如果100万台打字机上的猴子可以写哈姆雷特,想象一下几百个喜欢点击的用户能做什么?点击一个网站可以告诉你它是否正常,但不能告诉你一个表是否损坏,一个报告是否失败,所有这一切都是因为用户键入了一个带有umlaut的值。)

  • 虽然您的站点在登台服务器上的性能可能会很好,但随着时间的推移,它可能会开始退化。如果您正在监视那些selenium测试的性能,您可以提前处理慢度投诉。当然,正如您提到的,确保您的监视也不会导致问题!您可能必须说服您的客户n测试宜每X分钟运行一次,其他测试应每天仅在凌晨3点运行一次

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


  • 无论选择哪种解决方案,无论是监控型还是测试型解决方案,您应该首先为客户做的事情是警告他们。正如您所提到的,在生产中进行测试几乎从来都不是一个好主意。一旦他们意识到危险,如果没有其他合理的选择,请小心地构造非常简单的测试。分层应用它们,并严格监控它们,以确保它们不会给应用程序带来任何问题。

    我同意Peter的观点,这听起来更像是监控而不是测试。这是一个很小的区别,但我认为很重要。如果客户的需求与服务级别协议有关,那么他们的需求UEST听起来并不太离奇


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

    不,我的意思是,我的客户希望我每10分钟在站点上运行一次测试,以确保它正常运行。lol我向他们解释说,如果它在我们的开发/登台环境中工作,这是不必要的。我认为在我们的合同中是否存在任何“关键问题”10分钟内未解决,它们将丢失$$如果只是为了确保应用程序正常运行,您可以使用sitescope之类的服务随时监视您的服务器。您可以设置各种测试参数。他们不希望在“修补程序”上运行测试他们希望通过测试来确保用户可以登录,确保主页的某些部分能够加载。我试图解释这是一种过度的做法,一旦投入生产和进行一些冒烟测试,只有硬件故障才会导致网站关闭。在这种情况下,可以在登台环境中对其进行测试。但如果需要,您可以运行自动测试,比如每30次60分钟,比每10分钟运行一次要好。Roopesh,如果他们只是想每10分钟模拟一个额外的用户,那也不算太糟糕