jmeter常用操作
-
jmeter文件
-
jmeter数据库驱动配置
- 需要下载mysql驱动:mysql-connector-java-8.0.11.jar,(注意要与数据库mysql版本对应)
- 解压,把mysql-connector-java-8.0.11.jar包放到jmeter,bin目录下
- 创建测试计划,选择mysql数据库驱动,如图
- 添加线程组,根据业务场景添加不同线程组,需要先添加JDBC Connection Configuration,在配置元件中,添加驱动下载数据库驱动插件放到lib\ext目录下
- 暂时无法在文档外展示此内容
- 添加后重启查看如图:
- JDBC Connection Configuration中配置内容如图:
- 添加JDBC Request
- 配置JDBC Request
- 添加监听器,注意:执行sql语句时报错时(这是兼容性,如果不报错可以不加下面这句)
- 需要在JDBC Connection Configuration,中的Database URL,数据库连接后增加?serverTimezone=UTC
- 解决查询字段不显示问题,添加“?useUnicode=true&characterEncoding=UTF-8”
-
压测配置
- 添加插件到lib\ext目录下(阶梯性负载增压)暂时无法在文档外展示此内容
- 添加测试计划,添加线程组jp@gc - Stepping Thread Group
- 线程组配置说明
- 增加监听器
- 常见问题
- 压测上不去,接口报Address already in use:connect
- 需要执行机regedit中添加注册表项MaxUserPort
- 打开注册表:win+r 输入regedit
- 进入注册表,路径为:\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
- 新建DWORD值,(十进制)设置为30秒。名称:TcpTimedWaitDe,值:30
- 新建DWORD值,(十进制)最大连接数65534。名称:MaxUserPort,值:65534
- 然后重启电脑
-
参数提取及使用方式
- 使用用户定义变量
- 该方式为固定传参,统一将变量放到用户定义变量中好进行维护,在登录或者固定操作某条数据时
- 添加,线程组或者计划上(作用域不同),配置元件,用户自定义变量
- 使用用户定义变量
- 添加变量名称和变量值,变量名称自定义,在之后接口通过${变量名}进行调用变量创建
- 变量使用
- 正则提取接口返回值
- 正则提取接口返回值存入到变量,之后的接口调用使用该变量
- 添加,在取样器HTTP请求上进行右键添加后置处理器,选择正则表达式提取器
- 添加提取器名称(随意,自己看明白就行),选择Main sample only,选择要提取的哪里的内容,是响应体还是响应信息头里的
- 例如登录要提取响应信息头的token,就选择信息头,引用名称(变量名称,自己定义)
- 响应信息头
- 响应体
- 正则表达式:token=(.+?);
- (.+?)这个代表我要获取的值,前后是我要获取的值在哪个位置
- 举例:要取响应信息头里的token值,我们查看响应数据.token=a413e2ec2ad0413483c56f550ff03945;
- 我们想要a413e2ec2ad0413483c56f550ff03945这个,它的前面显示为token= 后面显示为;
- 我们要获取它俩中间的token值,正则就写成:token=(.+?);
- 模板默认填写:$1$
- 多个返回值时匹配哪一个:1(0是随机)
- 缺省值(如果没有传什么,可以是null可以选择使用空为默认值,随意)
- 使用依然是${引用名称}
- json提取器
- 添加
- 添加,同样变量名、json提取路径、匹配第几个、缺省值
- 例如jsonp提取路径:.result[0].productionTeam[0].orderDemandId
- 初始路径下第一个result下的第一个productionTeam下的orderDemandId值
- .当前路径的意思
- 使用方法一样${}
- jsonpath可以通过察看结果树里,返回值显示方式json path tester进行提取测试, 建议使用正则提取,比较方便
-
断言使用
- json断言
- 主要是json提取表达式填写内容要正确,要做对比的内容用[]括起来
- Expected value 是填写断言内容,要注意冒号之间不要有空格
- json断言
-
jmeter下载上传接口调用方式
- 下载文件接口
- 提取返回值
- 再次调用
- 通过beanshell取样器保存文件
- beanshell代码
import java.io.*; //获取上个请求的返回数据 byte[] result = prev.getResponseData(); //要下载到什么地方 String file_name = "D:\\file\\1.xlsx"; File file = new File(file_name); FileOutputStream out = new FileOutputStream(file); out.write(result); out.close(); |
- 修改下载的excel文件
import java.io.BufferedReader; import java.io.InputStreamReader; // 1. 命令里的路径改成自己脚本的路径 String command = "cmd /c python D://pythonProject//pythonProject//pytestone//updatefile.py "; String var; Runtime rt = Runtime.getRuntime(); Process pr = rt.exec(command); pr.waitFor(); BufferedReader b = new BufferedReader(new InputStreamReader(pr.getInputStream())); String line = ""; StringBuilder response = new StringBuilder(); while ((line = b.readLine()) != null) { response.append(line); } String response_data = response.toString(); System.out.println(response_data); b.close(); var = response.toString(); |
-
beanshell转换数据类型