性能自动化测试

性能自动化测试

  • 1.为什么要做性能测试
  • 2.什么是性能测试
  • 3.性能测试分类
    • 1.压力测试
    • 2.负载测试
    • 3.配置测试
    • 4.基准测试
    • 5.并发测试
    • 6.容量测试
    • 7.稳定性测试
  • 4.什么时候需要进行何种性能测试
  • 5.性能测试常见指标
    • 1.响应时间
    • 2.吞吐量
    • 3.事务的处理能力
    • 4.资源利用率
      • (1)内存
      • (2)处理器
      • (3)磁盘I/O
      • (4)带宽
    • 5.错误率
    • 6.点击率
  • 6.性能测试流程
    • 1.性能需求分析
    • 2.测试执行
    • 3.监控策略
    • 4.测试结果分析
  • 7.性能测试工具Jmeter
    • 1.Jmeter下载安装
      • 1. JDK下载配置
      • 2.Jmeter下载安装
      • 3.Jmeter目录结构
    • 2.Jmeter使用流程
      • 1.基础操作
      • 2.常用元件介绍
      • 3.元件作用域的原则
      • 4.元件执行顺序
      • 5.发送HTTP请求
      • 6.录制脚本操作
      • 7.参数化测试
      • 8.断言
      • 9.Jmeter中的关联
      • 10.beanshell应用
      • 11.Jmeter连接数据库操作
      • 12.逻辑控制器
      • 13.定时器
      • 14.Jmeter分布式测试
      • 15.生成Jmeter报告

1.为什么要做性能测试

性能自动化测试_第1张图片

2.什么是性能测试

  • 性能测试的定义
    通过自动化测试工具或者是代码手段,来模拟正常,峰值负载访问被测系统,来观测系统各项性能指标是否合格的测试过程。(关注问题的发现)
    通过各种测试技术手段,来解决多用户,高并发时系统存在的性能问题,为了提升用户体验度这样的测试过程。(关注问题的解决)
  • 性能测试的基本原理
    基于协议的测试
    多线程,多进程,协程
    模拟用户真实场景
    性能自动化测试_第2张图片
    一个月活是10w用户量的系统,如何计算并发数?
    根据公式:每秒的请求数=并发数/平均响应时间
    1.计算哪天的活跃用户数最多,对应的活跃用户数是多少。即并发数(根据日志来查看)
    2.对应日活用户数最多的这天,对应的请求最多的时间段,有几个小时。即平均响应时间
    3.再根据公式,计算每秒请求数

3.性能测试分类

性能自动化测试_第3张图片
基于协议的性能测试7大类:压力测试,负载测试,配置测试,基准测试,并发测试,容量测试。

1.压力测试

在一定的软硬件,网络条件下,模拟用户高并发(峰值负载),持续一段时间,检测系统的各项性能指标,关注峰值下的系统的性能表现。
目的:监测被测系统在峰值的运行情况(系统崩溃),给最坏情况的设计预案。
场景模型:门型场景
性能自动化测试_第4张图片

2.负载测试

在一定的软硬件,网络条件下,通过改变负载的方式,监测系统各项性能指标,得到系统在正常工作的情况下,系统的最大用户数,最佳用户数,定位系统的瓶颈。(施压但不会压死)
场景模型:拱形场景
性能自动化测试_第5张图片

3.配置测试

改变软硬件配置(架构配置,参数配置),观测不同的配置条件下的性能状态(比如:CPU,内存,服务器)
目的:找到最优的配置。

4.基准测试

在一定的软硬件,网络条件下,模拟单用户操作系统,监测系统各项性能指标。(一个用户的时候响应时间是否达标,再测多个用户)
目的:为后面深入的性能测试做一个数据对比。

5.并发测试

测试同一模块,同一应用在高并发的情况下,接口工作是否正常。
目的:主要是检查应用或者是接口在多用户情况下,是否存在缺陷(比如死锁)

6.容量测试

在一定的硬件,网络条件下,改变数据库的容量,模拟多用户,监测各项性能指标的过程
目的:寻找数据库的容量的极限值。

