压测工具Jmeter除了可以做性能测试,还可以做接口测试。当接口测试趋向于自动化方向时,就可以使用很典型的接口自动化测试框架Jmeter+Ant+Jenkins。
本篇将讲解如何快速使用Jmeter来进行接口测试。
简介
Jmeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
它可以用于测试静态和动态资源,例如静态文件、Java小服务程序、CGI脚本、Java对象、数据库、FTP服务器等等。
Jmeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。Jmeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,Jmeter允许使用正则表达式创建断言。
官网地址:
安装
官网下载地址:
下载解压包版本即可。
注意:需要Java8+以上的支持。
关于JDK的安装与配置,可点击Java-安装文章进行查阅。
例如本次讲解系统所带的JDK版本为0_26
例如下载apache-jmeter-zip
下载完成后,解压到自己指定的路径里即可。
例如:
路径为C:apache-jmeter-1
环境变量
Windows环境
【我的电脑】右键--->属性--->高级系统设置--->环境变量--->系统变量
编辑CLASSPATH的变量,值为
编辑PATH新增值为%JMETER_HOME%in
保存后,以管理员身份打开命令行,输入jmeter-v
环境变量配置成功
Mac环境
打开终端,编辑.bash_profile文件。
添加以下配置:
export JMETER_HOME=/Users/wangmeng/apache-jmeter-5.4.1
export PATH=${PATH}:$JMETER_HOME/bin
export CLASSPATH=:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar
保存退出,使.bash_profile文件内容生效。
重新打开终端,输入jmeter-v
环境变量配置成功
启动程序
打开命令行或终端输入jmeter,即可启动程序。
Windows系统,双击jmeter.bat即可。
Mac系统,双击jmeter即可。
操作示例
本篇模拟接口请求链接使用moco生成。
关于moco的部署与使用等,可点击moco系列章节进行查阅。
添加线程组
【测试计划】右键--->Add--->Threads(Users)--->ThreadGroup
设置线程数与循环次数
本篇为接口测试讲解,模拟一个用户进行一次接口请求,所以用户数和循环次数均为1即可。
Get请求
如所示:先使用Postman,访问此接口。
GET请求,2个参数username、password
返回数据为“操作成功”
添加HTTP请求
【线程组】右键--->Add--->Sampler--->HTTPRequest
填写相关配置信息。
方式
接口名称:demo01协议:http服务器名称或IP:localhost端口号:8083方法:GET路径:/getdemo内容编码:utf-8Parameters:填写对应的参数名与参数值
方式
接口名称:demo01协议:http服务器名称或IP:localhost端口号:8083方法:GET路径:/getdemo?username=admin&password=123456内容编码:utf-8
添加响应断言
【demo01】右键--->Add--->Assertions--->ResponseAssertion
输入断言匹配的内容。
根据示例接口,返回的文本内容若等于“操作成功”,则就算是Pass
添加断言结果
【demo01】右键--->Add--->Listener--->AssertionResults
添加查看结果树
【demo01】右键--->Add--->Listener--->ViewResultsTree
运行脚本
运行方式【线程组】右键--->Start
运行方式点击运行按钮即可。
运行结果
查看断言结果,验证通过,Pass
查看结果树,可查看请求与响应数据,验证通过,Pass
Post请求
如所示:先使用Postman,访问此接口。
POST请求,2个参数username、password
返回数据为“操作成功”
添加HTTP请求
【线程组】右键--->Add--->Sampler--->HTTPRequest
填写相关配置信息。
接口名称:demo02协议:http服务器名称或IP:localhost端口号:8083方法:POST路径:/postdemo内容编码:utf-8Parameters:填写对应的参数名与参数值
添加响应断言
【demo02】右键--->Add--->Assertions--->ResponseAssertion
输入断言匹配的内容。
根据示例接口,返回的文本内容若等于“操作成功”,则就算是Pass
添加断言结果
【demo02】右键--->Add--->Listener--->AssertionResults
添加查看结果树
【demo02】右键--->Add--->Listener--->ViewResultsTree
运行脚本
运行方式【线程组】右键--->Start
运行方式点击运行按钮即可。
运行结果
查看断言结果,验证通过,Pass
查看结果树,可查看请求与响应数据,验证通过,Pass
依赖请求
有两个接口,接口1执行后返回的数据里有接口2需要用到的请求参数,则执行接口2时,要先执行接口1获取返回的指定数据。
如所示:先使用Postman,访问此接口。
GET请求,3个参数aaa、bbb、ccc
返回json数据为:
{
'mystatus':'操作成功',
}
接口2请求地址:http://localhost:8083/demo2
如所示:先使用Postman,访问此接口。
POST请求,请求头有2个参数Content-Type、mytoken
返回json数据为:
{
'mystatus':'操作成功',
'mystatusid':'1'
}
发送的json串。
添加用户参数
接口1和接口2都有参数ccc,且值都是78可以设置为公共用户变量,方便统一提取。
【线程组】右键--->Add--->PreProcessors--->UserParameters
填写参数ccc与参数值789
添加HTTP请求
【线程组】右键--->Add--->Sampler--->HTTPRequest
填写相关配置信息。
接口名称:demo03-1协议:http服务器名称或IP:localhost端口号:8083方法:GET路径:/demo内容编码:utf-8Parameters:填写对应的参数名与参数值,${ccc}为引用用户参数ccc的值。
添加响应断言
【demo03-1】右键--->Add--->Assertions--->ResponseAssertion
输入断言匹配的内容。
根据示例接口返回的文本内容若包括所指定的“操作成功”,则就算是Pass
添加断言结果
【demo03-1】右键--->Add--->Listener--->AssertionResults
添加查看结果树
【demo03-1】右键--->Add--->Listener--->ViewResultsTree
添加正则表达式提取器
用于提取接口1返回的指定数据,接口2会调用此数据。
【demo03-1】右键--->Add--->PostProcessors--->RegularExpressionExtractor
填写相关正则表达式信息。
引用名称:其他地方引用时的变量名称,这里定义为my_token,引用方法:${引用名称}正则表达式:数据提取器,()括号里为要获取的值。'mytoken':'(相当于LR的左边界,)'相当于LR的右边界。而括号里.*?为正则表达式,'mytoken':'(.*?)'匹配最短的,以'mytoken':'开始,以'结束的字符串。模板:用于从找到的匹配项创建字符串的模板。这是一个带有特殊元素的任意字符串,用于引用正则表达式中的组。引用组的语法是:11引用组22引用组等等。00引用整个表达式匹配的内容。匹配数字:正则表达式匹配数据的所有结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。-1表示全部,0随机,1第一个,2第二个,以此类推。若只要获取到匹配的第一个值,则填写1缺省值:匹配失败时的默认值。
添加调试后处理器
方便在调试脚本时实时查看是否正确的提取到了所要的信息。
【demo03-1】右键--->Add--->PostProcessors--->DebugPostProcessor
添加HTTP头管理器
接口2有请求头信息要进行设置,所以要添加HTTP头管理器。
【线程组】右键--->Add--->ConfigElement--->HTTPHeaderManager
填写相关配置信息。
${my_token}为引用正则表达式my_token提取接口1返回的指定值。
添加HTTP请求
【线程组】右键--->Add--->Sampler--->HTTPRequest
填写相关配置信息。
接口名称:demo03-2协议:http服务器名称或IP:localhost端口号:8083方法:POST路径:/demo2内容编码:utf-8BodyData:填写对应的键值,${ccc}为引用用户参数ccc的值。
{
'id':'1',
'username':'test',
'password':'123456',
'ccc':'${ccc}'
}
添加响应断言
【demo03-2】右键--->Add--->Assertions--->ResponseAssertion
输入断言匹配的内容。
根据示例接口返回的文本内容若包括所指定的“操作成功”,则就算是Pass
添加断言结果
【demo03-2】右键--->Add--->Listener--->AssertionResults
添加查看结果树
【demo03-2】右键--->Add--->Listener--->ViewResultsTree
运行脚本
运行方式【线程组】右键--->Start
运行方式点击运行按钮即可。
运行结果
接口查看断言结果,验证通过,Pass
接口查看结果树,可查看请求与响应数据,验证通过,Pass
接口查看结果树,正则表达式所提取接口1的返回数据
接口查看断言结果,验证通过,Pass
文章为作者独立观点,不代表观点