📔

性能测试执行

一、性能指标

1、QPS

每秒查询率,表示一台服务器每秒能响应的查询次数

2、TPS

每秒处理的事务数目,事务通常是指一个完整的业务流程,可能包含多个请求
 

二、基础知识

术语介绍

模块(空行向上匹配)
字段/词
含义
线程组
线程数
虚拟用户数
Ramp-Up时间
所有虚拟用户全部启动的时间
循环次数
每个线程发送请求的个数
HTTP请求
参数数据
这里的参数表示的是请求负载
配置元件-HTTP信息头管理器
信息头
添加请求token
断言
响应断言
判断请求的结果是否正常
断言结果
根据响应断言统计请求结果
定时器-CTT
常数吞吐量计数器
QPS测试
监视器-聚合报告
Throughout字段
TPS数据
阶梯式压测
This group will start
总线程/用户数
First wait for
启动前等待时间
then start
从。号线程/用户开始
Next add
每次阶梯添加的线程/用户数
threads every
每个阶梯运行的时间
using ramp-up
阶梯切换时间
Then hold load for
最大并发时的持续时间
Finally stop
压测完成用户退出数,同样是阶梯退出
threads every
每次退出间隔时间

线程组

执行流程图
JMeter测试执行流程: 开始 ↓ 执行 setUp线程组 (如果有) ↓ 执行 普通线程组 (按顺序或并行) ↓ 执行 tearDown线程组 (如果有) ↓ 结束
特性
setUp线程组
普通线程组
tearDown线程组
执行时机
最先执行
setUp之后执行
所有普通线程组之后执行
典型用途
测试前准备
主测试业务
测试后清理
执行次数
通常只执行一次
按配置循环执行
通常只执行一次
依赖关系
不依赖其他组
依赖setUp的初始化
依赖主测试完成
是否必须
可选
必须(至少一个)
可选
并发用户
通常单用户
模拟真实并发
通常单用户
持续时间
较短
主要测试时长
较短
注意:至少要有一个普通线程组,如果单独一个setUp或者tearDown线程组会报错

数据计算

设定数据:
  1. 日活100W
  1. 高峰期4h
  1. 高峰期占总访问量60%
  1. 平均每天每人5次访问
计算结果或逻辑:
  1. 高峰期访问人数1000000*0.6/(4*3600)≈42人/s
  1. 高峰期QPS3000000/(4*3600)≈208请求/s
  1. 并发用户数计算1000000/4/3600*5≈345人/s ;公式为:(用户总量/统计时间)*影响因子
 

三、测试场景

3.1 常规简单检查

测试计划结构: ├── 线程组 │ ├── HTTP请求 (登录接口) │ │ ├── 响应断言 (验证"登录成功") │ │ └── 响应断言 (验证状态码=200) │ └── HTTP请求 (查询接口) │ ├── 响应断言 (验证JSON格式) │ └── 响应断言 (验证数据完整性) └── 监听器 ├── 断言结果 # 查看详细断言结果 └── 查看结果树 # 查看请求响应详情

3.2 阶梯式压测

前提条件

  1. 下载JMeter-manager并放入lib/ext目录下:Install :: JMeter-Plugins.org
  1. 在Available Plugins选项中输入jpgc后空格,就可以搜索出jpgc插件,然后勾选jpgc - Standard Set后,点击Apply Changes and Restart JMeter
  1. 在Available Plugins中找到Custom Thread Groups,点击Apply Changes and Restart JMeter

实现流程

  1. 创建负载控制器线程组(sepping thread group)
  1. 添加配置元件:HTTP请求以及请求头数据
  1. 添加断言
  1. 添加监听器

3.3 参数化测试

准备工作

  1. 文件格式要求:第一行为变量名称
  1. 使用UTF-8格式,并使用英文逗号分隔

实现流程

  1. 添加线程(一般是setUp线程,优先级更高),注意配置循环次数!
  1. 添加配置元件-CSV Data Set Config
  1. 添加请求并引用变量,使用 ${变量名} 格式调用数据
  1. 给请求添加断言
  1. 添加监听器(察看结果树可检查请求调用)

3.4

四、测试实例

4.1 登录接口-参数化测试

前置数据
POST /webservices/qqOnlineWebService.asmx HTTP/1.1 Host: www.webxml.com.cn Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://WebXml.com.cn/qqCheckOnline" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <qqCheckOnline xmlns="http://WebXml.com.cn/"> <qqCode>string</qqCode> </qqCheckOnline> </soap:Body> </soap:Envelope>
1、添加线程组,其中循环次数为数据总量
notion image
2、添加csv数据读取
notion image
3、添加HTTP请求
notion image
4、添加HTTP请求头管理器
notion image
5、添加监视器
6、执行结果检查
树状图:
notion image

4.2QPS负载+多线程

题目/前置数据:42个用户访问网站,负载达到208QPS时的平均响应时间
1、添加线程组
2、添加HTTP请求
3、给HTTP请求添加定时器-CTT。注意:时间单位是分钟
4、添加监视器