性能测试Ⅱ——JMeter

总目录

测试开发系列(功能+接口+性能+自动化)

性能测试资源下载链接

安装

1. 安装JDK

  • JDK下载
  • 安装JDK
  • 配置环境变量
  • 校验

2. 安装JMeter

  • 下载
    官网下载地址: http://jmeter.apache.org/download_jmeter.cgi

  • 安装

    把下载的安装包,解压到某一目录即可

    提示:安装目录中不要出现空格,这将导致远程测试出现问题
    
  • 环境配置

    Jmeter环境
    1. 新建JMETER_HOME变量,并添加jmeter所在目录 如:-> F:\Jmeter\apache-jmeter-5.1.1
    
    2.PATH-> .;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
    
  • 启动验证
    JMeter启动有多种方式,进入JMeter安装目录下的bin目录

    双击 jmeter.bat
    
    双击 ApacheJMeter.jar 选择使用java程序打开
    
    命令行输入: java -jar ApacheJMeter.jar
    

功能

1 文件目录

bin目录

存放可执行文件和配置文件

jmeter.bat:windows的启动文件
jmeter.log:日志文件
jmeter.sh:linux的启动文件
jmeter.properties:系统配置文件
jmeter-server.bat:windows分布式测试要用到的服务器配置
jmeter-serve:linux分布式测试要用到的服务器配置

docs目录

docs:是JMeter的api文档,可打开api/index.html页面来查看

printable_docs目录

  • printable_docs的usermanual子目录下的内容是JMeter的用户手册文档
  • usermanual下component_reference.html是最常用到的核心元件帮助文档。
  • 提示:printable_docs的demos子目录下有一些常用的JMeter脚本案例,可以作为参考

lib目录

该目录用来存放JMeter依赖的jar包和用户扩展所依赖的jar包

2 修改配置

汉化、修改主题

3 元件作用域和执行单元

元件的基本介绍

元件:多个类似功能组件的容器(类似于类)。

常见的元件类型有:

1. 取样器
2. 逻辑控制器
3. 前置处理器
4. 后置处理器
5. 断言
6. 定时器
7. 测试片段
8. 配置元件
9. 监听器


组件:实现独立的某个功能(类似于方法)

元件作用域

在JMeter中,元件的作用域是靠测试计划的树形结构中元件的父子关系来确定的。

提示: 核心是取样器,其他组件都是以取样器为核心运行的,组件添加的位置不同,生效的取样器也不同。

作用域的原则

1. 取样器:元件不和其他元件相互作用,因此不存在作用域的问题;

2. 逻辑控制器:元件只对其子节点中的取样器和逻辑控制器作用;

3. 其他六大元件:除取样器和逻辑控制器元件外,如果是某个取样器的子节点,则该元件对其父子节点起作用;

4. 如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等);

提示:以上元件中还没开始学习,暂时理解jmeter这种树形结构结构影响作用域即可。

元件执行顺序

1. 配置元件(config elements)

2. 前置处理程序(Per-processors)

3. 定时器(timers)

4. 取样器(Sampler)

5. 后置处理程序(Post-processors)

6. 断言(Assertions)

7. 监听器(Listeners)

提示:
  1. 前置处理器、后置处理器、断言等元件功能对取样器起作用(如果在它们的作用域内没有任何取样器,则不会被执行)
  2. 如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行

使用例子

需求:使用JMeter访问百度首页接口,并查看请求和响应信息

操作步骤
1. 启动JMeter
2. 在‘测试计划’下添加‘线程组’
3. 在‘线程组’下添加‘HTTP请求’取样器
4. 填写‘HTTP请求’的相关请求数据
5. 在‘线程组’下添加‘察看结果树’监听器
6. 点击‘启动’按钮运行,并查看结果

重点组件

线程组