7.稳定性测试

主要强调长时间,正常负载情况下,观测系统各项指标的稳定性,不会出现致命的问题。
目的:检验系统长时间运行,系统的稳定性,是否有异常情况。

4.什么时候需要进行何种性能测试

  • 上新系统
    用户场景(大量用户,同时使用,某个时间段使用),基准测试,负载测试,压力测试,容量测试。

  • 系统扩容
    分析了解历史系统自身的性能表现,适当的扩容。基准测试,负载测试,压力测试,容量测试。

  • 系统优化
    针对已上线的系统越来越慢,对系统进行优化配置,提升性能表现。基准测试,配置测试。

  • 系统修复
    解决线上系统的并发死锁,内存泄漏等问题。并发测试

  • 秒杀/团购
    基准测试,负载测试,压力测试

在功能测试,接口测试都已经完成之后再做性能测试。

5.性能测试常见指标

业务指标:并发用户数,在线用户数,平均响应时间,事务成功率,超时错误率。

系统资源指标:数据库服务器,应用服务器,web服务器的CPU、内存、硬盘、外置存储、网络带宽的使用率。低于20%的使用率为资源空闲,20%~60%的使用率为资源使用稳定,60%-80%的使用率表示资源使用饱和,超过80%的资源使用率必须尽快进行资源调整和优化。

1.响应时间

Response Time 单位毫秒,秒,由网络时间,服务器处理时间,网络延迟三大部分组成。
响应时间构成= C1 + N1 + A1+ N2 + N3 + A2 + A3 + N4 + C2
性能自动化测试_第6张图片

2.吞吐量

Through output衡量系统的业务能力。
吞吐量为“单位时间内系统处理的客户请求的数量”。在容量规划的测试中,吞吐量是一个重量指标。
业务角度来看,单位可用请求数/秒,页面数/秒,人数/天或处理业务数/小时;
网络角度来看,单位可用字节/秒来衡量。
对于交互式应用来说,吞吐量反映的是服务器承受的压力,它能够说明系统的负载能力。

3.事务的处理能力

事务是分粒度的,可大可小,搜索商品就是一个小的事物,由一个请求组成,而购物这个事务则由浏览商品,加入购物车,付款等多个不同请求组成的。
TPS(Transaction per second):每秒事务数。TPS反映了系统在同一时间内能够处理业务的最大能力。
QPS(Query per second):每秒请求数
点击率与TPS最大的区别是:TPS体现的是服务器对客户端请求的处理能力;而点击率体现的是客户端对服务器的压力。

4.资源利用率

CPU,内存,网络,磁盘读写IO

(1)内存

  • 内存页交换速率(Paging Rate)
    如果该值偶尔走高,则表明当时有线程竞争内存。如果该值持续很高,则内存可能是瓶颈,也可能是内存访问命中率低。
  • Memory/Available Bytes
    Memory/Available Bytes计数器的值持续降低,同时Process/Private Bytes计数器和Process/Working Set计数器的值在长时间内持续升高,则很可能存在内存泄漏,需要更详细的内存监控工具来定位是否有内存泄漏和存在内存泄漏的代码。
  • 内存资源成为系统性能瓶颈的征兆
    很高的换页率;
    进程进入不活动状态;
    交换区所有磁盘的活动次数很高;
    很高的全局系统CPU利用率;
    内存不够出错。

(2)处理器

  • CPU占用率(CPU Utilization)
    如果该值持续超过95%,则表明瓶颈是CPU,可以考虑增加一个处理器或更换一个更快的处理器。一般可接受的最大上限是80%-85%,合理使用的范围在60%-70%以下。

  • System/Processor Queue Length
    如果System/Processor Queue Length>2,而处理器利用率(Processor Time)一直很低,则存在着处理器阻塞。

  • CPU资源成为系统性能瓶颈的征兆
    很慢的响应时间(slow response time);
    CPU空闲时间为零(zero percent idle CPU);
    过高的用户占用CPU时间(high percent user CPU);
    过高的系统占用CPU时间(high percent system CPU);
    长时间的有很长的运行进程队列(large run queue size sustained over time)

