Jmeter核心知识点
1. 参数化
1.1 什么是参数化
动态获取并设置数据,不用重复操作
1.2 为什么要参数化(使用场景)
例子:学院-新增100条数据
手动实现要重复操作,效率低下
使用参数化可以动态获取并设置数据,提升效率
1.3 如何实现参数化
- CSV Data SetConfig
- 函数助手
- 用户参数
- 用户自定义变量
2.CSV Data SetConfig
2.1 csv文件及准备数据
Txt excel csv mysql
id1,张三,master1,sl
id2,Lisi,master2,sl2
id3,王五,master3,sl3
2.2 具体实现
- 搭建架构
- 再在测试计划中添加一个组件,负责循环读取文本文档
- 将获取的字段对应的值设置进
3. 用户参数
A、是什么?
是参数化的实现方案之一,和 CSV Data Set Config 实现思想一样,流程也类似
B、为什么?
提高效率: 批量操作
C、怎么用?
实现:
1)、将数据存入第三方(不是文件,而是Jmeter内置的一个组件)
a、前置处理器 ---> 用户参数
b、设置用户参数组件
2)、设置线程组的循环次数(循环读取数据)
3)、直接从第三方组件取数据,然后应用在 取样器(http请求)
格式: ${变量名}
4. 函数助手
4.1 什么是函数助手
jmeter封装好的一些功能,可以直接调用
4.2 好处
提升效率
4.3 如何实现
1)、打开内置的 函数功能 模块
方式1:菜单栏 ---> 选项 ---> 函数助手对话框 (ctrl + shift + f1)
方式2:工具栏 ---> 记事本图标
2)、选择要使用的函数(计数器函数),并设置(主要设置参数)
3)、生成调用格式(Jmeter 自动生成)
4)、在需要的位置调用该 函数格式
5. 用户定义变量
A、为什么?
场景:
某些 取样器中使用了相同的数据,且这个数据可能要被多次改变,比如 模板中:改 查 删操作根据 id 执行的,可能操作 idA,再操作 idB .... 如果每次改数据,繁琐,且
容易出错
可以使用: 用户定义的变量来优化
C、怎么用?
实现思想:
1)、创建一个组件(公共盒子),存储变量,变量名 = id值
配置元件 -----> 用户定义的变量
数据设置: 属性名和属性值
2)、在 http 请求中使用调用变量名的方式获取变量值
格式: ${变量名}
3)、以后修改时,只需要修改组件中的变量值即可
2.连接数据库
2.1 是什么
直接关联数据库,和数据库进行数据交互
2.2 为什么
可以直接和数据库交互,然后再和接口数据比对, 比原来通过接口操作数据库更安全
2.3 怎么用
-
使用第三方jar包,已经发
-
设置数据库的登录信息(ip,端口号,账号,密码) ----> 数据库连接池组件
配置元件 -----> JDBC Connection Configuration
-
通过 Jmeter 内置的组件发送 SQL 语句,查看响应结果
Sampler ---- > JDBC Request
3. 关联
3.1 什么是关联
一个请求的结果作为了另一个请求的提交的数据,像这种情况称之为关联
3.2 为什么要学习关联
项目有些敏感数据是要前后一起才能实现的,所以要有关联
3.3 怎么实现
- 搭建框架
- 第一次发起请求, 对于响应的结果,进行数据解析(xpath。re), 解析出要传递的参数(?)
- 拿到传递的参数再次发起请求
- 使用后置处理中的-正则表达式解析器/xpath解析器
- 参数的传递
4. 断言
4.1 什么是断言
断言就是让程序代替人工去判断程序响应数据是否达到预期结果.
4.2 为什么学习断言
在request的返回层面增加一层判断机制,检测是否符合预期,来保证测试过程中数据交互与预期是一致的.
4.3 断言种类
响应断言、size assertion、Duration Assertion
4.4 实现
1. 测试计划-线程组
2. 线程组-HTTP请求
3. HTTP请求->断言->想要用的断言
4. 测试计划->监听器->察看结果树
5. 测试计划->监听器->断言结果
5. 集合点
5.1 什么是集合点
集合点也叫定时器
5.2 集合点的使用场景
大规模并发时使用,比如秒杀,但是我们只是模拟,不能真正实现此场景。
5.3 怎么实现
设置定时器,阻塞线程的释放,直到线程数量达到后再一起释放,产生瞬时并发来模拟
具体步骤
1. 测试计划->线程组
2. 线程组->Sampler->HTTP请求(学院查询-所有)
3. 线程组->Sampler->HTTP请求(学院查询-指定)
4. HTTP请求(学院查询-所有)->定时器->Synchronizing Timer
5. 测试计划->监听器->察看结果树
6.函数助手
6.1 为什么使用函数助手
可以被认为是特殊值,可以填充测试树任何采集器或其他元素的字段.
6.2 常用的函数助手
了解:
1. __CSVRead
2. __counter
3. __Random
4. __time
掌握:
5. __setProperty
6. __property
6.3 _setproperty_property
setproperty作用: 用于把指定数据设定成Jmeter属性,可以理解为是把指定数据设置成全局变量
property: 获取Jmeter属性值
1. 需求
线程组A访问数据库dep_name,线程B根据获取的标题进行百度
2. 实现
1、创建线程A, 创建http请求访问传智播客官网
2、使用正则表达式解析器或xpath解析器解析出标题
3、使用———setproperty把标题设置为变量
4、使用BeanShell Sampler声明全局变量
4、创建线程B,创建http请求
5、使用————property获取全局的变量
6、创建查看结果树
3.小结
set_property把第一个请求响应的数据声明为属性,beanshell sampler 把属性提升为全局的变量,
第二个线程组使用property获取声明为全局的变量值,从而达到第一个线程组的结果作为第二个线程组的参数的传递.
https://www.baidu.com/s?wd=itcast
def add_func(num, num2):
pass
http://www.itcast.cn/
a = b
c = a
c