Jmeter:如何获得页面的准确响应

时间:2013-12-14 20:03:04

标签: jmeter

我是Jmeter的新手,所以我不知道是不是在问一个愚蠢的问题。我正在测试Web应用程序的性能,但在测试时我注意到页面上有多个请求。对于例如当用户访问页面www.xyz.com时,则存在静态内容,并且还有来自同一页面的另一个请求,该页面在网格中显示数据(www.xyz/getdata),还有js和css文件。我想知道是否有办法检索页面的所有请求。我已经尝试过http请求采样器,并且“从html文件中检索所有嵌入的资源”,但是当我在查看结果树中查看了所有请求时,它是显示34个请求,其中Chrome显示68个请求,因此我不确定这是正确的方法。

4 个答案:

答案 0 :(得分:1)

我刚刚做到了。

您必须使用Jmeter + Webdriver Sampler + PhantomJS Config。这样:

1)下载并安装WebDriver Set个插件。插件安装记录在案here

2)下载并将phantomjs executable放在磁盘上的某个位置。

3)创建一个测试计划,就像在Webdriver Two minute tutorial上显示的一样,但是用" bzm - PhantomJS Driver Config"替换FireFoxConfig。

4)在PhantomJS驱动程序配置中,打开PhantomJS选项卡并设置磁盘上phantomjs.exe的路径。

5)在WebDriver Sampler视图中,输入以下脚本:

var selenium = JavaImporter(org.openqa.selenium)
var fileUtils = JavaImporter(org.apache.qpid.util)
var io = JavaImporter(java.io)
var supportUi = JavaImporter(org.openqa.selenium.support.ui)

WDS.sampleResult.sampleStart()

// set the browser window dimension to fit your needs
var dimension = new selenium.Dimension (4080, 9000);
WDS.browser.size = dimension;
WDS.browser.manage().window().size = dimension;

// put your webpage bellow
WDS.browser.get('http://MYPAGE.com')

// take a screenshot of the page, save it to disk
var screenshot = WDS.browser.getScreenshotAs(selenium.OutputType.FILE)
fileUtils.FileUtils.copy(screenshot, new io.File('C:\\PATH\\TO\\screenshot.png'))    

WDS.sampleResult.sampleEnd()

答案 1 :(得分:0)

你给我们的信息不多。但我想,你的网页使用AJAX调用来检索JS,图片等。 Jmeter无法获取这些文件,因为Jmeter不像Web浏览器那样执行HTML文件。

您可能会找到Jmeter的插件,或者您必须模拟您的AJAX调用,或者您必须更改您的工具。请从Xceptance XLT或phantomjs和衍生物或WPT查看XLT。

答案 2 :(得分:0)

首先,如果您正在尝试模拟实际负载,则需要“告诉”JMeter t o behave more like a real browser。它包括:

  1. 处理cookie和身份验证的HTTP Cookie管理器(在大多数情况下是必须的)
  2. HTTP缓存管理器代表浏览器缓存
  3. 带有浏览器的HTTP标头管理器(在您的情况下为Chrome)用户代理字符串。某些站点会改变不同用户代理的输出。
  4. 您已经了解嵌入式资源。
  5. 您还可以尝试通过JMeter HTTP Test Script记录器记录您的测试用例,捕获其他请求,将它们放在您的测试计划中,更好地在Transaction Controller下,以避免单独获取指标。

    如果JMeter无法记录额外的请求,您需要通过任何嗅探器工具捕获它们,最简单的是HttpFox Firefox Addon,最强大的是Wireshark并手动构建丢失的请求。

    一般情况下,如果您缺少的资源完全是外部的,那么加载测试它们并不是一个好主意。

答案 3 :(得分:0)

您可以使用Jmeter本身记录会话,并获得网页正在执行的所有检索: Apache JMeter HTTP(S) Test Script Recorder