(3)磁盘I/O

  • 磁盘交换率(Disk Rate)
    如果该参数值一直很高,则表明I/O有问题。可考虑更换更快的硬盘系统。

  • Disk Time 和 Avg.Disk Queue Length
    当这两个值很高,而Page Reads/sec(页面读取操作速率)很低时,则可能存在磁盘瓶颈。

  • I/O资源成为系统性能瓶颈的征兆
    过高的磁盘利用率(high disk utilization);
    太长的磁盘等待队列(large disk queue length);
    等待磁盘I/O的时间所占的百分率太高(large percentage of time waiting for disk I/O);
    太长的运行进程队列,但CPU却空闲(large run queue with idle CPU);
    太高的物理I/O速率【large physical I/O rate (not sufficient in itself)】;
    过低的缓存命中率【low buffer cache hit ratio (not sufficient in itself)】;

(4)带宽

一般使用计数器Bytes Total/sec来度量,表示为发送和接收字节的速率,包括帧字符在内。减小网络带宽,并发一壶水,响应时间与事务通过率等性能指标是否不能接受,反之。
拐点分析法:找出资源利用率的最佳状态。

5.错误率

系统在负载情况下,失败请求的概率
错误率=(失败请求数/请求总数)* 100%
和功能测试的错误区别:在性能测试中,所谓的错误一般是指由系统超时引起的错误,不同的系统对错误率的容忍限度不同。

6.点击率

客户端每发送一个请求,服务器就处理一次,所以点击数是web应用处理交易的最小单位。点击率越大,对服务器的压力相对也越大。

性能测试常见的专业术语:集合点,关联,检查点(断言),用户数,PV(页面访问量),UV(独立用户访问量)。

6.性能测试流程

性能自动化测试_第7张图片
性能自动化测试_第8张图片

1.性能需求分析

(1)需求获取

  • 客户提出要求
    提到系统有多少,同时在线使用人数是多少,使用系统高峰时间等需求。

  • 开发相关文档

  • 历史数据(日志)
    运行中的日志:主要记录运行的一些信息,特别是一些异常错误日志信息;
    访问日志信息:它记录访问的时间,IP,访问的资料等相关信息。
    根据时间段做以下分析处理:
    独立IP数统计;
    访问请求数统计;
    访问资料文件数统计;
    访问流量统计;
    访问处理响应时间统计;
    统计所有404错误的页面;
    统计所有500错误的页面;
    统计访问最频繁的页面;
    统计访问处理时间最久的页面;
    统计并发访问频率最高的页面;

  • 相似项目性能需求

  • 业界公认标准
    响应时间2-5-8原则

2.测试执行

性能自动化测试_第9张图片

3.监控策略

  • 主机资源监控
评估指标 采集频率 指标说明
CPU资源 5秒 反映主机CPU健康状态
内存资源 5秒 反映主机内存健康状态
I/O资源 5秒 反映主机I/O健康状态

(1)CPU监控命令:vmstat 5 10(每隔5秒输出一次结果,共输出10次结果)
性能自动化测试_第10张图片

r:运行队列(就是说多少个进程真正分配到CPU)。如果运行队列过大,则表示CPU繁忙,一般会造成CPU使用率很高。
b:等待队列中的内核线程平均数。
swpd:虚拟内存已使用的大小,如果大于0,则表示机器的物理内存不足。如果不是程序内存泄漏的原因,那么就该升级内存或者把耗内存的任务迁移到其他机器。
free:空闲的物理内存的大小。
buff:缓冲区。
cache:高速缓存,是位于CPU于主内存间的一种容量较小但速度很高的存储器。
si:每秒从磁盘读入虚拟内存的大小。如果大于0,则表示机器的物理内存不足或者内存泄漏了,要查找耗内存进程解决掉。
so:每秒虚拟内存写入磁盘的大小。如果大于0,情况同上。
bi:块设备每秒接收的块数量。
bo:块设备每秒发送的块数量。例如读取文件,bo就要大于0。bi和bo一般都要接近0,否则就是I/O过于频繁,需要调整。
in:每秒CPU的中断次数,包括时间中断。
cs:每秒上下文切换次数。例如调用系统函数,就要进行上下文切换,如线程的切换,进程上下文切换等,这个值越小越好,太大了,就要考虑调低线程或者进程的数目。上下文切换次数过多表示CPU大部分浪费在上下文切换上,导致CPU没有被充分利用,这是不可取的。
us:用户CPU时间。
sy:系统CPU时间。如果该值太高,则表示系统调用时间长,可能是I/O操作频繁。
id:空闲CPU时间。一般来说,id+us+sy=100.
wa:等待I/OCPU时间。

