2014-03-12 44 views
0

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

我们也试过使用HtmlUnitDriver,但因为它不支持JavaScript,所以测试失败了,我们也尝试了HtmlUnit并找到了同样的东西。

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

这将是巨大的,如果有人能帮助或为此提供更多的输入...

回答

0

首先,不要用JMeter集成硒脚本进行负载测试!由于您在帖子中提到的明显后果,这不是一个好方法。当我刚接触JMeter和selenium时,我在开始时也采用了类似的方法,但是在运行负载测试时遇到了很多问题,这些负载测试催生了太多杀死操作系统的浏览器实例。

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

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

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

  1. 添加JMeter的测试计划,监听器,线程组和设置JMeter的代理,并记录下您输入内容自动完成文本浏览会话和你会得到一定的结果。
  2. 停止您的代理并查看您的线程组下的所有请求。

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

    Request1:Q = S
    请求2:Q = ST
    Request3:Q = STA

    在这里,您可以通过包含单词来模拟这种效应,使得所有的单词具有相同的长度,这反过来会让你有相同的 个请求被发送到服务器。

  4. 因此在您的测试计划中,您将为每个Jmeter线程传递一个字。您可以通过使用jmeter 参数化从csv文件将单词传递给请求。

这将是负载测试,而不是使用硒用JMeter得多的存储器高效方式。我曾问过类似的question。您可以查看回复。

+0

我同意你的观点,然而即使我已经尝试使用Jmeter进行负载测试,但我们必须从自动完成下拉菜单中选择选项,并且这会产生运行jmeter脚本的问题。我试过并在网上搜索,但没有找到任何解决方案,因此,我最终与硒。另外,我是jmeter的新手,不知道如何使用它的正则表达式或设置参数来发布数据。你有什么链接,我可以通过例子获得更多关于使用jmeter的信息,或者你是否有用于从自动完成下拉菜单中点击选项的示例jmeter脚本。 –

+0

从自动完成下拉菜单中单击选项的操作涉及服务器请求权限? –

+0

是的,它是...在我们的应用程序中,我们从自动完成下拉菜单中选择选项,而不是系统加载页面上的其他元素。我曾尝试发送参数值,如网页中的“elementid”,并将其设置为带有值的Jmeter,但没有奏效...... –