【P4】JMeter 原生录制方式——HTTP代理服务器(HTTP(S) Test Script Recorder)


一、HTTP代理服务器(HTTP(S) Test Script Recorder)参数说明

HTTP代理服务器允许JMeter在使用常规浏览器,浏览Web应用程序时拦截并记录操作。JMeter将创建测试样本对象,并将其直接存储到的测试计划中。录制脚本时,最好使用无痕浏览模式,这可以确保浏览器没有存储的Cookie信息,并防止保存某些更改。例如:Firefox不允许永久保存证书替代

测试计划右键 >>> 添加 >>> 非测试元件 >>> HTTP代理服务器

在这里插入图片描述

State

  • 启动(Start):启动代理服务器。一旦代理服务器启动并准备接受请求,JMeter 就向控制台写入消息:“代理启动并运行!”

  • 停止(Stop):停止代理服务器

  • 重启(Restart):停止并重新启动代理服务器。当你操作(改变、添加、删除)包含、排除过滤器时,这个按钮很有用

Global Settings

  • 端口(Port):设置 JMeter 代理服务器所要用的端口,不能被占用,否则 JMeter 无法使用。默认启用8888端口。

可以在 cmd 中使用 netstat -ano|findstr "8888" 查看端口是否被占用

  • HTTPS Domains:编写代理主机的域名或者主机 IP 地址,可以对指定地址进行请求录制。

例:* .baidu.com,*.subdomain.example.com

Test Plan Creation_Test Plan content

(1)、目标控制器(Target Controller):选择录制的脚本所保存的位置

  • 使用录制控制器:需要在线程组中添加录制控制器组件(在逻辑控制器元件中添加)否则在开启 HTTP代理服务器的时候会提示报错

  • 测试计划 > 线程组:录制的脚本保存到目标线程组(只有在测试计划中添加了线程组,才能看到该选项)

  • 测试计划 > HTTP代理服务器:录制的脚本保存到HTTP代理服务器组件下

  • Test Plan > 线程组 > 控制器:录制的脚本保存在线程组中的目标控制器下(只有在测试计划中添加了控制器,才能看到该选项)

(2)、分组(Grouping):是否将录制的单个“点击”请求进行分组,以及如何在录制中表示该分组

  • 不对样本分组:就是请求什么就记录什么,对所有录制的取样器不分组

  • 在组间添加分隔:每一个 Sampler 结束都会有分隔符间隔开。即:在取样器分组之间添加以名为----------的控制器

  • 每个组放入一个新的控制器:每一个 Sampler 请求开始时,都会有一个简单控制器生成。即:每个分组放到一个新的简单控制器下

  • 只存储每个组的第一个样本:每个 Sampler 请求时,如果有子请求,那子请求是不会被记录的,只记录第一个 URL请求的样本,而这些取样器的 Follow Redirects 和 Retrieve All Embedded Resources…等选项将被设置上。这种情况虽然很多人说比较推荐,但是个人觉得会丢失许多重要的请求,建议大家还是视情况选择。

  • 将每个组放入一个新的控制器中(Put each group in a new transaction controller):每个 Sampler 请求开始时,都会生成一个事务控制器,分组的所有取样器都保存在控制器下

(3)、记录HTTP信息头(Capture HTTP Headers):如果勾选,则将向每个HTTP取样器,添加HTTP信息头管理器

(4)、添加断言(Add Assertions):为每个空的取样器添加一个断言(一般手动断言,自动会有问题)

(5)、Regex matching:指定在替换变量时,是否使用正则表达式匹配。如果勾选,则将取样器中的信息,使用正则表达式来匹配用户定义变量值,替换为变量名 ${变量名},进行替换。匹配时,它只接受整个词匹配,不接受匹配单词一部分

Test Plan Creation_HTTP Sampler settings

(1)、Transaction name:配置事务名称,配合 Naming scheme 参数一起使用

