0

我们在窗口 7 上使用 eclipse 使用 junit+java 开发了 selenium webdriver 脚本。所有脚本都按预期工作,现在我们使用此脚本使用 Jmeter 进行负载测试。但是,在运行脚本系统时,基于用户线程打开多个浏览器(200)并创建系统挂起,有没有办法处理这个问题,或者我们可以在不打开浏览器的情况下运行脚本。我遇到了 xvfb 工具,但无法为该工具获取 java api 以在 eclipse 中插入。

我们也尝试过使用 HtmlUnitDriver,但由于它不支持 javascript,因此测试失败,我们也尝试了 HtmlUnit 并发现了同样的事情。

注意:我们已经编写了 webdriver 脚本来维护屏幕上元素(自动完成、图像)的显示项。

如果有人可以提供帮助或提供更多信息,那就太好了......

4

1 回答 1

0

首先,不要将 selenium 脚本与 JMeter 集成来进行负载测试!由于您在帖子中提到的明显后果,这不是一个好的方法。当我刚接触 JMeter 和 selenium 时,我在开始时遵循了类似的方法,但在运行负载测试时遭受了很大的痛苦,这些测试产生了太多导致操作系统崩溃的浏览器实例。

您可以使用 JMeter 使用 HtmlUnitDriver 或任何无头浏览器测试工具,但它们仍然会在内存中内部运行浏览器。此外,如果您的应用程序大量使用 Javascript,它也无济于事。

因此,我建议您使用 JMeter Proxy 记录浏览会话并根据您的需要修改脚本(请求集)并单独播放这些请求,并使用线程数。

从更高的层次来看,你应该这样做:

  1. 添加 JMeter 测试计划、侦听器、线程组并设置 JMeter 代理并记录浏览会话,您在自动完成文本框中输入内容并获得某些结果。
  2. 停止您的代理并查看您的线程组下的所有请求。

  3. 据我所知,当涉及到自动完成插件时,每次您在文本框中输入字母时都会发送多个请求。例如,对于单词“ stackoverflow”:

    请求1:q=s
    请求2:q=st
    请求3:q=sta
    以此类推

    在这里,您可以通过包含单词来模拟这种效果,这样所有单词都具有相同的长度,这反过来又会让您有相同数量的请求发送到服务器。

  4. So in your test plan, you will pass one word per Jmeter thread. You can pass the words to a request, from a csv file by using jmeter parametrization.

This will be a much memory efficient way of load testing instead of using selenium with JMeter. I had asked a similar question. You can check out the responses.

于 2014-03-12T09:28:08.170 回答