(2)CPU密集程度命令:ps和top
ps -ef (获取最近使用CPU调试密集的用户进程)
性能自动化测试_第11张图片

c:进程近来使用CPU时间。
TIME:从进程启动以来使用CPU的总时间。(以分钟和,秒为单位)

ps au (分析CPU时间比值)
在这里插入图片描述

%CPU是从进程启动以来分配给该进程的CPU时间百分比。
%CPU=(进程CPU时间/进程持续时间)*100%

top (实时监控系统资源使用情况)
性能自动化测试_第12张图片
(3)监控内存最常用命令free,vmstat,top等
在这里插入图片描述

total:物理内存的总大小。
used:已使用的物理内存大小
free:空闲的物理内存大小
shared:多个进程共享的内存大小
buff/cached:磁盘缓存的大小
Mem:代表物理内存使用情况
Swap:表示交换空间内存使用情况。

vmstat -s或ps (查看内存使用的详细信息)
性能自动化测试_第13张图片

  • 中间件监控
评估指标 采集频率 指标说明
IHS端口连接数 1分钟 反映HTTP连接数
IHS httpd 进程数 1分钟 反映HTTP进程数
WAS APP SVR端口连接数 1分钟 反映APP SVR并发量
WAS APP SVR线程数 3分钟 反映APP SVR并发量
WAS APP SVR数据源连接池使用数 2分钟 反映JDBC连接池使用情况
WAS JVM Heap 平均大小 压力测试后统计 反映JVM内存使用率
WAS JVM GC 总次数 压力测试后统计 反映JVM内存健康度
WAS JVM GC 总时长 压力测试后统计 反映JVM内存健康度
WAS APP SVR 程序大对象 压力测试后统计 反映JVM内存健康度
  • 数据库监控
主机资源 测试期间,CPU,I/O,MEMORY资源是否形成瓶颈
SQL语句 AWR 中是否有问题SQL
TOP 5 TIMED EVENT AWR 中Top5等待事件中是否有异常等待事件

4.测试结果分析

  • 软件
    主要分析具体事务执行时间,尤其是并发用户部分,分析哪些事务执行慢,然后可以分析执行较慢的代码,针对网页可以分析具体的页面元素执行情况。

  • 服务器
    着重分析硬件的执行参数,如CPU,硬盘,内存,中断等情况,尤其要注意对这些参数进行综合分析,因为各个参数之间往往会互相影响。

  • 网络
    网络性能分析要结合服务器和测试目标软件,通常网络传输慢会有软件和服务器方面的原因,甚至有时候会有客户端方面的原因。

7.性能测试工具Jmeter

  • Loadrunner
    优点:底层是C语言实现,能够支持大用户量并发,支持的协议类型很多,测试报告数据丰富,内容详实。
    缺点:费用昂贵,安装较复杂,安装包大,不支持定制
  • Jmeter(目前主流)
    优点:免费,开源,小巧,丰富学习资料及扩展组件,应用广泛,易上手
    缺点:分析和报表没有LR精准

1.Jmeter下载安装

1. JDK下载配置

官网下载:https://www.oracle.com/java/technologies/downloads/#jdk17-windows性能自动化测试_第14张图片
双击安装,点击下一步,记住安装的地址,其他操作按指示傻瓜式点击
性能自动化测试_第15张图片
配置环境变量
变量:JAVA_HOME C:\Program Files\Java\jdk-17.0.5
path:%JAVA_HOME%\bin在这里插入图片描述
cmd中输入命令:java -version 验证JDK安装成功