(2)、Naming scheme

  • prefix:在录制时,在取样器名称前添加指定的前缀,自带编号

  • Transaction name:使用用户指定的事务名称,替换取样器名称,自带编号

-Suffix:后缀

  • Use format string:自定义设置格式,可以自己定义,如 #{counter,number,000} - #{path} - 登录

默认格式:#{counter,number,000} - #{path} (#{name})
对应:012 - /product/list (测试)
#{counter,number,000}:内容编号,000代表三位,可以在
Counter start value 中设置从几开始
#{path}:路径,如 /product/list
(#{name}):事务名,在 Transaction name 中设置

(3)、Counter start value:设置编号从几开始

(4)、Create new transaction after request (ms):在多少毫秒之后,自动创建一个事务,此选项基本不用

(5)、Recording‘s default encoding:编号,一般设置为 utf-8,防止录制时出现中文乱码

(6)、从HTML文件获取所有资源(Retrieve All Embedded Resources):在生成的取样器中,设置获取所有嵌入式资源

(7)、自动重定向(Redirect Automatically):录制的取样器是否要设置自动重定向

(8)、跟随重定向(Follow Redirects):录制的取样器是否要设置跟随重定向

(9)、使用keepAlive(Use keep Alive):录制的取样器是否要设置为keep Alive状态,保持连接,一般都勾选上

(10)、Type:要生成哪种类型的取样器,HTTPclient4 或 Java,默认 HTTPclient4

Test Plan Creation_GraphQL HTTP Sampler settings

  • Detect GraphQL Request:自动生成 GraphQL,很少用

在这里插入图片描述

Requests Filtering_Content Type filter

  • Include:根据请求头中的 content-type 属性过滤请求,例如 "text/html [;charset=utf-8 ]”

该字段为正则表达式,它会检查 content-type属性中,是否包含了指定字符串[不必匹配整个字段]

顺序是:先检查 content-type 的包含过滤器,再检查排除过滤器,过滤掉的取样器将不会被储存

Requests Filtering_包含模式(URL Patterns to Include)

  • 使用它可以过滤 URL 路径,只有取样器的完整 URL 匹配通过,该正则表达式才会被记录

如果在包含模式中至少有一个条目,则只记录匹配一个或多个包含模式的请求

如果我们要录制某个网站的请求,可以添加一个 URL过滤,防止录制不必要的请求

Requests Filtering_排除模式(URL Patterns to Exclude)

  • 使用它可以过滤 URL,满足该条件的请求不会被录制

Requests Filtering_将过滤过的取样器通知子监听器(Notify Child Listeners of filtered samplers)

  • 通知子监听器被过滤的取样器

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

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

注意:由正则表达式匹配的字符串必须与整个 host + path 字符串相同

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

二、准备工作

慕慕生鲜: http://111.231.103.117/#/login

三、原生录制方式——HTTP

3.1、设计说明

  • 新建一个 HTTP请求默认值(HTTP Request Defaults) 设置好协议、IP、端口号

  • Jmeter 当中添加 HTTP代理服务器

  • 启动代理服务器,并将浏览器的设置为代理上网,代理地址为:127.0.0.1:8888,端口与上述(HTTP代理服务器)保持一致

  • 打开浏览器开始录制脚本

3.2、测试计划设计

(1)、测试计划右键 <<< 添加 <<< 配置元件 <<< HTTP请求默认值

在这里插入图片描述

  • 协议:http

  • 服务器名称或IP:111.231.103.117

  • 端口:8083

  • 内容编码:utf-8

  • 高级中可以设置超时(毫秒),连接:5000;响应:1000

(2)、测试计划右键 <<< 添加 <<< 非测试元件 <<< HTTP代理服务器

Recording's default encoding:utf-8;设置编码格式,如果 url 路径中存在中文参数是,未设置会出现乱码

在这里插入图片描述

  • 目标控制器:测试计划 > HTTP代理服务器

(3)、点击启动,弹窗点击OK,页面会弹出一个事务控制:Recorder: Transactions Control

在这里插入图片描述

(4)、网页打开设置,搜索代理,点击打开计算机的代理设置,设置完毕后记得点保存

在这里插入图片描述

-开启使用代理服务器

-地址:127.0.0.1

-端口:8888(和 HTTP代理服务器中的端口保持一致,且不能被占用)

(5)、网页输入网址进入:http://111.231.103.117/#/login,输入账户和密码,点击登录

在这里插入图片描述

(6)、录制完毕后,点击停止

在这里插入图片描述

(7)、回到 Jmeter,可以看到,HTTP代理服务器下有全部 http链接信息,后续就可以对脚本进行优化

在这里插入图片描述

四、原生录制方式——HTTPS

4.1、设计说明

  • 新建一个 HTTP Request Defaults 设置好协议、IP、端口号

  • Jmeter 当中建立 HTTP代理服务器

  • 启动代理服务器

  • 浏览器安装证书,证书路径在:$JMETER_HOME/bin/ApacheJMeterTemporaryRootCA.crt

  • 览器的设置为代理上网,代理地址为:127.0.0.1:8888,端口与上述保持一致

  • 打开浏览器开始录制脚本

4.2、测试计划设计

(1)、打开浏览器,进入设置,搜索证书,点击管理证书,证书窗口选择受新任的根证书颁发机构,点击导入,点击下一页

在这里插入图片描述

(2)、点击浏览,选择证书,点击下一页

证书在 Jmeter 安装路径下 bin 目录内:ApacheJMeterTemporaryRootCA.crt

在这里插入图片描述

注:证书有一个有限期7天,7天后 Jmeter 会自动生成新的证书,过期后,从新导入新的即可

在这里插入图片描述

(3)、点击下一页

在这里插入图片描述

(4)、点击完成

在这里插入图片描述

(5)、安全警告,点击是

在这里插入图片描述

(6)、点击确认

在这里插入图片描述

测试步骤和 http 一样,只不过 https 多了个导入证书的步骤,此处就不在演示,可以使用:https:///www.baidu.com 百度官网去进行验证,修改 HTTP请求默认值
协议:https
服务器名称或IP:www.baidu.com
端口:443

五、HTTP代理服务器主要参数说明

在 2.2测试计划设计脚本上进行验证

5.1、目标控制器

在这里插入图片描述

  • 存在线程组或控制器时,可以选择录制脚本所保存的位置

  • 控制器在线程组右键 >>> 添加 >>> 逻辑控制器 下添加

5.2、分组:在组间添加分割

在这里插入图片描述

  • 在取样器分组之间添加以名为-------------------的简单控制器

5.3、分组:每个组放入一个新的控制器

在这里插入图片描述

  • 每一个 取样器(Sampler) 请求开始时,都会有一个简单控制器生成。即:每个分组放到一个新的简单控制器下

5.4、分组:只存储每个组的第一个样本

在这里插入图片描述

  • 每个 取样器(Sampler) 请求时,如果有子请求,那子请求是不会被记录的,只记录第一个 URL请求的样本,而这些取样器的(跟随重定向)Follow Redirects 和 (检索所有嵌入的资源)Retrieve All Embedded Resources…等选项将被设置上

  • 这种情况虽然很多人说比较推荐,但是个人觉得会丢失许多重要的请求,建议大家还是视情况选择

5.5、分组:将每个组放入一个新的事务控制器中

在这里插入图片描述

  • 每个 取样器(Sampler) 请求开始时,都会生成一个事务控制器,分组的所有取样器都保存在控制器下

5.6、记录HTTP信息头

在这里插入图片描述

  • 勾选后,每个请求下,都有一个 HTTP信息头管理器

5.7、Naming scheme:Transaction name

在这里插入图片描述

  • 使用用户指定的事务名称,替换取样器名称,自带编号

更详细的参数说明,请参考:JMeter 5.5 使用详解(持续更新中…)


  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿快跑~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值