昨日回顾
(1)Jmeter与Loadrunner
Jmeter优点:开源免费、体积小 Loadrunner优点:支持用户量多,报表精度高、支持IP欺骗 由于Jmeter开源免费,与LR功能基本一致,所以在公司中一般选择Jmeter进行性能测试
(2)Jmeter安装
安装JDK:下载JDK —— 安装 —— 配置环境变量 —— 运行
安装Jmeter:下载Jmeter(注意匹配JDK版本) —— 安装(解压缩) —— 配置环境变量 —— 运 行
(3)Jmeter目录结构:
bin目录:存放可执行文件和配置文件
printable-docs:存放用户手册
lib目录:Jmeter运行时依赖的Jar包
docs目录:存放Jmeter 接口文档
(4)Jmeter的元件和组件
- 元件类型
线程组:模拟用户
取样器:发送请求
前置处理器:在取样器之前执行,对请求中的参数进行预处理(例如:赋值) —— 相当于 postman的前置请求
后置处理器:在取样器之后执行,对响应中的结果进行处理(例如:提交响应字段)—— 相 当于postman的test
定时器:等待sleep
监听器:日志、查看结果
配置元件:定义参数
断言:对于结果进行检查
测试片段:类似于定义的类,不单独运行,只供其他脚本调用
- 元件的执行顺序
写脚本的顺序:
定义参数 —— 对请求参数进行赋值 —— 发送请求 —— 收响应 —— 提取响应中的字段 —— 断言响应中的字段 —— 观察运行结果
元件执行顺序:
配置元件 —— 前置处理器 —— 取样器 —— 后置处理器 —— 断言 —— 监听器
如果一个作用域下,有多个相同的元件时(例如:多个取样器),按照从上到下的顺序 执行
(5)Jmeter基本组成
- 线程组
分类:普通线程组(可以并行或者串行执行)、setup线程组(先执行)、teardown线程组 (后执行)
参数:线程数、ranm-up time、运行次数、运行时间、延迟时间
- HTTP请求
参数:协议、域名/IP、端口、请求方法、URL路径、编码格式、参数
- 查看结果树
(6)Jmeter参数化
- 用户定义的变量:每个用户每次读取的变量值都完全相同
- 用户参数:不同用户读取的变量值不同,但是同一用户在多次循环时读取的变量值是一致的
- CSV数据文件:不同用户读取的变量值不同,同一用户在多次循环时读取的变量值也不同
- 函数:每次执行读取的变量值都不同,不需要提前定义数据(适用于对数量值无明确要求,只要求 不同)
- 配置:
- 设置:每种不同
- 引用:${参数名}
- 配置:
今日重点
掌握Jmeter断言使用
掌握Jmeter关联使用
掌握Jmeter自动录制脚本
性能测试工具
Jmeter断言
通过自动化的手段对请求的响应数据进行自动校验
响应断言
添加:线程组——HTTP取样器——断言——响应断言(断言一定是在HTTP请求的子节点下)
配置介绍:
类似于assertEqual(response.json,”success“)
- assertEqual :校验的方式
- response.json:要校验的部分
- success:用来校验的数据
可以在同一个HTTP请求下包含多个响应断言
JSON断言
断言持续时间
客户端发送请求,到收到服务器的响应的时间,要求不超过指定的时间。
实际时间,是统计的取样器结果中的load time
Jmeter关联
当请求之间有依赖关系,一个请求的入参,需要使用到之前请求的响应数据时,需要使用关联。
所有提供关联功能的元件都在后置处理器中:
- 正则表达式提取器
- xpath提取器
- JSON提取器
正则表达式介绍:
<title>百度一下,你就知道</title><title>百度一下,你就知道</title>
<title>.*?</title>
.:是通配符,可以代表任意字符(除换行回车)
*: 代表前面的字符出现0次或者多次 .*匹配规则:找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据都被记录下来
?: 代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找 左边界和右边界左边界(.*?)右边界:可以提取出想要获取的数据内容
正则表达式提取器:
应用场景:正则表达式提取器可以提取任意格式的响应数据
参数介绍:
模板:正则表达式可能匹配多组值,通过模板的编写来保存指定的值到变量中
正则表达式提取器的步骤:
1、添加线程组
2、添加HTTP请求 - 传智播客的首页
3、添加正则表达式提取器并配置
4、添加HTTP请求 —— 百度,在参数中引用正则表达式提取器中定义的变量title:${title}
5、添加查看结果树。
案例
获取传智播客首页的地址,并作为参数传递
xpath提取器
应用场景:只能适用于响应消息为HTML格式的情况
参数介绍:
步骤:
1、添加线程组
2、添加HTTP请求——传智播客首页
3、添加xpath提取器
- 勾选Use Tidy
- 填写引用名称:参数名
- Xpath路径
4、添加HTTP请求——百度首页
- 引用xpath提取器中定义的参数名:${参数名}
5、添加查看结果树
json提取器:
应用场景:适用于返回的数据类型为JSON格式的情况
参数介绍:
步骤:
1、添加线程组
2、添加HTTP请求——天气
3、添加JSON提取器
- 参数名
- JSON路径
4、添加HTTP请求——百度
- 应用JSON提取器中定义的参数名
5、添加查看结果树。
跨线程组关联
跨线程组关联指的是多个请求之间有关联关系(即一个请求的参数需要使用前面请求的响应),但是两 个请求不在一个线程组内,此时使用提取器无法完成关联,需要使用Jmeter属性来完成数据的传递。
原理
步骤
1、添加线程组1,添加HTTP请求——传智播客
2、添加JSON提取器
3、添加Bean Shell取样器(填写setProperty函数——将提取器提取出来的值赋值给Jmeter属性)
4、添加线程组2,添加HTTP请求——百度
引用前面返回的城市信息(使用property函数——将Jmeter属性值读取出来)
5、添加查看结果树
自动录制脚本
原理
Jmeter在客户端和服务器之间做代理。收到所有的请求和响应数据后,Jmeter再进行逆向解析的动作, 将数据报文转化为脚本。
jmeter脚本录制
1、在测试计划下,添加HTTP代理服务器
2、设置自己PC机的代理
3、点击启动,进入浏览器进入相关的操作,脚本会自动生成并存放在指定的线程组下。
过滤规则的配置
Cookie管理器:
管理cookie:自动将cookie信息添加到后续的所有请求中。
登录及后续的相关操作时,需要提前添加HTTP Cookie管理器
每天进步一点点,加油!!!