接口测试相关知识(十)用ant生成测试报告和JMeter的组件介绍

1、利用ant生成测试报告

1.1什么是Ant?

首先,Ant翻译过来是蚂蚁的意思,在我们做接口测试的时候,是可以用来做JMeter接口测试生成测试报告的工具,(原理有点类似于postman生成测试报告用newman生成测试报告类型)

Ant是隶属于Apache旗下的一个最优秀的java构建工具,其任务是驱动构建文件中描述为相互依赖的目标和扩展点的进程。
Ant的主要已知用途是构建java应用程序。Ant提供了许多内置任务,允许编译,组装,测试

和运行java应用程序。Ant还可以有效的构建于非java应用程序,例如C或C++应用程序

更多的说,Ant可以用于实验任何类型的过程,这些过程可以用目标和任务来描述。

 

用最直白的话来说就是,就是JMeter整合ant可以生成HTM;的测试报告

1.1ant的下载和安装

下载地址:https://ant.apache.org/bindownload.cgi

点击下载地址 即可 解压在相关目录就可以  如下图所示

 

 

 1.2Ant的环境搭建

因为ant是一个java库的命令行工具,所以我们在运用ant的时候是需要进行在本地设置环境变量的

如下图所示

 

 

 点击环境变量

 

 

 

在系统变量中选择Path点击编辑

 

 

 找到ant下的bin目录 添加到环境变量中,点击确定

1.3验证Ant环境是否正确搭建

在cmd控制台当中 输入ant 

 

 

 出现上述提示 即为ant环境已经搭建成功

1.4关于build.xml

我们需要把build.xml放到指定的目录内   如下图所示

 

 

 1.5关于JMeter的目录结构

我们需要在JMeter文件里创建一个新的文件夹 命名为tests 如下图所示

 

 

tests 文件夹:是用来存放测试中所有的资料

在tests文件夹内 创建两个新的文件夹 命名为report和script 

report文件夹:存放测试报告,里面再创建html和jtl

script文件夹:是用来存放测试的脚本

 

 

在report文件夹内创建两个新的文件夹  分别为html和jtl文件夹 如下图所示

 

 

这个时候我们就把所有文件给创建成功 

在我们以后的工作中   把JMeter保存的测试文件都放到script文件夹内即可 如图所示

 

 1.6自动发送邮件插件的安装

我们需要用到三个插件 分别为 

activation.jar

commons-email-1.2.jar

mail.jar

 

 

 

 将三个文件放在ant的lib目录下即可

 

 

因为我们创建了新的目录结构 所以我们前面的build.xml文件需要调整 

将build.xml文件放在JMeter文件的tests文件夹内 如下图所示

 

 1.7关于Ant生成测试报告前的前置条件

我们需要改一下配置文件 才可以让Ant工具正常的运行

我们先找到JMeter的bin目录下的jmeter.properties文件 如下图所示

 

 以记事本的方式打开,

Ctrl+F搜索jmeter.save.saveservice.output_format=csv关键字

将前面的注释解除 后面改成xml的数据格式 如下图所示

 

 1.7.1 关于build.xml的内部详解  需要更改的配置

 

 最后一步  

在apache-jmeter的extras下找到ant-jmeter-1.1.1.jar,把它复制到ant的apache-ant-1.10.0\lib下,即可

这样我们所有的配置都已经更改好了

可以进行接下来的生成测试报告工作了

1.8利用Ant生成HTML测试报告

在cmd控制台当中输入ant 即可生成测试报告,如下图所示

 

 在生成完成后 我们可以看到在JMeter文件夹内的test的report的html文件夹内 生成了一份测试报告  如下图所示

 

 打开后如下图所示

 

 这样我们就完成了ant生成HTML测试报告了

 

在我们和上级领导汇报测试报告的时候要写的数据如下

总测试用例个数 18
成功率 90%
失败率 10%
失败原因 自己代码写的不对,导致测试测试失败
覆盖的场景 登录,产品管理,地址管理
结论

本次自动化测试完整的覆盖了登录业务,产品管理业务,地址管理业务,所有的测试场景测试通过

 

 

 

 

 

 

 

 

 

 

在配上生成的HTML测试图就可以了

2、JMeter的组件介绍

在我们了解JMeter的组件前我们先要了解什么事JMeter执行原理是什么

JMeter是通过线程组来驱动多个(也可以理解成LR工具里面的虚拟用户),运行测试脚本目标服务器发起大量的网络请求,在每个客户端上可以运行多个线程组,也就是说一个测试计划里面可以包含N个线程组

测试计划:


在JMeter的测试工具中,把测试计划可以理解成为是一个工程的目录,也就是说每一个脚本都可以说是一个测试计划,在里面包含了很多的线程组来执行,测试计划也是JMeter脚本的根节点

2.1用户自定义变量

