负载测试,Selenium Vs JMeter Vs 其他工具

软件测试 硒网络驱动程序 仪表 负载测试
2022-01-26 23:45:37

我一直在使用 Selenium/Webdriver 在网格设置中进行功能测试。我们正在过渡到基于 Solr 的搜索服务。我已经有 Solrmeter 用于负载测试搜索引擎核心,加载 UI 用于负载测试 Rest-ful 服务。我们还想对整个端到端服务链进行负载测试,即

用户界面 -> Restful 服务 -> Solr 核心。

我的老板希望我使用 Selenium/WebDriver 进行端到端负载测试,以便它与我们的核心测试框架集成。

我对此持怀疑态度,因为 WebDriver 没有负载测试的支持工具。我能想到的在 Selenium/WebDriver 中执行此操作的最简单方法是在发送查询时以及在网页上显示结果时在我的脚本中编写时间戳。然后编写一些报告机制来收集和显示报告。我也想硒会慢一些。

另一方面,来自 stackoverflow 社区的成员建议使用 JMeter,我认为这不那么麻烦。有人可以给我 Selenium/WebDriver Vs JMeter 在这种情况下进行负载测试的优缺点吗?

4个回答

类似的问题已经被问过很多次了。普遍的共识是,像 Selenium 这样的 UI 自动化工具并不是负载测试的好选择。原因有很多,但主要原因是速度慢了很多。您可以在像 JMeter 这样的工具中轻松地在一秒钟内启动数千个并发请求,在 Selenium 中重现该工具将需要数千台服务器的倍数,所有这些服务器都经过精心编排才能为您提供相同数量的流量。有像 selenium grid 或 browsermob 这样的工具可以让你编排这些类型的测试,但与 JMeter 这样的工具相比,它的效率确实很低。

性能测试有点不同,因为可以使用 Selenium 来测量 UI 加载或完成某些操作所需的时间,但是您通常会与负载测试一起执行性能测试来回答以下问题:服务器处于无负载/中等负载/高负载/可变负载等状态。

至于适用于负载测试的工具,JMeter 是一个非常流行的免费工具,但还有许多其他工具,包括我更喜欢的一个 - Visual Studio 负载测试(它需要一个 Visual Studio 许可证,您可能已经拥有也可能没有)。

您还可以查看Gatling ,这是一个基于akka的开源压力工具

在 Gatling 主页上,您可以直接比较您的测试规范在 Gatling 和 JMeter 中的外观。这也可以帮助您在这些之间做出决定。

如果您想创建大量负载,我认为没有什么比 akka 作为引擎更好的了。

您想为测试创建的负载越多,与 Selenium/Webdriver 等通用 Web 测试框架相比,专用负载测试工具的工作效果就越好。

我认为当涉及到负载测试时,您将很快达到使用 Selenium/Webdriver 可以做的事情的界限,否则您将不得不为使用 Gatling 或JMeter。在这种情况下,如果您不是非常小心,您可能会在测试代码中引入一些您自己的并发错误:并发总是很难的。

我想补充一点,是否可以使用 Selenium 进行性能测试。示例:您有一个带有 Web-UI 的应用程序,并且您想测量一个用户的 UI 反应,但要处理庞大的数据库。在这种情况下,JMeter 是一个糟糕的选择,因为它不能处理 Ajax 请求。我在过去的项目中遇到过这种情况,对于这样的体积测试,我们使用了 Selenium。在其他情况下,JMeter 更好。

(免责声明:我是 Gatling 项目负责人)

目前使用 Webdriver 进行负载测试似乎效率不高,即使是巨大的网格。

如果您想降低维护功能测试和负载测试的成本,您可以构建一个系统,从功能测试中获取负载测试库:

  • 在您的功能测试中插入一个记录系统,例如 Gatling 记录器,并获取您的负载测试基础
  • 编辑它们以添加循环、用户、动态数据等
  • 当您的功能测试发展时,您可以重新运行第一步并与之前的输出进行比较,这样您就可以轻松识别您需要修改的内容。这在 Gatling 中比在 JMeter 中更容易,因为场景不是一大块 XML,而是一种富有表现力的 DSL。