2.Jmeter下载安装

官网下载:https://jmeter.apache.org/download_jmeter.cgi
性能自动化测试_第16张图片
下载解压即可,无须安装
性能自动化测试_第17张图片

3.Jmeter目录结构

bin目录:存放可执行文件和配置文件
jmeter.bat:windows的启动文件
jmeter.log:日志文件
jmeter.sh:linux的启动文件
jmeter.properties:系统配置文件
jmeter-server.bat:windows分布式测试要用到的服务器
jmeter-serve:linux分布式测试要用到的服务器配置
看不到后缀名的解决办法:
性能自动化测试_第18张图片

docs和extras目录:主要存放jmeter的API帮助文档

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

  • Jmeter基本配置
    jmeter.properties文件里面修改配置:
language=zh_CN    # 修改成中文
sampleresult.default.encoding=UTF-8  # 编码修改成UTF-8
server.rmi.ssl.disable=true # 电脑中没有安装 SSL,JMeter 在第一次打开报错的话可修改这项
CookieManager.save.cookies=true # 模拟含 Cookie 的 HTTP 请求,可修改这项

2.Jmeter使用流程

1.基础操作

(1)双击jmeter.bat打开
在这里插入图片描述
(2)右键【测试计划】添加【线程组】
在这里插入图片描述

(3)右键【线程组】添加【HTTP请求】
在这里插入图片描述
(4)【HTTP】请求填写相关请求数据
性能自动化测试_第19张图片
(5)右键【线程组】添加【察看结构树】
在这里插入图片描述
(6)点击运行,在【查看结果树】看结果
性能自动化测试_第20张图片

2.常用元件介绍

性能自动化测试_第21张图片

元件 含义
取样器 往服务器发送请求,类似于自动化脚本中的发送请求。
前置处理器 对要发送的请求进行预处理,类似于自动化脚本中的参数化。
后置处理器 对收到的服务器的响应数据进行处理,类似于自动化脚本中获取响应中特定字符的操作。
断言 将收到的响应结果于预期结果做对比,与自动化测试中的断言一致。
定时器 等待一段时间,类似于自动化测试脚本中的sleep。
测试片段 封装基本功能的代码块,不单独执行,需要脚本进行调用,类似于自动化中封装的函数。
配置元件 进行测试环境和测试数据的初始化,类似自动化脚本中的setup。
监听器 查看测试脚本运行的结果和日志,类似于自动化测试脚本中的测试报告。

线程组:用户模拟多线程,一个线程代表一个测试用户。

  • 线程组的特点

设定线程数(模拟多人操作)
性能自动化测试_第22张图片

取样器(请求)和逻辑控制器必须依赖线程组才能使用
线程组可以添加多个,多个线程组可以并行或串行
性能自动化测试_第23张图片

线程组下可以添加其他元件组件

  • 线程的分类
    性能自动化测试_第24张图片
    线程组:看做一个虚拟用户组
    setUp线程组:用于执行预测试操作,一定是先执行的
    tearDown线程组:用于执行测试后工作,一定是最后执行的。

3.元件作用域的原则

(1)在Jmeter中,元件的作用域是根据测试计划的树形结构中元件的父子关系来确定的。
性能自动化测试_第25张图片

(2)元件中取样器是核心,其他组件都是以取样器为核心运行的,组件添加的位置不同,生效的取样器也不同。
(3)取样器都是一个独立的请求,不和其他元件相互作用,因此不存在作用域。
(4)逻辑控制器只对其子节点中的取样器和逻辑控制器作用
(5)其他六大元件,除取样器和逻辑控制器元件外,如果是某个取样器的子节点,则该元件对其父节点起作用;如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)。

4.元件执行顺序

(1)配置元件(相当于自动化测试中的初始化)
(2)前置处理器
(3)定时器
(4)取样器
(5)后置处理器
(6)断言
(7)监听器

注意:
1.jmeter元件执行顺序跟自动化脚本执行顺序差不多,可以按照自动化脚本的运行顺序来记忆。
2.前置处理器,后置处理器,断言等元件功能只对取样器起作用(如果在它们的作用域内没有任何取样器,则不会被执行)。
3.如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行。

