一、JMeter的介绍

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

二、JMeter的下载

JMeter的下载地址为:https://jmeter.apache.org/download_jmeter.cgi

 

 

 

下载后将压缩包放在安装目录解压,解压后的文件目录如下:

三、JMeter的运行方式

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

1、.war

2、.jar 启动方式: java -jar .war java -jar .jar

img

四、JMeter的配置文件

 

 

 五、JMeter的基本应用

在一个测试计划里面可以有很多的线程组

 

 

 

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

1、Text/xml

以获取手机号码归属地为例,接口协议如下:

1)在jmeter中创建如下图的线程组和http请求,并填写请求方法和请求地址。

2)执行下图操作,在Test Plan右键选择添加【查看结果树】

3)通过点击下图中的绿色箭头,执行线程组,在【查看结果数】中查看测试结果,如下图所示:

 

 

 

2、表单格式

以获取手机号码归属地为例,接口协议如下:

1)在jmeter中添加如下图的HTTP信息头管理器,并填写请求头。

2)在jmeter的表单方式获取手机号码线程组中添加http请求,并填写请求方法、请求地址和请求参数。

3)执行2)中的http请求,在查看结果树中查看测试结果,如下图所示:

3、xml格式

以获取手机号码归属地为例,接口协议如下:

1)在jmeter中添加如下图的HTTP信息头管理器,并填写请求头。

2)在jmeter的xml格式获取手机号码归属地线程组中添加http请求,并填写请求方法、请求地址和消息体数据。

3)执行2)中的http请求,在查看结果树中查看测试结果,如下图所示:

4、json格式

以风暴测试平台登录为例,通过浏览器的Network抓包得到以下接口数据

 

 

 

 

 

1)在jmeter中添加如下图的HTTP信息头管理器,并填写请求头。

2)在jmeter的登录线程组中添加http请求,并填写请求方法、请求地址和消息体数据。

3)执行2)中的http请求,在查看结果树中查看测试结果,如下图所示:

六、JMeter实战(以风暴测试平台为例)

创建以下目录结构:

1、HTTP信息头管理器

注释:jmeter中的变量是整个线程组的,所以先调用变量再定义变量不会出错。

2、HTTP请求默认值

1)通过如下图步骤,在测试平台线程组下添加HTTP请求默认值

2)HTTP请求默认值中填写请求的ip地址和端口号,以及内容编码,之后可以一劳永逸,在所有http请求的请求地址中的IP和端口号可以省略不写,只需在一个地方维护。

注释:HTTP信息头管理器与HTTP请求默认值属于全局变量,所以放在线程组下,http请求上。

3、登录

1)登录的http请求如下图所示:

①如下图所示在通过添加【后置处理器】的【JSON提取器】,创建名为“获取Token”的JSON提取器;因为token是一个动态参数,所以要在JSON提取器中定义token。

②在JSON提取器中填写以下信息:

2)验证用户昵称

3)验证手机号码

4)验证用户状态

4、首页

5、产品管理

1)添加产品

①JSON提取器

如下图所示,因为产品id是变化的,所以产品id是一个动态参数,因此通过json提取器定义这个动态参数。

 

 

 

②验证新增产品名称

③验证产品id

2)查询产品

①默认查询

a.http请求

b.响应断言

②模糊查询

a.http请求

b.JSON断言

③精确查询

a.http请求

b.JSON断言

3)修改产品

①修改产品名称

a.http请求

b.JSON断言

②修改产品类型

a.http请求

b.JSON断言

③修改产品版本

a.http请求

b.JSON断言

④修改产品负责人

a.http请求

b.JSON断言

⑤修改产品描述

a.http请求

b.JSON断言

4)删除产品

①删除产品-状态码

a.http请求

b.响应断言(通过状态码验证)

②删除产品-删除后查询产品为空

a.http请求

b.响应断言(通过响应文本验证)

jmeter中如何处理动态参数?

以登录为例,登录请求返回的数据token就是一个动态参数,在登录测试用例下添加"后置处理器"的"JSON提取器",在请求头中添加Authorization,使用${token}进行动态参数的调用。