jmeter 性能测试

守給你的承諾、 提交于 2020-02-27 08:03:33

 

  众所周知,借助于jmeter工具可以进行接口测试和性能测试。本文主要是介绍一下jmeter性能测试,以下面的流程图为主线进行主要模块的简单介绍。

 

 

jmeter 下载安装

 

线程组

1.线程组,或者可以叫用户组,进行性能测试时的用户资源池。

2.是任何一个测试计划执行的开始点。

3.“控制器”和“HTTP请求”(采集器)必须在线程组内;监听器等其他组件,可以直接放在测试计划下。

  • 线程数:发送请求用户数
  • Ramp-up period: 每个请求发生的总时间间隔,单位是秒
  • 循环次数:请求发生的重复次数

 

逻辑控制器

循环控制器、事务控制器如下图,建议事务控制器放在要测试的请求前面、循环控制器以内,这样请求数和事务数一致。

 

 线程组和循环控制器使用说明,如下图配置了两个线程组(参数化了两个用户)、但循环设置了2次,所以循环控制器内的接口调用次数=线程组*循环次数

 

配置元件——User Defined Variables

点击线程组添加配置元件→ User Defined Variables(用户定义的变量)

PS:User Defined Variables中定义的参数值在test plan执行过程中不能发生取值的改变,因此一般仅将test plan中不需要随迭代发生改变的参数(只取一次的参数)设置在此处;例如:被测应用的host和port值。

 

设置用户自定义变量后,所有的接口请求就可以直接引用变量,方法:${变量名}   

好处:以后访问地址变更,直接修改自定义的变量值即可。

 

 

添加http请求

在控制器上右键添加---Sampler---HTTP请求,输入服务器名称、路径、方法一般是post

协议如果是https,直接在http采集器中协议部分填写https

如果请求体采用parameters方式,不需要添加http信息头管理器;如果是body data, 一般采用json串格式,需要添加http信息头管理器

 

 

http信息头管理器

 如果请求体是body,需要添加http信息头管理器运行时请求才能成功,body一般是json串格式,所以配置Content-Type对应的值application/json

用户请求的headers中一般都需要携带用户登录信息,也可以以变量形式写在信息头管理器中,登录响应结果提取见关联部分介绍。

 

 

关联

接口请求之间存在参数调用,为了保存这个参数,需要建立关联。有两种方式,个人比较喜欢用正式表达式。

正则表达式:

  • 正则表达式提取器:通过正则表达式提取器 取响应值存储到变量中,供后续接口调用;
  • 数据提取器,一般简单的通用语法就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容;
  • *代表0次或多次匹配前面的表达式,+代表1次或多次匹配。
  • 模板:$1$表示取第一组
  • 匹配数字:1代表第一个匹配

 

用到此参数的接口,参数值直接用${引用名称}即可。

 

借助插件:json path extractor,具体操作没继续研究。

 

Parameters的两种参数化方法

参考文章 https://testerhome.com/topics/12113    此文章写的比较详细,此处不再赘述

  • 函数助手参数化
  • 借助jmeter中的配置元件:CSV Data Set Config --适用于JSON格式参数化

 

Synchronizing Timer(集合点)

 在控制器右健添加---定时器---Synchronizing Timer, 添加如下集合点组件。

注意:集合点要放在请求前面才能生效。

 

Number of Simulated Users to Group by:集合多少人后再执行请求

Timeout in milliseconds:多少秒没集合到指定人数 算超时

  1. 可以在线程组的任意位置添加集合点。集合点可以和线程组的“线程属性”和“调度器”结合使用,主要是为了保证所有的用户到达集合点并能发生并发。
  1. Synchronizing timer 仅作用于同一个JVM中的线程,所以,如果使用并发测试,确保"Number of Simultaneous Users toGroup by"中设置的值不大于它所在线程组包含的用户数,通常设置和线程组包含的用户数相同即可。

  2. 使用中发现最后一批线程数不够集合点数目时,jmeter会停止不动,所以按照 线程用户数%集合并发数=0 的规则来设置两者间关系,才能保证运行成功。

 

断言

(1)路径:断言----响应断言:主要对请求的结果的是否包含指定内容进行判断

(2)监听器----断言结果:如果失败会有失败提示,便于查看结果。

 

 

 察看结果树

线程组右键添加---监听器---察看结果树

 

整个线程组运行完成后,点击察看结果树可以看到每个接口运行情况。

 

Aggregate Report(聚合报告)

线程组右键添加---监听器---Aggregate Report

  • Average --平均响应时间单位ms,默认情况下是单个request的平均响应时间

  • Throughput --吞吐量,默认情况下表示第秒完成的请求数(Request Per Second)

jmeter自带的报告比较简单,如果想要监控cpu、内存、IO资源等,主要有两种方式:

1、去官网下载jmeter集成的监控插件PerfMon,serverAgent 部署在被测服务器

2、Nmon 监控软件

此处不再展开描述,有空再单独分析。

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!