wangwt123

接口(API)测试(四)-JMeter工具

一、JMeter的简介

JMeter是开源软件,100%的使用Java语言来进行开发的,支持主流的协议(HTTP,HTTPS,WebService,gRPC)的API测试和性能测试,是一款非常优秀的测试工具软件。

二、JMeter的安装与基本使用

使用JMeter前首先需要搭建好Java的环境。Java环境的搭建在移动测试-Appium移动自动化测试里已经阐述了。

步骤如下:先将下载好的JMeter进行解压。

step1:解压后的JMeter的安装目录如下:

step2:打开lib文件夹,我们会看到以.jar结尾的文件。

java语言编写的程序,程序要运行,对外运行的程序有两种方式(基本一样):

1、.war  启动方式:java -jar [以.war为后缀的文件]

2、.jar    启动方式:java -jar [以.jar为后缀的文件]

step3:打开bin文件夹,会看到如下内容:

jmeter.properties:是配置文件

jmeter.sh:mac 和Linux以及Unix系统

jmeter.bat:windows系统

step4:右击打开“jmeter.bat”。

会出现如下画面:

step5:设置界面背景颜色和语言:

设置界面背景颜色:Option→Look and Feel→Windows

设置语言:Option→Choose Language→Chinese(simplified)

会出现如下内容:

step6:在测试计划里添加线程组:

在一个测试计划里面可以有很多的线程组,像红框里的都是线程组。

线程组可以等价为PostMan里面的Collections,也就是集合,在一个线程组里面可以有很多的API测试用例。

以上图“获取手机号归属地”为例子,在该集合里,添加API测试用例。

step7:然后给测试用例命名,添加”简单控制器“

step8:然后在JMeter测试用例里添加”http请求“:

三、JMeter常用的组件

1、HTTP信息头管理器

给JMeter总线程里添加”HTTP信息头管理器“的步骤为:

如果是互联网的产品,HTTP信息头管理器里必须需要带:1)cookie  2)Referer  3)user-agent  4)content-type

如果是自己公司的产品,HTTP信息头管理器里必须需要带:1)content-type  2)cookie

Content-Type:指的是客户端通过什么样的数据格式向服务端发送请求(XML、表单、JSON)

a、Text/xml,在JMeter”消息体数据“里添加。

b、表单数据格式,在JMeter”参数“里添加。

c、JSON格式,也在JMeter”消息体数据“里添加,同时注意在添加汉字时,注意编码格式的设置。

2、HTTP Cookie管理器

给JMeter总线程里添加”HTTP Cookie管理器“的步骤为:

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。

3、察看结果树

给JMeter总线程里添加”察看结果树的步骤为:

在结果树里可以选择查看的方式以及响应数据等详细内容:

4、JSON提取器/正则表达式提取器

JSON提取器/正则表达式提取器,主要是进行动态参数的处理。

以风暴平台为例:在”察看结果树“里看”登录“页面的响应数据:

4-1、JSON提取器

给JMeter总线程里添加”JSON提取器“的步骤为:

使用”JSON提取器“来处理动态参数token步骤:

在察看结果树观察"登录"页面的响应数据后,此时在新建JSON提取器文件里,输入如下内容:

4-2、正则表达式提取器

给JMeter总线程里添加”正则表达式提取器“的步骤为:

使用”正则表达式提取器“来处理动态参数token步骤:

step1:在察看结果树观察"登录"页面的响应数据后,将响应数据复制到在线正则表达式里:

https://c.runoob.com/front-end/854/?optionGlobl=global,通过使用正则的各种运算符,来提取token:

step2:此时在新建正则表达式提取器文件里,输入如下内容:

总述:通过以上两种方式获取动态参数后,为了实现参数的上下联动,也为了方便:

可以把每个HTTP信息头管理器,Authorization:JWT ${token}添加到总线程里面,执行总线程,就能够实现动态参数的上下关联。

5、JSON断言以及响应断言

断言:相当于设置一个检查点,正常的接口测试都需要对测试的结果进行检查,判断对错,有结果的测试才是有意义,这时就需要用到断言。

在进行断言之前,先在JMeter里添加”断言结果“文件,这样方便查看断言结果。

给JMeter总线程里添加”断言结果“的步骤为:

5-1、JSON断言

应用场景:一般返回的数据是JSON格式的使用JSON断言。

给JMeter总线程里添加”JSON断言“的步骤为:

以添加产品为例:

step1:在察看结果树观察"添加产品"页面的响应数据:

step2:此时在新建JSON断言文件里,输入如下内容:

5-2、响应断言

应用场景:一般返回的数据是不是JSON格式是xml,删除等样式的使用响应断言。

给JMeter总线程里添加”响应断言“的步骤为:

而响应断言最常见的是:响应文本和响应代码

5-2-1、响应文本

响应文本:服务器响应文本,就是响应数据(body)里面的所有内容进行匹配。

5-2-2、响应代码

响应代码:就是响应返回的状态码,比如,20X,30X,40X,50X等;

6、HTTP请求默认值

给JMeter总线程里添加”HTTP请求默认值“的步骤为:

在整个风暴平台的API测试中,会发现有许多一样URL地址和内容编码等,此时将其统一放入HTTP请求默认值文件里:

这里体现了数据驱动思想:把公共的数据分离出来维护,这样的好处当修改了时候,只需要修改一次。

7、用户定义的变量(分离的是公共的数据)

以登录页面为例:登录页面的用户名和密码属于公共的数据,将其单独拿出来,也方便后续的维护。

给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里填写的邮箱,会收到测试报告如下:

posted on 2022-07-25 19:34  DOUBLE快乐  阅读(369)  评论(0编辑  收藏  举报

导航