1安装与配置
1.jdk下载
下载地址:https://www.oracle.com/java/technologies/downloads/#jdk18-windows(压缩包中会给)
2.jmeter下载
Apache JMeter - Download Apache JMeter(压缩包中有)
3.操作教学
打开软件后新建计划(新用户不用)
1.添加线程组
线程组——选择测试计划,右键-->添加-->线程-->线程组
补充
(1)线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。
(2)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。
(3)循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
2.HTTP请求——选择线程组:右键-->添加-->取样器-->HTTP请求
作用:录入接口请求参数信息
(1)请求名称,可不改
(2)Web服务器信息,网络协议(http/https)、域名或IP、端口号,可自行修改
(3)接口请求:请求方法(post/get)、请求路径、编码格式(utf-8),可自行修改
(4)参数传递:消息体数据存储JSON信息
http请求填写以这个为例
注意请求URL 、请求方法、请求负载 与下面类容相对应(名称自定义)
这里用户名密码是{"username": "NMG0001", "password": "123456", "nodeCode": "ZHYZ_BOSS"}
3.HTTP信息头管理器——选择线程组:右键-->添加-->配置元件-->HTTP信息头管理器
作用:可以存储请求头里面的信息
4.查看结果——选择线程组:右键-->添加-->监听器-->查看结果树
作用:查看接口运行结果
运行后
5.Http请求默认值——选择测试计划:
右键-->添加-->配置元件-->HTTP请求默认值
可以将后续线程或者Http请求公共的内容提取出来共同使用
比如协议和服务器ip等
原本的Http请求就可以改为
加了http请求默认值之后,在单个http请求里面还填写了同样的数据,那么以哪个为准就近原则——就近原则!
6.Beanshell后置处理器——选择线程组:
右键-->添加-->后置处理器-->Beanshell后置处理器
Beanshell后置处理器处理接口加入prev.setDataEncoding("utf-8") 返回中文的解析
7.接口与线程之间的传参 需求:
登录接口的返回token传给查询列表接口
①json提取器
(1)添加json提取器:右键http请求-》添加-》后置处理器-》json提取器,JSON提取公式:$..字段名
我是取的token(Authorization)
添加调试后置处理器便于查看
②正则表达式 (1)添加正则表达式:右键http请求-》添加-》后置处理器-》正则表达式提取器
参数说明: 引用名称:下一个请求要引用的参数名称,如token ,则可用${token }引用。
正则表达式:():要提取的部分。
.:匹配任何字符串。
*:零次一次或多次。
?:在找到第一个匹配项后停止
模板:用$$引用起来,如果表达式中有多个表达式,用$1$$2$...,如"data":"(.*?)","id":"(.*?)", 模板为: $1$$2$
匹配数字:0代表随机取值,-1代表全部取值,一般默认0
缺省值:选中的情况下,若没有取得到值,给出默认值。
账号从文件表格中获取
8.参数化
(1)CSV Data Set Config方式
①新建CSV格式文件或者txt文件
我这用的txt
②CSV——选择测试计划,
右键-->添加-->元件-->CSV data Sat config
使用参数化变量:${变量名}
(3)数据库提取数据
①MySQL连接 拷贝解压后.jar驱动文件到JMeter安装目录“lib”文件夹下
Jmeter中建立“JDBC Connection Configuation":配置元件 --JDBC Connection Configuation
①MySQL连接
参数说明:
a) Variable Name: 数据库连接池的名称,可以有多个jdbc connection configuration,每个可以起个不同的名称,与JDBC Request中Variable Name必须保持一致
b) Database URL: 数据库url,jdbc:mysql://主机ip或者机器名称:mysql监听的端口号/数据库名称, 如: jdbc:mysql://localhost:3306/test
c) JDBC Driver class: com.mysql.jdbc.Driver
d) username:数据库登录的用户名
e) passwrod:数据库登录的密码
JDBC Request配置
参数说明:
a) Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致
b) Parameter values:参数值
c) Parameter types:参数类型
d) Variable names:保存sql语句返回结果的变量名
e) Result variable name:创建一个对象变量,保存所有返回的结果
f) Query timeout:查询超时时间 g)
Handle result set:定义如何处理由callable statements语句返回的结果
②JDBC Request配置
参数说明: SQL Query:输入sql语句;多条sql语句必须用“;”
Query Type:
Select Statement:仅支持测试select语句,并且一次只能测试一条
Callable Statement:只要语法正确,任何语句,再多的条数都能支持
如果是同时执行多条语句:JDBC Connection Configuration 中Database URL:配置中加上?allowMultiQueries=true 如:jdbc:mysql://localhost:3306/test?allowMultiQueries=true
③对提取的数据进行遍历
ForEach控制器 逻辑控制器->ForEach控制器
参数说明: Input Variable Prefix:输入变量前缀,本例中为:order_sn (与JDBC Requset中返回结果的Variable names:变量名一致)
Output variable name:输出变量名称,提供给其它控件引用 ,可自由命名,调用时使用该参数 Start index for loop(exclusive):循环开始的索引(默认从0开始,如果填写是2,实际是从2+1个开始执行)
End index for loop(inclusive):循环结束的索引 Add”_”before number:输入变量名称中是否使用“_”进行间隔。
查看结果
也可以加上 聚合报告便于观察
1.聚合报告
聚合报告中可以查看接口响应时间的情况,以及接口脚本执行过程中的错误率等情况,聚合报告中的时间单位为毫秒 响应时间主要参考平均值;测试目标对接口要求较高时参考90%
2.生成HTML格式的测试报告
dos窗口命令行方式 运行方法: ①保证cmd在Jmeter脚本所在目录打开 ②jmeter -n -t 脚本路径和名称 -l 日志名.txt -e -o 报告文件路径和目录名称
如果出现这个问题
就将
删掉