JMeter - 基础
JMeter 安装
1.下载解压后配置环境变量
系统变量新增如下:
JMeter_HOME=F:\soft\apache-jmeter-5.4.1
PATH 新增如下:
%JMETER_HOME%\lib\jorphan.jar
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar
%JMETER_HOME%\bin
2.启动方式
进入JMeter安装目录下的bin目录
- 双击jmeter.jar
- 命令行输入 java -jar ApacheJMeter.jar (jmeter bin 目录下)
任意一种方法都能打开
JMeter 核心目录介绍
1.lib:存放jmeter依赖jar和第三方jar(lib/ext)
2.bin目录
3.docs目录:JMeter的API文档,用于开发扩展组件
4.用户帮助文档
元件
元件:多个类似功能组件的容器(类似于类)
组件
组件:实现独立的某个功能(类似于方法)
元件作用域的原则
取样器:核心,没有作用域
逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用
其他元件:
- 如果想对某一个取样器起作用,设置该元件为取样器的子节点
- 如果想对多个取样器起作用,设置该元件为取样器的同级
元件的执行顺序
同一作用域(目录/级别/缩进)下的不同元件的执行顺序:
1.配置元件(Config Element - 初始化测试数据)
2.前置处理器(Pre Processor对请求参数进行赋值)
3.定时器 (Timer- 控制接口请求的发送时间)
4.取样器(Sample - 调用请求方法)
5.后置处理器(Post Processor - 提取响应中特定字段的值)
6.断言(Assertions - 判断结果)
7.监听器(Listener)
同一作用域(目录/级别/缩进)下的相同元件的执行顺序:
从上到下的顺序依次执行
案例
以下元件的执行顺序是?
固定定时器1 -> HTTP请求1 -> IF 控制器 -> 固定定时器2 -> HTTP请求2 -> 固定定时器3 -> HTTP请求3
线程组
作用:线程组就是控制JMeter用于执行测试的一组用户
分类:setup线程组、普通线程组、teardown线程组
特点:
- 模拟多人操纵
- 线程组可以添加多个,多个线程组可以并行或者串行
- 取样器和逻辑控制器必须以来线程组才能使用
线程组串行执行:
测试计划 -> 独立运行每个线程组
Ramp-Up:
- 爬坡时间(线程就绪时间) - 多久时间让线程就绪
- 线程不是说来就来说走就走,jmeter 向操作系统申请
- 我们一次性向操作系统申请大量线程,可能不会立即就绪
- 让线程慢慢创建,e.g: 线程数量100, 爬坡时间10s, 每秒jmeter 创建出10个线程
https://blog.csdn.net/u011441473/article/details/124818175?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170098313016800225568358%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170098313016800225568358&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-11-124818175-null-null.nonecase&utm_term=Jmeter&spm=1018.2226.3001.4450
循环次数:
- 线程执行人物的模式
- 指定次数: 单个线程执行任务的次数,执行完毕线程销毁。e.g: 100个线程,ramp-up:10s ,循环次数:1,代表 1秒启动10个线程,10个线程执行1次完毕
- 永远:一直干活不停歇,执行完毕所有任务步骤,继续下一次
练习1:
线程组- 模拟2个用户等待5S后开始执行
延迟启动不可以单独使用,持续时间必须填写,不然会报错
持续时间可以则单独使用
练习2:
- 线程数2,循环次数3,运行观察结果
- 线程数3,循环次数 2,运行观察结果
对比有什么不同?
线程数:代表用户数,用户数越多,负载越大
循环次数: 代表时间,该值越大,代表运行的次数越多,运行的时间越长
取样器-HTTP请求
跟随重定向与自动重定向区别
自动重定向:
HttpClient接收到请求后,如果请求中包含重定向请求,HttpClient是可以自动跳转的,但是只针对GET和Head请求,勾选此项则“跟随重定向”失效;自动重定向可以自动转向到最终目标页面,但是JMeter是不记录重定向过程内容的,比如在查看结果树中是无法找到重定向过程内容的(A重定向到B,此时只记录B的内容不记录A的内容,A的响应内容我们暂时且叫过程内容),如果此时你想做关联,那就比较遗憾了,你无法关联到。
跟随重定向:
Http Request取样器的默认选项,但响应Code是3XX时(比如301是重定向),自动跳转至目标地址。与自动重定向不同,JMeter会记录重定向过程中的所有请求响应,在查看结果树时可以看到服务器返回的内容,所以你可以对响应的内容做关联
比如你要测试登录,你把POST请求改为跟随重定向就可以了
get请求的两种传参方式:
-
直接路径传参
-
参数列表传参
post (put)请求的两种传参方式:
-
参数tab 和消息体数据tab 不能同时填写
-
post/put 请求的查询参数只能填写在路径的url上,通常上送表单数据采用 参数tab(默认是x-www-form-urlencoded)
-
也可以将表单放入消息体数据tab 采用: username=15812345678&password=123456&verify_code=8888 的方式
- 此时需要指定Content-Type: multipart/form-data,消息体的多个键值对被编码为一条数据
-
只有请求体,没有查询参数时
- 消息体数据传表单
Content-type:
发送JSON请求体
1.在HTTP请求的基础上添加:
- 配置Conten-Type
- 消息体数据传入json请求体
HTTP请求默认值
线程组右键 -> 配置元件 -> HTTP请求默认值
作用:
会在HTTP请求的时候,自带这些参数,设置共性内容
-
默认值
-
baidu1 和 baidu2 都一样
3.结果:
参数化
用户定义的变量(全局变量)
位置:测试计划 -> 添加 -> 配置元件 -> 用户定义的变量
定义变量:
使用变量:
用户参数
什么时候使用?
针对同一组参数,当不同的用户来访问时,可以获取到不同的值
位置:测试计划 -> 添加 -> 前置处理器 -> 用户参数
如下设置两组用户数据,线程组用户数设置为2
取样器设置:
第一个请求:
第二个请求:
CSV 文件参数化
位置:测试计划 -> 添加 -> 配置元件 -> CSV Data Set Config
使用步骤:
2.数据准备
3.请求中引用中间变量
count函数参数化
使用步骤如下:
1.工具 -> 函数助手对话框
2.利用函数生成计数器
如果是2个用户,每个用户请求3次,则
TURE代表: 带个用户都有自己的计数器
用户1,请求的三次地址会传递参数num=1,num=2,num=3
用户2,请求的三次地址会传递参数num=1,num=2,num=3
FALSE代表:
两个用户一起使用全局的num,第6次请求的num值为6
- 引用计数器
断言
响应断言
位置:线程组 -> HTTP请求 -> 添加 -> 断言 -> 响应断言
部分测试字段和模式匹配规则说明:
测试字段:
- 响应文本: 来自服务器的响应文本,及主体
- 响应代码: 响应的状态,例如:200
- 响应的信息: 如 OK
- URL样本:请求URL
- Document(text):响应的整个文档
- 忽略状态:忽略返回的响应状态码
模式匹配规则:
- 文本包含指定的正则表达式
- 匹配:整个文本匹配指定的正则表达式
- 相等(Equals): 整个返回结果的文本等于指定的字符串(区分大小写)
- Substring: 返回结果的文本包含指定字符串(区分大小写)
断言失败:
断言成功:没有变化
响应断言 - 忽略状态
应用场景:测试反向用例时,url填错,预期断言为404,为了让用例通过
请求:
断言:
结果没有通过:
解决:
顺利通过:
JSON 断言
位置: HTTP请求 -> 添加 -> 断言 -> 响应断言
invert assertion:反转断言,如果满足条件则失败
断言持续时间
位置:HTTP请求 -> 添加 -> 断言 -> 断言持续时间
案例:访问jd ,响应时间小于100ms
处理Cookie
浏览器请求时会自动帮我们处理cookie,那么jmeter做接口测试时如何处理?
方式一
在线程组顶层结构建立配置元件 - HTTP Cookie 管理器即可
Jmeter就会自动处理Cookie
结果:
方式二:
请求cookie的返回头信息:
步骤1:通过正则表达式提取cookie
步骤2:在需要上送cookie的HTTP 请求下建立 Cookie 管理器:
- 路径:一般是response header 中有
- 域: 请求的hostname
本文来自博客园,作者:chuangzhou,转载请注明原文链接:https://www.cnblogs.com/czzz/p/15733854.html