说明:线程组是控制JMeter将用于执行测试的线程数,也可以把一个线程理解为一个测试用户。
  • 添加线程组
    位置:右键点击‘测试计划’ --> 添加 --> 线程(用户) --> 线程组

  • 线程组的特点

    模拟多人操作
    线程组可以添加多个,多个线程组可以并行或串行
    取样器(请求)和逻辑控制器必须依赖线程组才能使用
    线程组下可以添加其他元件下组件
    
  • 线程组分类

    线程组
    普通的、常用的线程组,可以看做一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户
    
    setUp线程组
    一种特殊类型的线程组,可用于执行预测试操作
    
    tearDown线程组
    一种特殊类型的线程组,可用于执行测试后工作
    
  • 线程组参数详解

  • 取样器错误后要执行的动作

    继续:如果取样器里的执行出现错误失败的时候,请求不会停止,继续执行。
    
    启动下一进程循环: 忽略错误,线程当前循环错误,执行下一个循环。
    
    停止线程: 只限当前线程停止,不影响其他线程执行
    
    停止测试: 当前执行的线程全部执行完毕后结束
    
    立即停止测试: 立刻停止
    
  • 线程属性

    线程数:虚拟用户数
    
    Ramp-Up时间(秒):启动全部虚拟用户数所需要的时间
    
    循环次数:指定次数或勾选永远
    
    延迟创建线程直到需要:测试开始的时候,所有线程就被创建完。勾选了此选项,那么线程只会在合适的需要用到的时候创建.
    
    调度器:勾选后,调度器配置才能使用;
    
  • 调度器配置

    持续时间(秒):设置脚本压测持续时间
    启动延迟(秒):启动延迟时间
    

HTTP请求

位置: 选中线程组->右键->添加->取样器->HTTP请求 作用: 向服务器发送http及https请求

```xml
协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 。

服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。

端口号:目标服务器的端口号,默认值为80 。

方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

路径:目标URL路径(不包括服务器地址和端口)

Content encoding :内容的编码方式,默认值为iso8859

同请求一起发送参数:GET请求时url中附带参数可以通过此方式添加

消息体数据:POST/PUT请求JSON数据存放地
```

查看结果树

位置: 选中测试计划/线程组->右键->添加->监听器->察看结果树 作用: 查看请求请求和响应结果

取样结果:查看响应信息头信息、响应状态码

请求:查看请求相关信息(url、方法、参数)

响应:查看响应信息

JMeter参数化常用方式

1 用户定义的变量

2 用户参数

3 CSV Data Set Config

4 函数

JMeter断言

1 响应断言

2 JSON断言

3 持续时间断言(Duration Assertion)

JMeter关联

1 正则表达式提取器

2 XPath提取器

3 JSON提取器

JMeter录制脚本

在没有接口文档的旧项目当中,快速录制web页面产生的http接口请求,帮助编写接口测试脚本

JMeter直连数据库

JMeter逻辑控制器

1 如果(If)控制器

2 循环控制器

3 ForEach控制器

JMeter定时器

1 同步定时器(Synchronizing Timer)[集合点]

2 常数吞吐定时器(Constant Throughput Timer)

JMeter分布式

JMeter分布式执行原理

JMeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent)。

执行时,控制机会把脚本发送到每台代理机上,代理机拿到脚本后就开始执行,代理机执行时不需要启动JMeter界面,可以理解它是通过命令行模式执行的。

执行完成后,代理机会把结果回传给控制机,控制机会收集所有代理机的信息并汇总。

JMeter测试报告

1 聚合报告

2 成html测试报告

JMeter性能测试常用图表

1. 常用平均并发数计算公式


PV:(Page View)即页面访问量,每打开一次页面PV计数+1,刷新页面也是。PV只统计页面访问次数。

UV(Unique Visitor),唯一访问用户数,用来衡量真实访问网站的用户数量。

一般用UV统计用户活跃数,用PV统计用户访问页面的频率
1.1 普通计算方法

计算公式:TPS= 总请求数 / 总时间

按照需求所示,在2019年第32周,有4.13万的浏览量,那么总请求数,我们可以认为估算为4.13万(1次浏览都至少对应1个请求)
总请求数 = 4.13 万请求数 = 41300 请求数
总时间:由于不知道每个请求的具体时间,我们按照普通方法,我们可以按照一周的时间进行计算
总时间 = 1天 = 1 * 24 小时 = 24 * 3600 秒
套入公式可得:
TPS = 41300请求数/24*3600秒 = 0.48请求数/秒

结论:按照普通计算方法,我们在测试环境对相同的系统进行性能测试时,每秒能够发送0.48请求就可以满足线上的需要。