2.1.1用户自定义变量介绍

用户自定义变量组件其实用到的也是数据驱动的思想,即为把公共的单独分离出来,定义成变量,在后面直接调用,

举例说明:例如登录的用户名和密码

2.1.2我们怎么去添加该组件?

 

 在我们创建的线程组内  右键添加 配置原件里面的用户定义变量

2.1.3我们应该怎么用该组件

创建好后 放在线程组的下一个层级内 ,将需要的值写入到该组件内 

 

 这样在其他测试用例想要调用该变量的话直接使用${被调用的名称}即可,如下图所示

 

 2.2延时等待组件

2.2.1延时等待组件介绍

因本人在学接口测试前 学习过python的ui自动化测试

在python自动化测试中有time库     其中time.sleep()即为固定等待

那么在JMeter中延时等待组件的意思一样  意为每自动进行一个测试用例 都会固定等待XXms

2.2.2我们怎么添加该组件?

在线程组处右键,选择添加定时器当中的固定定时器

 

 固定定时器的延迟为毫秒(ms)  1秒(s)=1000毫秒(ms)

 

 

这样在我们运行自动化测试的时候,就会每个测试用例之间等待一秒,防止接口因运行太快导致错误

 2.3正则表达式提取器

2.3.1正则表达式提取器介绍

在我们要处理动态的参数的时候 我们有两种处理方式 分别为

1、json提取器(直接获取动态参数)

2、正则表达式提取器(本次介绍的方法)

在处理正则表达式提取时候 响应数据可以放到以下网址 可以更好的看到层级关系

测试地址:https://tool.oschina.net/regex

2.3.2我们怎么添加该组件?

对请求右键选择添加后置处理器的正则表达式提取器

 

 

 

2.3.3正则表达式提取器内部参数含义

 

 

 引用名称:即为我们定义的变量

正则表达式:里面需要写入的是  我们要获取的动态id 其中"token":"(.*?)"

.*代表的是全部值 加个?代表的是在响应数据里面 匹配到第一个token即为停止

模板:用$$引用,如果在正则表达式中有多个正则表达式,则可以是$2$,等 表示解析第几个值给user_id.    

举例:$1$表示匹配到第一个值

匹配数字:0代表随机取值,-1代表所有值,此时提取结果是一个数组,其余正整数代表第几个匹配的内容提取出来  。

缺省值:正则匹配失败时取得值

2.4用户参数组件

2.4.1用户参数组件介绍

用户参数组件其实运用的原理就是参数化的思想,那么什么是参数化呢?

参数化可以简单的理解为:我们一个测试点,需要多次操作,并且每次操作的数据都是不一样的测试步骤一致,但是测试数据每次不一样

即为相同的测试步骤 每次输入的值不一样   我们通过参数化来解决

2.4.2我们该怎么添加?

对线程组右键 选择添加前置处理器里面的用户参数即可

 

 

 2.4.3用户参数组件的参数说明

 

 

 我们可以看到  用户参数组件里有名称和用户  

在名称下面写入变量   在其他地方需要调用的时候输入${}即可   用户那里写我们要输入的值

例如我们这里需要输入手机号进行登录 重复两次 用不同的手机号 即为

用户1:1XXXXXXXXXXX

用户2:1XXXXXXXXXXX

我们需要注意的是  因为我们输入了两个参数 所以我们在执行测试用例的时候

需要在线程组里的参数进行修改   如下图所示

 

 

 2.5CSV数据文件设置组件

2.5.1CSV数据文件设置组件介绍

CSV数据文件设置组件 也用到的是数据驱动的思想  将同样的步骤 所需要输入不同的值 将这些值分离出来

2.5.2我们该怎么添加该组件?

对线程组右键选择配置原件里的CSV Data Set Config

 

 

 2.5.3CSV数据文件设置组件的参数介绍

 

 

 文件名:即为我们要导入的数据文件路径  

我们这里以csv和txt的文件来进行模拟操作

1XXXXXXXXXX , 123456498    
1XXXXXXXXXX , 12345698915    
         

记事本的方式如上文本进行写入

文件编码:UTF-8  中文编码

变量名称(西文逗号间隔),指的是我们要对文件内的值进行赋值变量     这里赋值给的是username和password 所以需要书写username,password

分隔符:,指的是用什么将变量分开

2.6线程组组件

2.6.1线程组组件的介绍

线程组可以说是JMeter最重要的核心的部分 没有线程组 就无法形成一个真正的测试用例  它是JMeter的灵魂

 

在一个测试计划(最高层级)里面可以新增线程组,线程组可以把它理解成为:模拟虚拟用户的发起点,在线程组里面可以设置线程组,运行时间以及运行次数

2.6.2我们怎么添加该组件?

在测试计划右键 选择添加线程(用户)里面的线程组

 

 

 2.6.3线程组组件的参数介绍

 

 

 继续:

