一级目录jmeter参数化
1.JMeter参数化常用方式
· 用户定义的变量
· 用户参数
· CSV Data Set Config
· 函数
2.用户定义的变量
说明:全局参数
所有用户读取的变量值相同
添加方式:测试计划>线程组->配置元件->用户定义的变量
参数设置:
参数名:参数值
在HTTP取样器中应用:${参数名}
2.1场景
·请求:https:/www.baidu.com:443
·要求:使用用户定义的变量配置被测系统的协议、域名和端口
2.2操作步骤
1.添加线程组
2.添加用户定义的变量
3.添加HTTP请求
4.添加查看结果树
3.用户参数
说明:针对每个用户取不同的值,但是不能针对同一个用户的不同循环取不同的值。
使用用户定义的变量时,不同的用户在访问时,读取的参数值完全相同,如果希望每个用户在访问时的变量不同,可以使用用户参数。
配置方法 :
· 添加位置:线程组一一前置处理器一一用户参数
· 添加用户:可以添加多组用户
· 添加参数:针对每个用户添加多个参数
3.1场景
· 请求:https:/www,baidu,com
· 要求:第一次请求附带参数:name="张三"&age=28:第二次请求附带参数:name="李四"&age=30
3.2操作步骤
1.添加线程组
2.添加用户参数
3.添加HTTP请求
4.添加查看结果树
4.CSV数据文件设置
说明:针对每个用户的每次循环取不同的值
操作步骤
1.定义CSV数据文件
2.添加线程组
3.添加CSV数据文件设置
· 添加位置:线程组------配置原件------csv数据文件设置
参数配置:
4.添加HTTP请求
· 引用参数值时,使用时csv数据文件中定义的变量名
5.添加查看结果树
4.1场景
· 要求:循环3次,每次请求时附带参数usemname,password,code的值不相同
5.counter函数
不需要提前准备数据,jmeter自动添加计数的方式来完成参数化
通过counter函数在生成动态变化的数值
在HTTP取样器中,应用counter函数生成的函数字符串,就可以读取counteri函数生成的数值。
· 如果counter参数设置为:TRUE,则每个用户分别从1开始计算,每循环一次加1
· 如果counter参数设置为:FALSE,则所有用户公用一个计数器,每发送一个请求时,取值加1
6.Jmeter乱码问题
1.打开bin目录,找到jmeter.properties
2.右键打开Notepad,ctrl+f搜索encoding
二级目录断言
1.响应断言
使用范围:HTTP消息的任何格式的响应
添加 :线程组一一HTTP取样器一一断言一一响应断言(断言一定是在HTTP请求的子节点下)
配置介绍 :
类似于 assertEqual(response.json,"success")
assertEqual:校验的方式
response.json:要校验的部分
success:用来校验的数据
可以在同一个HTTP请求下包含多个响应断言
2.JSON断言
使用范围:响应消息为JSON格式的响应
该组件用来对JSON文档进行验证,验证步骤如下:
1.首先解析JSON数据,如果数据不是JSON,则验证失败
2.使用Jayway JsonPath1.2.0中的语法搜索指定的路径。如果找不到路径,就会失败。
3.如果在文档中找到JSON路径,并且要求对期望值进行验证,那么它将执行验证操作。
添加方式:测试计划>线程组>HTTP请求->(右键添加)断言->JSON断言
3.断言持续时间
使用范围:对请求的响应时间进行断言
参数配置:
客户端发送请求,到收服务器的响应时间,要求不超过指定的时间,当响应时间超过该值时会报错。
实际时间,是统计取样器结果中的load time
三级目录关联
一.关联
当请求之间有依赖关系,一个请求的入参(请求参数),需要使用到之前请求的响应数据时,需要使用关联。
所有提供关联功能的元件都在后置处理器中
常用的关联方法 :
正则表达式提取器
XPath提取器
JSON提取器
二.正则表达式提取器
应用场景:应用于任何响应格式的数据
左边界(.*?)右边界:可以提取出想要获取的数据内容
2.1 正则表达式提取器的参数介绍
模板:正则表达式可能匹配多组值,通过模板的编写来保存指定的值到变量中
2.2正则表达式步骤
1、添加线程组
2、添加HTTP请求-传智播客的首页
3、添加正则表达式提取器并配置
4、添加HTTP请求一一百度,在参数中引用正则表达式提取器中定义的变量title:${title}
5、添加查看结果树。
2.3正则表达式使用案例
获取传智播客首页的地址,并作为参数传递
三. XPath提取器
应用场景:只能适用于响应消息为HTML格式的情况
参数介绍:
3.1 步骤
1、添加线程组
2、添加HTTP请求一一传智播客首页
3、添加Xpath提取器
· 勾选Use Tidy
· 填写引用名称:参数名
· Xpath路径
4、添加HTTP请求一一百度首页
· 引用pth提取器中定义的参数名:${参数名}
5、添加查看结果树
四.JSON提取器
应用场景:适用于返回的数据类型为JSON格式的情况
参数介绍:
4.1 步骤
1、添加线程组
2、添加HTTP请求一一天气
3、添加JSON提取器
· 参数名
· JSON路径
4、添加HTTP请求一一百度,
· 应用JSON提取器中定义的参数名
5、添加查看结果树。
五. 跨线程组关联 (jmeter属性)
应用场景:在多个不同线程组的请求之间传递数据。
跨线程组关联指的是多个请求之间有关联关系(即一个请求的参数需要使用前面请求的响应),但是两个请求不在一个线程组内,此时使用提取器无法完成关联,需要使用meter)属性来完成数据的传递
原理:
5.1 步骤:
1、添加线程组1,添加HTTP请求一一传智播客
2、添加JSON提取器
3、添加Bean ShellE取样器(填写setProper函数一一将提取器提取出来的值赋值给meter属性)
4、添加线程组2,添加HTTP请求一一百度
· 引用前面返回的城市信息(使用propertyi函数一一将meter属性值读取出来)
5、添加查看结果树
四级目录JMeter录制脚本
作用:将操作过程直接转换为脚本
一. 原理 :
Jmeter在客户端和服务器之间做代理。收到所有的请求和响应数据后,Jmeter再进行逆向解析的动作,将数据报文转化为脚本。
二.脚本录制演示
1.在测试计划下,添加HTTP代理服务器
2.设置自己PC的代理
3.点击启动,进入浏览器进入相关操作,脚本会自动生成并存放在指定的线程组下。
步骤 :
1.添加HTTP代理服务器
2.配置HTTP代理服务器
· jmeter代理的端口
· 配置目标控制器:选择一个线程组,将脚本录制到该线程组中
· filteri过滤:包含/排除
3、配置PC机中的代理设置。
· 配置IP (Jmeter的IP.本机lP)
· port(第2步中配置的meter代理的端口)】
· <-loopback>
4、启动HTTP代理服务器的配置
5、进入浏览器进行操作,HTTP请求会自动记录在jmeter中。
三.jmeter过滤规则的配置
四.cookie管理器
作用:获取服务器返回的登录状态,并添加到后续的请求 。
管理cookie:自动将cookie信息添加到后续的所有请求中。
登录及后续的相关操作时,需要提前添加HTTP Cookie管理器