Jmeter做数据构造步骤详解
- 引入
- 什么是数据构造
- 数据构造的方式
- 数据构造的意义
- 一、JDBC请求执行SQL语句构造数据
- 01 环境准备:添加Jmeter插件
- 02 使用步骤
- 二、HTTP请求调用接口构造数据
- 01 使用步骤
- 完善脚本
- 01 运用函数
- 02 使用逻辑控制器和定时器
- 03 添加响应断言自动判断构造是否成功
- 04 参数化和关联的使用
- 运行线程组生成数据
- 总结一下
引入
什么是数据构造
数据构造简单来说就是造数据,需求需要造数据进行演示,开发需要造数据验证自己写的代码能够正常运行,测试需要造数据执行测试用例。团队中的每一个成员,需要频繁造数据来满足日常工作的需要。
数据构造的方式
几种数据构造方式的关系
1、界面新增和UI自动化其实是调用了后端接口
2、接口工具和接口自动化绕过前端进行造数,一定程度上提高了效率,本质是代码执行了相应的SQL语句
3、数据构造平台看代码逻辑走的是SQL、界面操作还是接口
4、补充一种构造方式,生产环境导入
数据构造的意义
除了需要性外,还有必要性
忘记从哪看到的报告数据,测试数据构造时间约占功能测试总体时间的35%
本次分享的目的是讲清楚如何用Jmeter做数据脚本,综合SQL语句和调用接口的方式构造数据,让测试数据构造前置化、共建化,为大家提供便利
注意:运用Jmeter做数据构造
这里我们把Jmeter不再当成性能测试工具,而是接口测试工具,综合运用Jmeter各种元件达到构造所需数据的目的
一、JDBC请求执行SQL语句构造数据
01 环境准备:添加Jmeter插件
Jmeter添加插件的两种方式:
1、全局式:jar包放入lib/ext文件目录下
查看mysql版本和下载对应版本的jdbc驱动文件
网上建议5.7版本用5.1版本和8.0版本
驱动下载地址:https://downloads.mysql.com/archives/c-j/,这里下载的是平台独立的版本
下载完成后,解压,将解压出来的jar文件放在lib/ext文件目录下,关闭Jmeter重新启动完成
2、当前测试计划式:测试计划下添加jar包
02 使用步骤
1、添加测试计划
名称:xx需求名称或者xx项目名称
2、添加JDBC常量配置
目录 :测试计划——配置元件——JDBC Connection Configuration
名称:A数据库
Variable Name for created pool:连接池名字,JDBC Request中Variable Name Bound to Pool要和它保持一致
数据库url:jdbc数据库连接地址
示例:jdbc:mysql://xx.xx.xx.xx:3306/database_A?userSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
JDBC Driver:com.mysql.jdbc.Driver
Username:数据库连接用户名
Password:数据库连接用户密码
注意:这里建立了两个JDBC常量配置,因为测试的场景就是要涉及到两个库
3、添加线程组
目录:测试计划——线程(用户)——线程组
名称:xx场景前置条件:xx
线程数:1
启动时间:1
循环次数:1
4、添加JDBC请求取样器
目录 :线程组——取样器——JDBC Request
名称:xx场景前置条件:xx
Variable Name Bound to Pool:绑定连接池名字,要和JDBC Connection Configuration中Variable Name for created pool保持一致
SQL Query :语句类型,想要批量执行的话选择Callable Statement Query
Query:SQL语句
Parameter values :用于替换SQL语句中占位符?,用逗号分隔
Parameter types:上面占位符?代表的参数类型
Variable names:查询sql返回结果数据储存的变量名,用逗号分隔,返回几列就有几个变量名
5、添加查看结果树
目录:线程组——监听器——查看结果树
二、HTTP请求调用接口构造数据
01 使用步骤
(一到三、五)同上
(四)添加HTTP取样器
目录:线程组——取样器——HTTP请求
web服务器和HTTP请求:接口测试内容,这里不具体展开了
完善脚本
01 运用函数
位置:菜单工具栏——tools——函数助手对话框
拷贝并粘贴函数字符串:拷贝出来可以直接使用
例子:
${__Random(1,5,num) 1~5的随机数
${__timeShift(yyyy-MM-dd HH:mm:ss,)} 时间的格式化
${__time(,)} 时间戳函数
02 使用逻辑控制器和定时器
有些场景需要用到逻辑控制器,比如这里我用到循环控制器不断的造数据
目录:线程组——逻辑控制器——循环控制器
模拟B系统每隔30秒调用一次本系统接口产生xx数据,后台每分钟统计一次,判断指标是否超限
目录:循环控制器——定时器——固定定时器
03 添加响应断言自动判断构造是否成功
目录:HTTP请求/JDBC请求——断言——响应断言
04 参数化和关联的使用
参数化
常用的参数化元件:
(1)CSV数据文件设置
目录:测试计划——配置元件——数据文件设置
用法:前面文章讲了,这里不再重复
(2)用户定义的变量
目录:测试计划
用法:添加用户定义的变量,引用的时候和csv变量一样,用${param_name}
(3)用户参数
目录:线程组——前置处理器——用户参数
用法:添加用户参数,引用的时候和csv变量一样,用${param_name}
添加“测试计划——取样器——调试取样器”,可查看所有Jmeter变量
关联
常用的三个:JSON提取器、正则表达式提取器、BeanShell 后置处理程序
运行线程组生成数据
选择要生成测试数据的线程组,右键,运行
总结一下
1、修改测试计划名称为项目名称或者需求名称
2、添加线程组,线程组名称为场景名称
3、添加数据库连接配置:JDBC常量配置,有多少数据库就要有多少个JDBC常量配置
4、理清该场景所需数据需要调用哪些接口、执行哪些SQL,一步一步添加HTTP取样器或者JDBC请求构造数据
5、添加控制器和定时器让脚本运行逻辑更加符合实际使用情况
6、添加函数、参数化元件、前置处理器、后置处理器让脚本可以多次复用,更灵活
7、添加查看结果树和响应断言调试脚本,查看构造结果
8、运行线程组成功后,拿到构造数据进行测试