5.发送HTTP请求

  • 添加HTTP请求默认值

一个线程下有多个HTTP请求,请求的web服务器内容是一样的,避免每创建一个HTTP请求,就重复填写web服务器信息,可添加HTTP请求默认值。
取值的顺序:HTTP请求本身设置的值,HTTP请求下的HTTP请求默认值设置的值,线程组下的HTTP请求默认值设置的值。
性能自动化测试_第26张图片
性能自动化测试_第27张图片
HTTP只用填写下面的路径
性能自动化测试_第28张图片

  • post请求头
    content-type:application/x-www-form-urlencoded不需要单独设置请求头
    content-type:application/json需要单独设置请求头
    在这里插入图片描述
    入参需要提交文件,请求头content-type:multipart/form-data
    性能自动化测试_第29张图片
  • cookie管理器
    cookie管理器专门用于管理客户端的cookie信息,一般用于需要登录的场景保持与服务器端的会话,如果不设置该管理器,则无法在jmeter中保持会话。

性能自动化测试_第30张图片

6.录制脚本操作

(1)【测试计划】右键添加HTTP代理服务器
性能自动化测试_第31张图片
(2)确认HTTP代理服务器端口未被占用
性能自动化测试_第32张图片
cmd中输入命令:netstat -ano | findstr 8888查看端口是否被占用,如果被占用了,可随便修改HTTP代理服务器端口。
(3)设置HTTP代理服务器
性能自动化测试_第33张图片
性能自动化测试_第34张图片
(4)浏览器设置代理
设置-》高级-》打开您计算机的代理设置
性能自动化测试_第35张图片
(5)点击HTTP代理服务器中的启动,弹出的窗口提示点是。然后开始去系统页面操作,Jmeter会记录下系统中的请求。

性能自动化测试_第36张图片
(6)录制完成,点击停止,将浏览器的代理关掉,这样才能使用浏览器访问其他网页。

7.参数化测试

如果需要循环访问一个请求10次,要求每次请求发送不同的参数值,这个时候需要参数化测试,常用的有用户定义变量和csv方法。

  • 用户定义变量
    适用数据比较少的。
    优点:所有要用到该值的地方统一使用一个变量,便于维护。
    缺点:多个用户也只能取一个值,无法让多个用户使用多个值。
    使用变量的时候用${变量名}
    性能自动化测试_第37张图片
  • csv文件
    创建一个csv文件
    性能自动化测试_第38张图片
    添加CSV数据文件设置
    在这里插入图片描述
    性能自动化测试_第39张图片
    建HTTP请求
    性能自动化测试_第40张图片修改线程组的线程数

性能自动化测试_第41张图片

8.断言

  • Xpath断言
    主要用于HTML格式的响应断言
    性能自动化测试_第42张图片
    验证登录是否成功性能自动化测试_第43张图片

  • Json断言
    主要用于Json格式的响应断言,断言非Json格式会失败。
    性能自动化测试_第44张图片
    性能自动化测试_第45张图片

  • 持续时间断言
    主要用于断言请求的响应时间是否在设定的时间范围内
    性能自动化测试_第46张图片
    设置响应的时间
    性能自动化测试_第47张图片

9.Jmeter中的关联

关联主要用于解决性能测试中多个接口之间的依赖关系,一般我们可以通过jmeter的后置处理器进行提取。

  • 正则表达式提取器

性能自动化测试_第48张图片
情景一:正则表达式提取器提取一个值
提取HTTP请求1响应内容的title,将title作为HTTP请求2的参数
性能自动化测试_第49张图片
情景二:正则表达式提取器提取多个值,需要添加调试取样器查看多个值的变量名
提取HTTP请求1响应内容的校区,返回很多值,选其中一个值作为HTTP请求2的参数
在这里插入图片描述
性能自动化测试_第50张图片
性能自动化测试_第51张图片

  • Xpath提取器
    性能自动化测试_第52张图片
    性能自动化测试_第53张图片

  • JSON提取器(类似JSON断言)
    性能自动化测试_第54张图片

