性能测试 | 性能测试工具JMeter线程组和参数化的使用
JMeter线程组与参数化
- JMeter线程组
- 1. 认识线程组
- 2. 线程组参数设置
- 案例1. 编写不同脚本访问百度
- 3. 发送HTTP请求
- 案例一: GET请求,URL为http://www.baidu.com/S?wd=test
- 案例二:GET请求,URL为https://www.baidu.com/S?wd=test
- 案例三:POST请求,URL为https://www.baidu.com/S,请求体为:wd=test(form表单)
- 案例四:POST请求,URL为http://www.baidu.com/S,请求体为:wd=test(form表单)
- 4. 察看结果树
- JMeter参数化使用
- 1. 用户定义的变量
- 练习1 请求:https://www.baidu.com:443
- 2. 用户参数
- 练习2 不同用户请求:https://www.baidu.com
- 3. csv数据文件设置
- 练习3 模拟不同用户请求:https://www.baidu.com
- 4. 函数(__counter计数函数)
- 练习4 请求:访问百度首页http://www.baidu.com/S?num=1
- 某支付系统,需要用**1000个不同的用户登录**,并使用添加不同的测试金额数据访问支付接口?
JMeter线程组
1. 认识线程组
并行和串行的设置控制的只是普通线程组
- 执行顺序
串行设置框 仍处在✔状态 【打开JMeter 默认就是
并行设置
】
2. 线程组参数设置
案例1. 编写不同脚本访问百度
-
模拟10个用户并行执行
-
模拟10个用户并行执行5秒
- 案例分析:
- 使用1个线程组,添加HTTP请求(百度)
- 配置线程数为2,循环次数为3时,运行观察结果
- 配置线程数为3,循环次数为2时,运行观察结果,对比不同
分析:
- 线程数代表虚拟用户数,用户数越多,负载越大
- 循环次数代表运行时间,次数越多,运行时间越长
3. 发送HTTP请求
位置:选中线程组->右键->添加->取样器->HTTP请求
案例一: GET请求,URL为http://www.baidu.com/S?wd=test
- 要求:使用HTTP请求-
路径
来传递get请求参数
案例二:GET请求,URL为https://www.baidu.com/S?wd=test
- 要求:使用HTTP请求-
参数列表
来传递get请求的参数
案例三:POST请求,URL为https://www.baidu.com/S,请求体为:wd=test(form表单)
- 要求:使用HTTP请求-
参数列表
来传递PoST请求的form格式参数
案例四:POST请求,URL为http://www.baidu.com/S,请求体为:wd=test(form表单)
- 要求:使用HTTP请求-
消息体数据
来传递POST请求的form格式参数
4. 察看结果树
位置:选中测试计划/线程组->右键->添加->监听器->察看结果树
- 问题
察看结果树中的响应数据出现乱码如何解决?- 找到jMeter安装目录下的bin目录
- 打开jmeter,properties文件,修改配置
sampleresult.default.encoding=UTF-8
- 重启JMeter即可
dnmfiodmosfdks fklmds M kmemf方面a; m;mf;amf;;吗目的是方面发的
JMeter参数化使用
参数化测试:把测试数据组织起来,用不同的测试数据调用相同的测试方法。
JMeter中常见的参数化方式:
- 用户定义的变量
- 用户参数
- CSV Data Set Config
- 函数
- 数据库
1. 用户定义的变量
作用:定义全局变量 使用方式 ${变量名}
位置:测试计划–>线程组–>配置元件–>用户定义的变量
练习1 请求:https://www.baidu.com:443
要求:使用用户定义的变量配置被测系统的协议、域名和端口
操作步骤:
- 添加线程组
- 添加用户定义的变量
- 添加HTTP请求
- 添加查看结果树
2. 用户参数
作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值
位置:测试计划–>线程组–>前置处理器–>用户参数
- 局限性:同一个用户在多次循环时,取到相同的值
练习2 不同用户请求:https://www.baidu.com
要求:
第一个用户请求附带参数:name=“张三”&age=28;
第二个用户请求附带参数:name=“李四”&age=30
操作步骤:
- 添加线程组,线程数设置为2
- 添加用户参数
- 添加HTTP请求
- 添加查看结果树
3. csv数据文件设置
作用:让不同用户在多次循环时,可以取到不同的值
位置:测试计划–>线程组–>配置元件–>CSV数据文件设置
练习3 模拟不同用户请求:https://www.baidu.com
要求:循环请求3次,每次请求时附带参数username,password,code的值不相同
操作流程
- 定义cSV数据文件
- 添加线程组,设置循环次数为3
- 添加CSV数据文件设置
- 添加HTTP请求
- 添加查看结果树
4. 函数(__counter计数函数)
- 为什么使用函数参数化
作用:计数函数,一般做执行次数统计使用
在菜单中选择–>选项–>函数助手对话框
练习4 请求:访问百度首页http://www.baidu.com/S?num=1
要求:每个用户每次循环执行该脚本都可以使用不同的值
操作步骤:
- 添加线程组,设置虚拟用户数和循环次数
- 生成counter函数
- 添加HTTP请求,使用counter函数
- 添加查看结果树
- 添加查看结果树
上述存在两个请求的原因分析,以请求京东为例:
- 查看结果数中最外层HTTP请求的请求信息和响应信息,应该与子节点中最后一个HTTP请求的请求消息和响应消息一致;
- 配置的HTTP请求,应该与子节点中第一个HTTP请求的请求信息一致
- JMeter可以自动判断/处理响应状态码【例如上个练习的重定向问题】
某支付系统,需要用1000个不同的用户登录,并使用添加不同的测试金额数据访问支付接口?
- 准备CSV数据文件一一1000个登录的用户名密码
- 添加线程组
- 添加CSV数据文件设置
- 添加HTTP请求-登录,使用读取的用户名密码
- 添加HTTP清求-支付一一使用__counter函数添加不同的测试金额
- 查看结果树