JMeter 生成脚本方式有多种,前面介绍了一种用 Badboy 录制的方式,有需要的可以去看看( https://www.jianshu.com/p/ae162d9049ea)。这里我们准备学习另外一种生成脚本的方式,JMeter 本身的 HTTP 代理录制。首先,我们来看一张图:
正常情况下,客户端发送请求到服务器和服务器响应客户端过程的信息都是直接传递交互的,即上图1和2的过程。而代理的方式是客户端发送请求到服务器和服务器响应客户端过程的信息都不是直接传递交互的,两个过程都要经过代理服务器,即上图3,4和5,6。
知道原理之后,接下来看看如何用 HTTP 代理的方式录制脚本。
1、创建线程组和 HTTP 代理服务器
在测试计划下创建线程组和非测试元件 HTTP 代理服务器。
2、设置 HTTP 代理服务器
端口: HTTP(S)测试脚本记录器侦听的端口,默认是8888,可修改,后面步骤在浏览器中设置的端口要和这个端口保持一致。
Test Plan Creation
目标控制器:选择第一步创建的线程组,后面录制到的脚本就会生成在该线程组中。
分组:是否对来自单个“单击”的请求进行分组抽样(在没有明显时间间隔的情况下收到的请求),以及如何在记录中表示该分组,默认不对样本分组。
Type:要生成哪种类型的采样器,选择 HTTPClient4 。
Requests Filtering
HTTP 代理录制的方式会录制到很多无用的请求,我们需要对录制过程产生的请求进行过滤,过滤方式有包含模式和排除模式两种。
包含模式:只录制与正则表达式匹配的请求。
添加“包含模式(Patterns to Include)”:如.*\.html
,如果不确定哪些请求是你想要的尽量不要设置。
排除模式:过滤掉与正则表达式匹配的请求。
添加“排除模式(Patterns to Exclude)”:如.*\.gif
,.*\.png
,.*\.jpg
。
3、设置浏览器(以 IE 浏览器为例)
打开浏览器,依次进入工具--Internet选项--连接--局域网设置,如图所示:
选中代理服务器为 LAN 使用代理服务器。
配置地址为 localhost 或者 127.0.0.1,端口为 8888(这个端口与 JMeter 中 HTTP 代理服务器设置的端口保持一致),然后点击确定按钮保存设置。
4、启动代理录制
浏览器设置了代理服务器后是不能上网的。
不能上网???估计有人开始急了,公司网站就用外网访问的,那如何录制到公司网站的脚步?
蛋定,我们还需要去设置 JMeter 启动代理录制,点击启动按钮即可。
点击启动按钮后会弹出签名证书提示。当在 Java 8下运行时,JMeter 可以为每个服务器生成证书,JMeter 使用的根 CA 签名证书需要被浏览器信任。
从提示的信息看出在 JMeter bin 目录下生成了一个 ApacheJMeterTemporaryRootCA 文件,另外还提示要安装签名证书。
双击该文件进行安装证书。
证书安装完成后重新点击启动按钮开启 JMeter 代理服务器。接着在浏览器上操作需要录制的网站功能,操作完成后点击停止按钮,同时在 JMeter 线程组下可以看到刚才操作的过程被录制下来了。
5、添加 HPPT Cookie 管理器
BS 系统录制成功后,一定要添加配置元件 HTTP Cookie 管理器,否则脚本运行失败,无法实现系统业务。
注意:完成录制后切记要取消浏览器代理设置,否则无法上网。