如果有一个请求错误,其他的请求会继续,不会因为有一个错误请求的导致其他请求终止。

启动下一个进程循环:

如果请求出现问题,同一脚本的其他请求就都不在执行,直接执行下一个进程的信息,如登录下一个请求是查看个人主页,因为查看个人主页跟登录有依赖关系,则下个接口查看个人主页也不会被执行

停止线程:

如果请求失败,就会停止当前线程执行,不再继续执行,如果线程数很多的,那么导致的结果是停止的线程会很多,处于真正运行的线程会很少,最后导致服务器的负载不够,一般不建议勾选该选项

停止测试:

如果请求失败,那么会停止所有的线程执行,也可以理解为停止整个测试

立即停止测试:

如果请求失败,立即停止整个测试场景的执行

线程属性:

线程数

一个线程可以裂解为对应一个模拟用户,所以线程数越多,那么也就认为可以模拟的用户数越多。

Ramp-Up时间(秒):

该属性指的是所有线程从启动到开始运行的时间间隔,单位是秒,也就是说所有线程在多场时间内开始,如线程数设置50,设置的秒数为5秒 则计算公式为

每秒执行线程=线程数/Ramp-Up
具体为:
如果设置的线程数为50,Ram-Up的时间为10
那么也就是说开始执行后,每秒会启动5个线程
如果Ramp-Up设置为0,那么开始执行后,50个线程会立刻启动。

循环次数:

循环次数可以理解为,请求的重复次数,如果选择永远,那么请求将一直进行,不建议这样操作

延迟创建线程直到需要:

如50个线程数,RampUp时间是10秒,执行后线程是全部就绪的,那么就是每隔一秒启动5个线程数

调度器:

思维调度器可以理解为设置何时开始运行。

持续时间:

测试计划持续多长时间

启动延迟:

从当前时间延迟多长时间开始运行测试,也就是说点击执行后,仅仅是做初始化的场景,不会执行测试,等待延迟到达后开始运行测试,执行的时间为持续时间设置的时间

2.7JMeter监听器当中的聚合报告组件

2.7.1聚合报告组件的介绍

聚合报告是以表格的形式来显示取样器的结果信息,如果不同的取样器拥有相同的名字,那么在聚合报告会显示在一行里面,那么一般来说,聚合报告都是根据取样器来显示每个取样器的执行结果信息。

2.7.2我们该怎么添加该组件?

 

 

 2.7.3聚合报告组件的参数介绍

 

 

 聚合报告的信息具体如下:

Label:取样器名称
Samples:取样器运⾏次数
Average:单个请求的平均响应时间
Median:50%请求的响应时间
90%Line:90%请求响应时间
95%Line:95%请求响应时间
99%Line:99%请求的响应时间
Min:请求的最⼩响应时间
Max:请求的最⼤响应时间
Std.Dev:响应时间的标准⽅差
Error%:事务错误率
Throughput:吞吐率,也就是TPS
KB/sec:每秒数据包流量
Avg.Bytes:平均数据流量
Received KB/sec:每秒从服务器端接收到的数据量
SentKB/sec:每秒从客户端发送的请求的数量

2.8查看结果树组件

2.8.1查看结果树组件介绍

结果树能够很清晰的显示每个取样器执行的结果,以及每个取样器的网络请求信息,

可以理解成 查看测试结果

2.8.2我们怎么添加该组件?

对测试计划右键 选择添加监听器里的查看结果树

 

 2.8.3查看结果树组件的参数介绍

 

 在红框处可以看到取样器结果 请求数据以及响应数据

包括协议状态码  等等所有数据

2.9HTTP信息头管理器组件

2.9.1HTTP信息头管理器组件介绍

每个HTTP的请求都是需要请求头信息的,那么把可以请求头的信息添加到HTTP信息头管理器,然后需要把它放在取样器的前面

2.9.2我们怎么添加该组件?

在线程组处右键选择添加配置元件当中的HTTP信息头管理器

 

 2.9.3HTTP信息头管理器组件的参数介绍

 

 在HTTP信息头管理器组件当中  需要填写的东西往往是根据产品后端给的代码进行添加

如web产品 我们可以根据浏览器右键检查当中的network 查询到请求头 如下图所示

 

 2.10HTTP信息头管理器组件

2.10.1HTTP信息头管理器组件介绍

在系统登录成功后需要访问系统中的其他网络请求,但是需要记住用户登录成功后的sessionID的信息,那么使用HTTP Cookie管理器就可以自动记录下这些信息

2.10.2我们怎么添加该组件?

对线程组右键 选择配置原件当中的Cookie管理器

 

 2.10.3HTTP Cookie管理器组件的参数介绍

由于HTTP Cookie管理器组件不需要在内部写入任何东西 需放在 线程组的下一个层级

