当前位置:网站首页>JMeter初探五-配置元件与参数化
JMeter初探五-配置元件与参数化
2022-08-09 09:11:00 【止语---】
目录
所谓配置元件可以理解为Jmeter中的一些基本操作。JMeter提供了丰富的配置元件,常用的包括参数化配置元件、HTTP请求默认值、HTTP信息头管理器、计数器等,这些配置元件用于设置默认值和变量,提供给后面的sampler(取样器)使用。
结合实际问题,开始参数化配置元件的介绍。推荐一个可以用于练习的公测地址
1.HTTP Header Manager(信息头管理器)
在接口文档中,获取所有学生信息 说明如下:
请求URL:
http://api.nnzhp.cn/api/user/all_stu
请求方式:
- get
需要添加header信息,key为Referer value 为http://api.nnzhp.cn/
参数:
无
Refer的意义在于告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理,防钓鱼网站。
当然配置元件这里还有一个是http请求默认值
2.HTTP Cookie Manager(cookie管理器)
结合 学生金币充值 这个场景,介绍cookie管理器,cookie,session,token是常见的几种客户端绘话连接的认证方式。
简要描述:
- 学生金币充值接口,这个接口是为了讲添加cookie以及身份验证的
请求URL:
http://api.nnzhp.cn/api/user/gold_add
请求方式:
- post
参数:
该接口有权限验证,需要admin用户才可以做操作,需要添加cookie
cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign
使用登录接口进行登录
在结果树种返回的sign即是需要在学生金币充值使用的作为cookie携带给服务端的信息之一
添加学生金币充值接口和cookie管理器
这里就是从登录接口获取的参数用于下一个接口中,可以直接在Cookie中手动添加,但是实际情况时候每一个cookie都有时间有效性,因此需要将响应登录接口中的sign作为参数传递给gold_add学生金币充值接口。
注意到返回的数据都是json格式,自然很容易就想到使用json path 提取器进行操作,因此针对学生金币充值的过程有以下思路:
- 完成登陆,在返回接口提取到sign参数
- 将sign参数加入到学生金币充值接口的Cookie管理器中
在响应结果树中先提取sign,在JSON Path Expression中输入$.login_info['sign'] ,$表示根元素,然后一级级属性往下去找,先找到login_info,再往下子节点找到sin;响应接口中的sign是唯一的,因此也可以携程$..id或者是$.login_info.id
经过上述尝试之后,可以使用$.login_info.sign进行提取sign,因此登陆接口中添加JSON提取器,在查看结果树种查询登陆的结果
当然这里的JSON Path expressions可以一次性匹配多个值,比如这里需要提取sign和userID
参数详解:
Apply to | 应用范围 |
Names of created variables | 接收值的变量名,自定义,多个变量用分号分隔 |
JSON Path expression | json path表达式,也是用分号分隔 |
Match No.(0 for Random) | 0表示随机;n取第几个匹配值;-1匹配所有。若只要获取到匹配的第一个值,则填写1 |
Compute concatenation var(suffix_ALL) | 如果找到许多结果,则插件将使用' , '分隔符将它们连接起来,并将其存储在名为<variable name> _ALL的var中 |
Default Values | 缺省值,匹配不到值的时候取该值,可写error。如果是多个提取表达式,这里需要填写 |
同时新增一个Debug Sampler,顾名思义,调试使用的Debug
运行之后,查看变量getCookie结果如下
当然这里为了调试,也可以在登录接口加入后置处理器Debug postprocesspor
接着讲学生充值金币接口中Cookie管理器中的值使用上述步骤中定义的getCookie进行替换即可
这个方法在包括登录验证token,cookie中十分有用。
3.CSV Data Set Config
参数化配置元件主要用于JMeter引用外部的数据,通过该元件进行一些配置,如果是否去除标题栏,使用指定数据分隔符等。线程组右键/添加/配置元件/CSV Data Set Config,就创建了一个CSV
参数详解
参 数 | 描 述 | 必 须 |
---|---|---|
Name | 脚本中显示的这个元件的描述性名称 | 是 |
Filename | 文件名。待读取文件的名称。可以写入绝对路径,也可以写入相对路径(相对于bin目录),如果直接写文件名,则该文件要放在bin目录中。对于分布式测试,主机和远程机中相应目录下应该有相同的CSV文件 | 是 |
File Encoding | 文件编码。文件读取时的编码格式,不填则使用操作系统的编码格式 | 否 |
Variable Names | 变量名称。多个变量名之间必须用分隔符分隔。如果该项为空,则文件首行会被读取并解析为列名列表 | 否 |
Ignore first line | 是否忽略首行?如果csv文件中没有表头,则选择false | 是 |
Delimiter | 分隔符。将一行数据分隔成多个变量,默认为逗号,也可以使用“\t”。如果一行数据分隔后的值比Vairable Names中定义的变量少,这些变量将保留以前的值(如果有值的话) | 是 |
Allow quoted data? | 是否允许变量使用双引号?允许的话,变量将可以括在双引号内,并且这些变量名可以包含分隔符 | 否 |
Recycle on EOF? | 遇到文件结束符是否再次循环?默认为 true | 是 |
Stop thread on EOF? | 遇到文件结束符是否停止线程?默认为 true | 是 |
Recycle on EOF? | 当Recycle on EOF为False时,停止线程,当Recycle on EOF为True时,此项无意义,默认为 false | 是 |
Sharing mode | 线程共享模式。1、All threads(默认):一个线程组内,各个线程(用户)唯一顺序取值;2、current thread:一个线程组内,各个线程(用户)各自顺序取值;3、线程组各自独立,但每个线程组内各个线程(用户)唯一顺序取值; |
设置线程组的个数
其中csv.txt文件中的数据如下:
username password
zhangsan [email protected]#$
lisi [email protected]#$
王二 [email protected]#$
码农 [email protected]@dk
运行之后,查看结果树如下:
边栏推荐
猜你喜欢
随机推荐
小程序/app触底加载更多数据
Tencent cloud server is modified to root login to install pagoda panel
When and How to use MALLOC
使用图新地球无法加载谷歌地球的完美解决方法(附软件下载)
C语言单、双引号的区别
算术表达式求值演示
加密技术和电子竞技如何促进彼此的发展
Max Flow P
PoPW token distribution mechanism may ignite the next bull market
TypeScript Brief (1)
VoLTE基础自学系列 | IMS的业务触发机制
The 5th Blue Cap Cup preliminary misc reappears after the game
centos7 mysql异常ERROR 2002 (HY000)分析解决
Amplify Shader Editor手册 Unity ASE(中文版)
MySQL查漏补缺(二)排序检索、过滤数据、模糊查询、正则表达式
js实现看板全屏功能
[Vulnerability reproduction] CVE-2018-12613 (remote file inclusion)
uniapp编译到小程序后丢失static文件夹问题
【场景化解决方案】构建医疗通讯录,“慧医钉”助力医院实现数字化管理
Redis缓存设计