10.beanshell应用

beanshell是一个小型,免费,可嵌入的Java源代码解释器,具有用java编写的对象脚本语言功能。
常见的beanshell组件:
BeanShell Timer(定时器)
BeanShell PreProcessor(前置处理器)
BeanShell Sampler(采样器)
BeanShell PostProcessor(后置处理器)
BeanShell Assertion(断言)
BeanShell Listener(监听器)

性能自动化测试_第55张图片
性能自动化测试_第56张图片

11.Jmeter连接数据库操作

  • 下载数据库连接驱动包

  • 将数据库驱动包放置到Jmeter安装路径的lib目录下
    性能自动化测试_第57张图片

  • 重启Jmeter
    在测试计划或线程组内添加JDBC Connection Configuration并配置连接属性
    在这里插入图片描述
    性能自动化测试_第58张图片

  • 添加JDBC request
    在这里插入图片描述
    性能自动化测试_第59张图片

12.逻辑控制器

  • if控制器
    用来控制它下面的测试元素是否运行
    例如:定义一个“用户定义的变量“name,当name等于百度,执行百度请求,当name等于qq,执行qq请求。
    性能自动化测试_第60张图片性能自动化测试_第61张图片

  • 事务控制器
    Jmeter默认把每一个请求都统计成一个事务,但有时候我们根据业务需求,会把多个操作系统计成一个事务,Jmeter通过事务控制器来完成,整个事务中所有请求都成功了事务才算成功,否则结果就是失败。
    例如:事务控制器下面创建多个HTTP请求
    性能自动化测试_第62张图片
    性能自动化测试_第63张图片
    性能自动化测试_第64张图片

13.定时器

  • 同步定时器(相当于集合点)

添加方式:测试计划-》线程组-》HTTP请求-》右键添加定时器-》Synchronizing Timer
相当于一个储蓄池,累积一定的请求,当在规定的时间内达到一定的线程数量,这些线程会在同一个时间点一起并发,所以可以用来做大数据量的并发请求。
例如:模拟1000个用户同时访问QQ首页,统计高并发情况下平均响应时间以及错误率。

性能自动化测试_第65张图片
性能自动化测试_第66张图片
在这里插入图片描述
当同步定时器的模拟用户组数量无法被线程数量整除时,则剩余线程将一直处于挂起状态无法执行。
性能自动化测试_第67张图片
同步定时器的超时时间设置不能短语线程Ramp-up的时间,否则一直都无法达到模拟用户组数量,导致无法形成并发的效果。超时时间设置为0,默认是没有超时时间的。

  • 常数吞吐量定时器
    常数吞吐量定时器可以让Jmeter以指定数字的吞吐量(以每分钟的样本数为单位,而不是每秒)执行,通常用于负载测试,压力测试等。吞吐量计算的范围可以为指定当前线程,当前线程组,所有线程组。
    性能自动化测试_第68张图片

14.Jmeter分布式测试

在使用Jmeter进行性能测试时,如果并发数比较大(比如项目需要支持10000并发),单台电脑的(CPU和内存)可能无法支持,这时就可以使用Jmeter提供的分布式测试的功能。

15.生成Jmeter报告

在进行压测的时候不要使用界面来执行,界面会占用资源,一般是在Linux上运行的
先配置jmeter环境变量:
新增变量JMETER_HOME jmeter路径
Path里面加上%JMETER_HOME%\bin
测试计划存放路径下打开cmd
生成报告的命令:jmeter -n -t 测试计划名 -l http.jtl -e -o report

-n 以非GUI形式运行Jmeter
-t jmx脚本路径
-l 运行结果保存路径(.jtl),此文件必须不存在,路径+文件名
-e 在脚本运行结束后生成html报告
-o 用于存放html报告的目录,只能是一个空目录

如果已经有之前运行报告命令生成的jtl文件,也可以直接使用jtl文件生成报告。
执行命令:jmeter -g 测试计划名 -o report

你可能感兴趣的:(软件测试,测试工具)