那么我们在进行登录等相关操作时候 就会自动记录cookie的数据

 

 2.11用户定义的变量组件

2.11.1用户定义的变量组件介绍

在测试中,如果某些请求参数存在变化,比如是用户名和密码,那么久可以单独的独立出来,用户定义的变量可以很轻松的来解决这部分问题。

2.12.2我们怎么添加该组件?

在线程组右键选择添加配置元件当中的用户定义变量

 

 2.12.3用户定义的变量参数含义

 

 在其他请求当中如果需要调用的话需要用到${}来调用 用户定义的变量参数值

2.13HTTP请求默认值组件

2.13.1HTTP请求默认值组件含义

每个取样器发送网络请求的时候都是需要IP地址等信息,但是使用HTTP请求默认值可以很轻松地把请求的地址独立出来

2.13.2我们怎么添加该组件?

在线程组处右键添加配置元件的HTTP请求默认值

 

 2.13.3HTTP请求默认值的参数含义

 

 其实该组件用到的也是数据驱动的思想 将IP分离到HTTP请求默认值 这样在执行测试用例时候前面会默认添加IP

2.14简单控制器组件

2.14.1简单控制器组件的介绍

简单控制器是主要控制JMeter的执行顺序,它的存在使整体的测试的灵活度更高,比如接口A执行完成后得到的结果信息,经过逻辑控制器判断之后,再执行接口B或者是接口C 一般性的而言,简单控制器使用的最多,但是也看具体的场景进行设置

2.14.2我们怎么添加该插件?

在线程组处右键添加逻辑控制器当中的简单控制器

 

 2.14.3简单控制器组件的使用方法

他可以用在 将测试场景一一分离开 具体方式如下

 

 2.15三种断言组件

2.15.1三种断言组件的介绍

在做JMeter的接口测试时候 我们需要用到的是组件分别为

1、JSON/YAML断言

2、JSON断言

3、响应断言

2.15.2三个断言组件的区别

1、JSON/YAML断言插件属于是第三方的组件 是需要我们额外下载的  具体下载方式可参照 接口测试相关知识(九)里面有介绍    是可以处理JSON数据类型和 YAML数据类型的数据

2、JSON断言是JMeter源生的断言组件   只可以处理JSON数据类型

3、响应断言也是JMeter源生的断言组件 可以理解成模糊匹配关键字 应用的场景

2.16定时器组件

2.16.1定时器组件的介绍

定时器主要用来测试计划执行的过程中,定时器用来缓减线程运行,比如可以的等待三秒后再执行下一个请求的信息

2.16.2我们怎么安装该组件?

对线程组右键添加定时器里的固定定时器

 

 2.16.3定时器组件的参数含义

 

 因为固定定时器需要延迟的时间为ms     1S=1000MS  按照该方法设置  则每测试一个用例会固定等待1秒 

Label:取样器名称
Samples:取样器运⾏次数
Average:单个请求的平均响应时间
Median:50%请求的响应时间
90%Line:90%请求响应时间
95%Line:95%请求响应时间
99%Line:99%请求的响应时间
Min:请求的最⼩响应时间
Max:请求的最⼤响应时间
Std.Dev:响应时间的标准⽅差
Error%:事务错误率
Throughput:吞吐率,也就是TPS
KB/sec:每秒数据包流量
Avg.Bytes:平均数据流量后端监听器
后端监听器可以把JMeterinfluxdb,grafana整合起来,把性能测试过程中的数据存储到influxdb,然后最后显示
grafana的可视化界⾯中。
查看结果树
结果树能够很清晰的显示每个取样器执⾏的结果信息,以及每个取样器的⽹络请求信息,如下:
JMerer配置元件
取样器
取样器是JMeter的基本单元,⼀般性的各种都是取样器来发起的,如HTTP等请求。可以把它理解为⼀个独⽴的测
试⽤例,或者说是⼀个测试场景。
配置元件
配置元件可以理解为对取样器的各种请求进⾏辅助配置。
HTTP信息头管理器
每个HTTP的请求都是需要请求头的信息的,那么可以把请求头的信息添加到HTTP信息头管理器,然后需要把它放
在去取样器的前⾯。
HTTP Cookie管理器
在系统登录成功后需要访问系统中的其他⽹络请求,但是需要记住⽤户登录成功后的sessionID的信息,那么使⽤
HTTP Cookie管理器就可以⾃动记录下这些信息。
⽤户定义的变量
在测试中,如果某些请求参数存在变化,⽐如是⽤户名和密码,那么就可以单独的独⽴出来,⽤户定义的变量可以
很轻松的来解决这部分的问题。
Received KB/sec:每秒从服务器端接收到的数据量
SentKB/sec:每秒从客户端发送的请求的数量

posted on 2022-01-17 22:50  钢镚芽儿哟  阅读(1446)  评论(0编辑  收藏  举报

导航