接口(API)测试(四)-JMeter工具
一、JMeter的简介
JMeter是开源软件,100%的使用Java语言来进行开发的,支持主流的协议(HTTP,HTTPS,WebService,gRPC)的API测试和性能测试,是一款非常优秀的测试工具软件。
二、JMeter的安装与基本使用
使用JMeter前首先需要搭建好Java的环境。Java环境的搭建在移动测试-Appium移动自动化测试里已经阐述了。
步骤如下:先将下载好的JMeter进行解压。
step1:解压后的JMeter的安装目录如下:
step2:打开lib文件夹,我们会看到以.jar结尾的文件。
jmeter.properties:是配置文件
jmeter.sh:mac 和Linux以及Unix系统
会出现如下画面:
step5:设置界面背景颜色和语言:
设置界面背景颜色:Option→Look and Feel→Windows
设置语言:Option→Choose Language→Chinese(simplified)
会出现如下内容:
step6:在测试计划里添加线程组:
在一个测试计划里面可以有很多的线程组,像红框里的都是线程组。
线程组可以等价为PostMan里面的Collections,也就是集合,在一个线程组里面可以有很多的API测试用例。
以上图“获取手机号归属地”为例子,在该集合里,添加API测试用例。
step7:然后给测试用例命名,添加”简单控制器“
step8:然后在JMeter测试用例里添加”http请求“:
三、JMeter常用的组件
给JMeter总线程里添加”HTTP信息头管理器“的步骤为:
如果是互联网的产品,HTTP信息头管理器里必须需要带:1)cookie 2)Referer 3)user-agent 4)content-type
如果是自己公司的产品,HTTP信息头管理器里必须需要带:
a、Text/xml,在JMeter”消息体数据“里添加。
b、表单数据格式,在JMeter”参数“里添加。
c、JSON格式,也在JMeter”消息体数据“里添加,同时注意在添加汉字时,注意编码格式的设置。
HTTP COOKIE管理器(SESSION会话对象→代码级别):
a、所有请求之间的COOKIE是共享的;
b、由于是共享的,不可能建立多次连接,所有请求之间的COOKIE共享的同时,底层的TCP连接只建立一次连接。
对于SESSION会话对象需要在JMeter里设置Http Cookie管理器,否则会出现重定向。
以51CTO学堂为例:通过输入账户和密码,用network去扑获登录和首页信息
如果不设置Http Cookie管理器,会跳转到51CTO学堂的登录界面:
设置Http Cookie管理器,就会进入51CTO学堂的首页界面:
登录成功后的界面内容:
JMeter后台的响应内容:
进行比对,内容一致,说明设置Http Cookie管理器成功!
登录请求成功响应后,HTTP Cookie 管理器会自动存储登录接口返回的Cookie,后面的请求也能自动调用该Cookie。
在结果树里可以选择查看的方式以及响应数据等详细内容:
step2:此时在新建正则表达式提取器文件里,输入如下内容:
step2:此时在新建JSON断言文件里,输入如下内容:
5-2-2、响应代码
响应代码:就是响应返回的状态码,比如,20X,30X,40X,50X等;
这里体现了数据驱动思想:把公共的数据分离出来维护,这样的好处当修改了时候,只需要修改一次。
给JMeter总线程里添加”用户定义的变量“的步骤为:
在添加的”用户定义的变量“文件里,输入如下内容:
返回登录页面,进行修改:
此时,用户定义的变量成功!
四、JMeter的测试报告
JMeter生成测试报告使用的是Ant(Maven)构建工具来生成HTML的测试报告。
step1:解压并安装Ant,假设存放路径为D:\test\tools\apache-ant\apache-ant-1.9.14
step2:配置Path变量:将Ant文件下的bin目录放到path环境里
step3:打开JMeter,找到JMeter里的“测试计划”的文件的路径
step4:将其复制到D:\test\tools\apache-jmeter-5.4.1\tests\script的文件里,并将其命名为英文。
ant执行的条件是需要有build.xml的文件的,build.xml文件里面主要编写三个内容:
1、定义了被执行的测试脚本
2、定义了测试报告的目录
3、定义了自动发送邮件
step5:打开build.xml文件,更改JMeter的存放路径和要执行的文件
step6:将所有设置好后,生成测试报告,通过控制台的操作方式来生成HTML的测试报告。
输入如下命令:
step7:打开我们在build.xml里填写的邮箱,会收到测试报告如下: