Jmeter组件篇-非测试元件之HTTP代理服务器详解

HTTP代理服务器允许JMeter在使用常规浏览器浏览Web应用程序时拦截并记录操作。JMeter将创建测试样本对象并将其直接存储到的测试计划中(这样就可以在制作它们的同时以交互方式查看样本)。

要使用代理服务器,需要添加 HTTP代理服务器元素。右键单击“测试计划”元素以获取“添加”菜单:(“ 添加” →“ 非测试元素” →“ HTTP代理服务器” )。

要使用HTTP代理服务器,需要设置浏览器对所有HTTP和HTTPS请求使用代理。录制脚本时,最好使用无痕浏览模式,这可以确保浏览器没有存储的cookie信息,并防止保存某些更改。例如,Firefox不允许永久保存证书替代。

HTTPS录制与证书


HTTPS连接使用证书来验证浏览器和Web服务器之间的连接。通过HTTPS连接时,服务器将证书提供给浏览器。为了对证书进行身份验证,浏览器检查服务器证书是否由链接到其内置根CA之一的证书颁发机构(CA)签名。

浏览器还会检查证书是否适用于正确的主机或域,并且证书有效且未过期。如果浏览器检查证书失败,它将提示用户访问的地址存在安全风险,然后用户可以决定是否允许连接继续进行。

JMeter将生成自己的证书,在HTTP代理服务器界面点击“启动”时,将生成Jmeter证书,证书生成可能需要一些时间,在此期间,GUI将无响应。证书生成完成后,GUI将显示一个弹出对话框,其中包含根CA证书的详细信息,证书有效期为7天。该证书需要由浏览器安装,以便接受JMeter生成的主机证书。
Jmeter组件篇-非测试元件之HTTP代理服务器详解

如有必要,可以通过从JMeter的bin目录中删除文件proxyserver.jks来强制JMeter重新生成**库(以及导出的证书-ApacheJMeterTemporaryRootCA [.usr | .crt])。

如果浏览器已经为该域注册了受信任的证书,则浏览器会将JMeter检测为安全漏洞,然后拒绝加载该页面。如果遇到此类情况,则必须从浏览器的**库中删除注册的受信任的证书。需要在谷歌浏览器地址中输入:

chrome://net-internals/#hsts,进入hts设置,找到 Delete domain security policies 设置选项,在domain中输入www.baidu.com,点击delete 按钮,删除www.baidu.com

在浏览器中安装证书

工具/设置选项→高级/证书→查看证书,按照步骤导入证书文件,证书文件为Jmeter的bin目录下的ApacheJMeterTemporaryRootCA.crt

Jmeter组件篇-非测试元件之HTTP代理服务器详解

属性描述
名称 显示的此取样器的描述性名称,可自定义
端口 代理服务器的端口,用于设置浏览器代理,可以修改

HTTPS Domains HTTPS的域(或主机)名称列表
例如:* .example.com,*.subdomain.example.com

目标控制器 录制的脚本保存的位置,通常使用录制控制器
分组 是否将录制的脚本归类为某个“单击”的请求(收到的请求没有明显的时间间隔),以及如何在记录中表示该分组

Prefix/Transaction name 在录制过程中(采样模式)在取样器名称前添加前缀。或将取样器名称替换为用户选择的名称

Create new transaction after request (ms) 两个请求之间的不活动时间超过此值,则将它们分为两个单独的组

从HTML文件获取所有资源 在生成的取样器中设置获取所有嵌入式资源
自动/跟随重定向 在生成的取样器中设置自动/跟随重定向

Use Keep-Alive 在生成的取样器中设置“Keep-Alive”
Type 生成哪种类型的取样器(HTTPClient默认值或Java)

Content Type filter 通过Content Type过滤,包括包含与排除模式,字段匹配正则表达式
包含/排除模式 通过完整的URL过滤,匹配正则表达式

将过滤过的取样器通知子监听器 通知子监听器已过滤的取样器,但排除模式过滤的将不被传递到监听器(查看结果树)

包含与排除模式

包括和排除模式使用正则表达式。它们将与每个浏览器请求的主机名,端口(实际或隐含),路径和查询(如果有)进行匹配。如果浏览的URL是

“ http://localhost/jmeter/index.html?username = xxxx ”,

则将针对字符串测试正则表达式:
“ localhost:80 / jmeter / index.html?username = xxxx ”。

因此,如果要包含所有.html文件,则正则表达式可能类似于:
“ .* .html(\?.)? ”-或“ . .

如果有任何包含模式,则URL 必须至少与这些模式之一匹配,否则将不会被记录。如果存在任何排除模式,则URL 不得与任何模式匹配,否则它将不会被记录。通过使用包含和排除的组合,可以筛选记录实际需要记录的测试样本。

注意,由正则表达式匹配的字符串必须与整个 host + path字符串相同。
因此,“ \ .html ” 与localhost:80 / index.html 不匹配

如果要记录录制过程中样本的响应数据,需要将查看结果树,添加为HTTP代理服务器的子代,即可通过查看结果树,查看录制的请求响应数据。