Jmeter核心知识
- 接口三要素
- 请求地址
- 请求参数
- 返回值
- 主要是HTTP协议
- 请求方式
- get
- 带参数 params
- 不带参数
- post
- x-www-form-urlencoded 参数类型 键值对
- content-type:application/x-www-form-urlencoded
- json格式数据
- content-type:application/json
- x-www-form-urlencoded 参数类型 键值对
- put
- delete
- get
- 请求方式
1.Jmeter取样器-以HTTP请求为例
-
添加HTTP请求
-
和HTTP请求相关的其他的组件
1.1HTTP信息头管理器
-
HTTP信息头管理器—对应—HTTP请求头
- 当发送的HTTP请求是json类型时,HTTP Request中的Body Data数据类型放置请求的json数据,并需要配合HTTP信息头管理使用
-
在Jmeter中,发送HTTP的post请求时,需要添加HTTP信息头管理器
1.2HTTP请求配置
基本配置
http协议 默认端口号80
https协议 默认端口号443
如:http://127.0.0.0:8081/apl/deps/
- 协议 hhtp或https
- 服务器名称或IP :表示服务的地址或域名,在本地写localhost或127.0.0.1
- 端口号:如果有就写具体的端口号8081,如果没有端口就不需要填
- 方法:表示http协议的请求方式
- 路径:表示接口地址 /apl/deps/
- 内容编码:一般使用utf-8编码
- 参数:针对post请求参数是x-www-form-urlcontent格式和form-data格式
- 消息体数据:针对post请求中json格式或xml格式请求数据,相当于postman中的raw
- 文件上传:表示上传文件接口
-
举例说明
请求地址:http://ecdir.itshop.cn/phone?url=/user/signin
请求方式:post
参数类型:application/x-www-form-urlencoded
请求参数:json:{“name”:“张三”,“ps”:“123456”}
- HTTP请求组件中,默认支持x-www-form-urlencoded格式,所以不需要在HTTP请求头管理器中进行设置
1.3HTTP请求默认值
-
位置
-
作用
- 将同一线程组下所有的HTTP请求的协议或服务器域名同一管理
- 如果HTTP请求中自己填写和服务器域名,当发送请求时,使用本身。即,自定义的HTTP请求的优先级高于默认的。
2.Jmeter的参数化
- 根据需求动态获取数据并进行赋值的过程
- 在Jmeter中进行参数化的三种方式
- CSV数据控件
- 用户参数
- 用户自定义变量
2.1Jmeter中参数的定义
- 在Jmeter中参数化的变量使用==${变量名}==表示
2.2CSV数据控件实现参数化
- 从外读取数据功能的组件 CSV Data set Config
- 适用范围:适用于大量测试数据的前提,如系统增加1000条数据,设置1000名用户登录等
CSV Data Set Config位置
csv文件内容
CSV Data Set Config中引入csv文件
HTTP请求中使用csv中的变量
- 需要配置线程数个数与csv中有效记录的行数相同
2.3用户参数实现参数化
-
适用范围:适用于参数取值范围很小的时候使用
-
位置
- 针对哪个sampler使用就在哪个sampler下添加,在前置处理器中
配置
-
添加变量
- 变量名称
-
添加用户
- 添加测试数据
- 一个用户就是一组测试数据
使用
-
在HTTP请求中引用变量
-
在线程组中设置线程数
- 线程数数的值和用户参数中的用户数一样(不使用循环线程数的方式)
需要配置线程数个数与csv中有效记录的行数相同
2.4用户定义的变量实现参数化
- 使用范围:一般用作常量的参数化,如访问的url地址,测试环境的地址,数据库地址等
位置
- 测试计划页面(常用)
- 用户定义变量组件(变量较多时使用)
使用
3.Jmeter连接数据库
1.需要导入连接数据库的jar包
-
如mysql-connector-java-8.0.12.jar,这个jar包需要自己下载
-
导入
-
需要的组件
-
JDBC Connection Configuration
-
JDBC Request
-
2.JDBC Connection Configuration配置
-
配置
-
注意
数据库地址写法举例:jdbc:mysql://localhost:3306/ecdb
- jdbc:mysql://ip或域名:端口/数据库名
- 不同的数据库连接方式会不同,用到的时候自行百度。
-
3.JDBC Request配置
-
配置
-
sql的语句后面不添加分号;
4.JDBC Request配置中语句的编写-引入变量-(还存在问题)
-
变量的引用-下面这图可能有问题
4.关联
4.1xpath关联
- 从上一条请求中获取的数据,应用在下一条请求中的过程
举例
-
访问一个网页,获取它的title;将title放入百度搜索框中,进行搜索
-
从第一个http请求中,解析一个网页中的title
-
xpath解析测试
-
-
将解析出来的title放入第二个http请求中
-
但是在实际中,百度有验证,只成功了一次
-
-
1.使用场景
- 在接口的返回值为HTML或者xml格式时,使用xpath提取器
2.位置
- 后置处理器->xpath提取器
3.配置xpath提取器
- 引用名称:接收返回值数据的变量名
- xpath query:xpaht解析
- 匹配数字:表示第几个,0表示随机,-1表示所有
- 缺省值:当没有找到解析的数据时,引用名称的值就为缺省值
- XML parsing Options:勾选 Use Tidy(tolerant parser)和Quiet
4.2json提取器
1.使用场景
-
在接口数据为json格式时
2.位置
-
后置处理器->json提取器
3.配置json提取器
-
引用名称:接收返回值数据的变量名
-
json path 表达式:$…获取字段名
- 这个可以百度,语法
-
Match No:0表示随机,-1表示所有
-
缺省值:当没有解析到值,用该缺省值替换。
4.3正则表达式提取器
1.使用场景
- 适用于任何返回形式
- 当接口返回值在xpath和json解析都不太好处理时,使用
2.位置
-
后置处理器->正则表达式提取器
3.配置正则表达式提取器
-
Apply to 和 Field to check一般不需要动
-
引用名称:存储提取的结果
- 引用方法:${引用名称}
-
正则表达式:jmeter中正则表达式可以百度
- 举例
- “session”:{(.*?)}
- 举例
-
模板:$1$,表示取第一个数据
-
匹配数字:0表示随机选择,1表示第一个
-
缺省值:当没有解析到值,用该缺省值替换