JMeter的使用
1.测试计划
2.线程组
3.取样器-http请求
- post请求,参数是表单
- post请求,参数是json数据
4.配置元件-用户定义的变量
5.配置元件-http请求默认值
6.配置元件-CSV数据文件设置(实现参数化)
- 数据文件与脚本分离
7.前置处理器-用户参数(实现参数化)
- 数据与脚本不分离
8.函数-计数器
9.函数-随机数
10.函数-时间
11.直连数据库
1.导入MySQL驱动包(下载地址进入官网https://dev.mysql.com/downloads/connector/j/,选择:Platform Independent。点击Download)
2.添加配置元件JDBC Connection Configuration
3.添加JDBC request请求(数据库请求)
4.添加取样器,内容默认就行
5.使用数据
备注:上面变量名写错 应该是username_5 和 password_5
12.断言
- 响应文本断言
- JSON断言
1.名称
断言的名称,根据需要按自己的命名规范填写即可
2.注释
断言的注释,根据需要按自己的规范填写即可
3.Assert JSON Path exists:
用于断言的JSON元素的路径(JSONPath)及字段值
4.Additionally assert value
是否额外验证:根据JSONPath提取的值是否正确
a. 不勾选。则:验证JSONPath能否在JSON文档中匹配到路径
b. 勾选。则:验证根据JSONPath提取值是否符合预期
5.Match as regular expression
预期值是否可以使用正则表达式
a. 不勾选。预期值:不能使用正则表达式表示
b. 勾选。预期值:可以使用正则表达式表示
6.Expected Value:
填写提取字段的预期值
7.Expect null
若验证提取的值为null,则勾选此项
这里有两个地方需要额外注意:
a. 验证null值,还是需要勾选“Additionally assert value”,否则验证的是JSONPath能否匹配到路径
b. 预期值不填表示空字符,与null不等价
8.Invert assertion(will fail if above conditions met)
若勾选,表示对断言结果取反
9.注意:
除了null外,还有一种特殊的值,就是空数组,预期值不能不填,需要设置为:[],表示空数组。
13.if逻辑控制器
14.foreach控制器
14.循环控制器
14.事务控制器
统计性能测试结果一定会关注TPS,TPS表示每秒处理事务数,JMeter默认每个事务对应一个请求。我们可以用逻辑控制器中的事务控制器将多个请求统计为一个事务。
15.include控制器
用于脚本的重用,调用测试片段
1.写好一个http请求,保存为测试片段
2.另一个脚本里使用include控制器调用刚才保存好的测试片段
16.cookie管理器
1.添加http cookie管理器
2.登录请求
3.登录后的其他请求
17.关联接口
上一个接口的结果作为下一个接口的条件
- 后置处理器-xpath提取器
- 正则提取器
- JSON提取器
json路径写法
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
JsonPath 结果
$.store.book[*].author 表示所有书籍的作者。
$..author 表示所有作者
$.store.* 所有东西--所有书籍和自行车。
$.store..price 所有东西的价格
$..book[2] 第三本书
$..book[-2] 倒数第二本书
$..book[0,1] 索引为0和索引为1的两本书
$..book[:2] 索引为0到2(不含2)的所有书籍
$..book[1:2] 索引为1到2(不含2)的所有书籍
$..book[-2:] 最后两本书
$..book[2:] 索引为2及其往后的所有书籍。
$..book[?(@.isbn)] 携带isbn号的所有书籍 an ISBN number
$.store.book[?(@.price < 10)] 商店中价格低于10的所有书籍。
$..book[?(@.price <= $['expensive'])] 所有非 "expensive"的书籍
$..book[?(@.author =~ /.*REES/i)] 所有匹配正则表达式(忽略大小写)的书籍
$..* 返回所有东西
$..book.length() 书籍数量
18.跨线程组传值
1.测试计划-勾选独立运行每个线程组(顺序执行)
2.设置全局变量
3.beanshell取样器让变量生效
4.另一个线程组使用
19.同步计时器(集合点,高并发)
线程集合到一起然后同一刻发送请求