1.2 二八原则计算方法

二八原则就是指80%的请求在20%的时间内完成

计算公式 : TPS = 总请求数 80% / (总时间20%)

按照公式进行计算
TPS = 41300 * 0.8请求数 / 24*3600*0.2秒 = 1.91 请求数/秒

结论:按照二八原则计算,在测试环境我们的TPS只要能达到1.91请求数每秒就能满足线上需要。二八原则的估算结果会比平均值的计算方法更能满足用户需求。
1.3 按照业务数据进行计算

业务数据:有的公司会统计一定时间内的所有业务数据,我们可以根据这个业务数据曲线图,统计出最多请求的数量和时间比例。

计算模拟用户正常业务操作(稳定性测试)的并发量:
根据这些数据统计图,可以得出结论:

大部分订单在8点-24点之间,因此系统的有效工作时长为16个小时

从订单数量统计,8-24点之间的订单占一天总订单的98%左右(40474个)

结合二八原则计算公式 : TPS = 总请求数 80% / (总时间20%)

需要在测试环境模拟用户正常业务操作(稳定性测试)的并发量为:
TPS = 40474 * 0.8请求数 / 16*3600*0.2秒 = 2.81 请求数/秒

计算模拟用户峰值业务操作(压力测试)的并发量:

根据这些数据统计图,可以得出结论:

订单最高峰在在21点-22点之间,一小时的订单总数大约为8853个

计算压力测试的并发数:TPS = 峰值请求数/峰值时间 * 系数

需要在测试环境模拟用户峰值业务操作(压力测试)的并发量为:

TPS = 8853 请求数 / 3600秒 * 3(系数) = 7.38 请求数/秒

2. 插件管理包工具

说明:下载jmeter插件管理工具包(可以用此包下载jmeter插件)

2.1 应用步骤
  1. 下载包管理工具jar包
  2. 将包管理工具jar包添加到jmeter中
  3. 下载性能测试常用组件
    下载: https://jmeter-plugins.org/install/Install/
    将jar包添加到jmeter中
    提示:存放到jmeter安装目录 lib\ext\目录下

3. 性能测试常用图表及组件

  1. Concurrency Thread Group 线程组
  2. Transactions per Second 每秒事务数
  3. Bytes Throughput Over Time 吞吐量
  4. PerfMon Metrics Collector 性能指标收集器
3.1 Concurrency Thread Group 线程组

说明:阶梯线程组
添加方式:测试计划 --> 线程(用户)–> Concurrency Thread Group

参数:
  重点:
    Target Concurrency:目标并发(线程数)
    Ramp Up Time:加速时间
    Ramp-Up Steps Count:加速步骤计数
    Hold Target Rate Time:运行时间
    Time Unit:时间单位(分钟或者秒)
  了解:
    Thread Iterations Limit:线程迭代次数限制(循环次数)
    Log Threads Status into File:
        将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件)
3.2 Transactions per Second

说明:每秒完成事务数 场景:统计业务成功率
添加方式:测试计划 --> 线程组–> 监听器–>Transactions per Second
提示:需要配合事务控制器完成,如果不使用事务控制器,默认1个请求为1个事务

3.3 Bytes Throughput Over Time

说明:查看服务器吞吐流量 单位/字节
添加方式:测试计划 --> 线程组–> 监听器–>Bytes Throughput Over Time

3.4 PerfMon Metrics Collector
  • 说明:用来监控服务端的性能的工具,包括cpu、内存、磁盘、网络等性能数据
  • 添加方法:线程组->监听器->jp@gc - PerfMon Metrics Collector
  • 注意:使用之前需要在服务器端安装监听服务程序并启动
  • 监控服务器服务程序:
    1. 下载安装包ServerAgent-2.2.3.zip,链接地址:https://github.com/undera/perfmon-agent
    2. 解压ServerAgent-2.2.3.zip
    3. 启动,如果是windows运行startAgent.bat,如果是linux运行startAgent.sh
    4. 启动这个工具后,jmeter的插件jp@gc - PerfMon Metrics Collector就可以收集服务端的资源使用率,并在jmeter中查看了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zkFun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值