性能自动化测试

2023-10-27

性能自动化测试

1.为什么要做性能测试

在这里插入图片描述

2.什么是性能测试

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

3.性能测试分类

在这里插入图片描述
基于协议的性能测试7大类:压力测试,负载测试,配置测试,基准测试,并发测试,容量测试。

1.压力测试

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

2.负载测试

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

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
在这里插入图片描述

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.性能测试流程

在这里插入图片描述
在这里插入图片描述

1.性能需求分析

(1)需求获取

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

  • 开发相关文档

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

  • 相似项目性能需求

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

2.测试执行

在这里插入图片描述

3.监控策略

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

(1)CPU监控命令:vmstat 5 10(每隔5秒输出一次结果,共输出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调试密集的用户进程)
在这里插入图片描述

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

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

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

top (实时监控系统资源使用情况)
在这里插入图片描述
(3)监控内存最常用命令free,vmstat,top等
在这里插入图片描述

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

vmstat -s或ps (查看内存使用的详细信息)
在这里插入图片描述

  • 中间件监控
评估指标 采集频率 指标说明
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在这里插入图片描述
双击安装,点击下一步,记住安装的地址,其他操作按指示傻瓜式点击
在这里插入图片描述
配置环境变量
变量: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
在这里插入图片描述
下载解压即可,无须安装
在这里插入图片描述

3.Jmeter目录结构

bin目录:存放可执行文件和配置文件
jmeter.bat:windows的启动文件
jmeter.log:日志文件
jmeter.sh:linux的启动文件
jmeter.properties:系统配置文件
jmeter-server.bat:windows分布式测试要用到的服务器
jmeter-serve:linux分布式测试要用到的服务器配置
看不到后缀名的解决办法:
在这里插入图片描述

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】请求填写相关请求数据
在这里插入图片描述
(5)右键【线程组】添加【察看结构树】
在这里插入图片描述
(6)点击运行,在【查看结果树】看结果
在这里插入图片描述

2.常用元件介绍

在这里插入图片描述

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

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

  • 线程组的特点
    设定线程数(模拟多人操作)
    在这里插入图片描述
字段 含义
线程数 线程数是产生 TPS 的,而一个线程产生多少 TPS,取决于系统的响应时间有多快。所以我们用 TPS 这个概念来承载系统的负载能力,而不是用这里的线程数。
Ramp-up 递增时间,以秒为单位。指的就是上面配置的线程数将在多长时间内会全部递增完。如果我们配置了 100 线程,这里配置为 10 秒,那么就是 100/(10s*1000ms)=1 线程 /100ms
循环次数 指的是一个线程中脚本迭代的次数。这里你需要注意,这个值和后面的 调度器 有一个判断关系
延迟创建线程直到需要 有一个默认的知识点,那就是 JMeter 所有的线程是一开始就创建完成的,只是递增的时候会按照上面的规则递增。如果选择了这个选项,则不会在一开始创建所有线程,只有在需要时才会创建。
持续时间(秒) 如果循环次数不是永远或-1,线程持续时间是min(持续时间(秒),循环次数X响应时间)。比如循环次数是100,响应时间0.1秒,持续时间(秒)设置100秒,线程会以min(100,100X0.1)=10秒为结束点

延迟创建线程直到需要:
如果不选择,在启动场景时,JMeter 会用更多的 CPU 来创建线程,它会影响前面的一些请求的响应时间,因为压力机的 CPU 在做其他事情嘛。如果选择了的话,就会在使用时再创建,CPU 消耗会平均一些,但是这时会有另一个隐患,就是会稍微影响正在跑的线程。这个选项,选择与否,取决于压力机在执行过程中,它能产生多大的影响。如果你的线程数很多,一旦启动,压力机的 CPU 都被消耗在创建线程上了,那就可以考虑选择它,否则,可以不选择。

取样器(请求)和逻辑控制器必须依赖线程组才能使用
线程组可以添加多个,多个线程组可以并行或串行
在这里插入图片描述

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

  • 线程的分类
    在这里插入图片描述
    线程组:看做一个虚拟用户组
    setUp线程组:用于执行预测试操作,一定是先执行的
    tearDown线程组:用于执行测试后工作,一定是最后执行的。

3.元件作用域的原则

(1)在Jmeter中,元件的作用域是根据测试计划的树形结构中元件的父子关系来确定的。
在这里插入图片描述

(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请求默认值设置的值。
在这里插入图片描述
在这里插入图片描述
HTTP只用填写下面的路径
在这里插入图片描述

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

在这里插入图片描述
一定要选择 compatibility,以兼容不同的 cookie 策略。

6.发送TCP请求

首先创建 TCP Sampler。右键点击 Thread Group - Add - Sampler - TCP Sampler 即可创建。
在这里插入图片描述
输入配置和要发送的信息:IP 地址和端口是必须要输入的
在这里插入图片描述

7.录制脚本操作

(1)【测试计划】右键添加HTTP代理服务器
在这里插入图片描述
(2)确认HTTP代理服务器端口未被占用
在这里插入图片描述

cmd中输入命令:netstat -ano | findstr 8888查看端口是否被占用,如果被占用了,可随便修改HTTP代理服务器端口。
(3)设置HTTP代理服务器
在这里插入图片描述

字段 含义
目标控制器 这里指定录制出的脚本要放到哪里去。如果你想把不同的脚本放到不同的线程组中去,在录制的时候就可以拆分开。
分组 这个分组功能很实用。但是如何分组就和具体的目标相关了
Naming scheme:Prefix 请求名的前缀
Create new transaction after request(ms) 一个请求完成之后,如果下一个请求超出了这里设置的时间间隔,就创建一个新的事务。

在这里插入图片描述
包含模式、排除模式:通常会写一些正则表达式

.*
.*.png
.*.gif
.*.jpg
.*.php
.*.jsp
.*.html
.*.htm
.*.js
..(js|css|PNG|jpg|ico|png|gif).

(4)浏览器设置代理
设置-》高级-》打开您计算机的代理设置
在这里插入图片描述

注意:这里的代理设置地址,是在需要访问的客户机上。这个客户机,不一定是压力机所在的机器。也应该设置的是代理服务所在的主机 IP。

你要设置为录制 HTTPS,浏览器代理要把 Secure Web Proxy(HTTPS) 选择上,同时填上相应的代理 IP 和端口,还想要下载HTTPS证书。

(5)点击HTTP代理服务器中的启动,弹出的窗口提示点是。然后开始去系统页面操作,Jmeter会记录下系统中的请求。

在这里插入图片描述
(6)录制完成,点击停止,将浏览器的代理关掉,这样才能使用浏览器访问其他网页。

8.参数化测试

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

  • 用户定义变量
    适用数据比较少的。
    优点:所有要用到该值的地方统一使用一个变量,便于维护。
    缺点:多个用户也只能取一个值,无法让多个用户使用多个值。
    使用变量的时候用${变量名}
    在这里插入图片描述
  • csv文件
    创建一个csv文件
    在这里插入图片描述
    添加CSV数据文件设置
    在这里插入图片描述
    在这里插入图片描述
字段 含义
是否允许带引号? 如果有引号,这个选择必须是 True。
遇到文件结束符再次循环 False 是指在没有参数的时候不循环使用;True 是指在没有参数的时候循环使用。Edit 是指在没有参数的时候会根据定义的内容来调用函数或变量。
遇到文件结束符停止线程 同上
线程共享模式 All threads(参数是在所有线程中生效)、Current thread group(在当前线程组生效)、Current thread(还是在当前线程中生效)、Edit。

建HTTP请求
在这里插入图片描述修改线程组的线程数

在这里插入图片描述

9.断言

  • Xpath断言
    主要用于HTML格式的响应断言
    在这里插入图片描述
    验证登录是否成功在这里插入图片描述

  • Json断言
    主要用于Json格式的响应断言,断言非Json格式会失败。
    在这里插入图片描述
    在这里插入图片描述

  • 持续时间断言
    主要用于断言请求的响应时间是否在设定的时间范围内
    在这里插入图片描述
    设置响应的时间
    在这里插入图片描述

10.Jmeter中的关联

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

  • 正则表达式提取器

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

  • Xpath提取器
    在这里插入图片描述
    在这里插入图片描述

  • JSON提取器(类似JSON断言)
    在这里插入图片描述

11.beanshell应用

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

在这里插入图片描述
在这里插入图片描述

12.Jmeter连接数据库操作

  • 下载数据库连接驱动包

  • 将数据库驱动包放置到Jmeter安装路径的lib目录下
    在这里插入图片描述

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

  • 添加JDBC request
    在这里插入图片描述
    在这里插入图片描述

13.逻辑控制器

  • if控制器
    用来控制它下面的测试元素是否运行
    例如:定义一个“用户定义的变量“name,当name等于百度,执行百度请求,当name等于qq,执行qq请求。
    在这里插入图片描述在这里插入图片描述

  • 事务控制器
    Jmeter默认把每一个请求都统计成一个事务,但有时候我们根据业务需求,会把多个操作系统计成一个事务,Jmeter通过事务控制器来完成,整个事务中所有请求都成功了事务才算成功,否则结果就是失败。
    例如:事务控制器下面创建多个HTTP请求
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

14.定时器

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

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

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

  • 常数吞吐量定时器
    常数吞吐量定时器可以让Jmeter以指定数字的吞吐量(以每分钟的样本数为单位,而不是每秒)执行,通常用于负载测试,压力测试等。吞吐量计算的范围可以为指定当前线程,当前线程组,所有线程组。
    在这里插入图片描述

15.Jmeter分布式测试

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

16.生成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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

性能自动化测试 的相关文章

  • 软件测试/测试开发/全日制/测试管理丨Python关键字

    Python 语言有一些关键字 它们具有特殊的含义 不能被用作标识符 变量名 函数名等 False 布尔类型的假值 None 表示一个空对象或无值 True 布尔类型的真值 and 逻辑与操作符 as 用于给导入的模块起别名 assert
  • codeblock使用技巧

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 步骤详图 教你在linux搭建容器环境

    警告 切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker 1 准备工作 系统要求 要安装Docker CE 社区版 操作系统的最低要求是CentOS7 7以下版本都不被支持 卸载旧版本 Docker改版
  • 基于Loadrunner的性能分析及调优经验分享

    公司某个系统的微信端计划将开放给几百上千的人员登录查询 并且登录账号为同一账号多人使用 后台服务能够支撑起多用户的并发操作以及成百上千人登录微信端对生产数据库或者登录查询的性能效率高成为交付可靠生产环境的必要条件 因此 项目组决定提交测试
  • 新入职一个00后卷王,每天加班到2点,太让人崩溃了····

    在程序员职场上 什么样的人最让人反感呢 是技术不好的人吗 并不是 技术不好的同事 我们可以帮他 是技术太强的人吗 也不是 技术很强的同事 可遇不可求 向他学习还来不及呢 真正让人反感的 是技术平平 却急于表现自己的人 每天加班到12点 在老
  • 软件测试|使用matplotlib绘制多种折线图

    简介 在数据可视化领域 Matplotlib是一款非常强大的Python库 它可以用于绘制各种类型的图表 包括折线图 本文将介绍如何使用Matplotlib创建多种不同类型的折线图 并提供示例代码 创建模版 在绘图之前 我们可以先创建我们的
  • 软件测试|Selenium StaleElementReferenceException 异常分析与解决

    简介 Selenium 是一个流行的自动化测试工具 用于模拟用户与网页交互 然而 当我们在使用 Selenium 时 可能会遇到一个常见的异常 即 StaleElementReferenceException 这个异常通常在我们尝试与网页上
  • 软件测试|使用matplotlib绘制平行坐标系图

    简介 绘制平行坐标系图 Parallel Coordinates Plot 是一种用于可视化多维数据的强大方法 在这篇文章中 我们将介绍如何使用Matplotlib库创建平行坐标系图 以及如何解释和定制这种图表 我们将使用一个示例数据集来演
  • 软件测试|Pydantic处理时间类型数据

    简介 我们之前介绍过使用 pydantic 验证数据 比如校验数据的格式等 但是在我们的日常工作中 还有一种数据是需要我们验证的 比如时间数据 时间数据不同于字符串 列表等数据 与他们的验证不一样 本文就来为大家介绍一下 pydantic
  • 软件测试|pycharm关联GitHub的详细步骤

    简介 GitHub 是全球最大的开源代码托管平台之一 而 PyCharm 是一款强大的 Python 集成开发环境 将两者结合使用 可以提高团队协作和代码管理的效率 本文将详细介绍如何在 PyCharm 中管理 GitHub 账号 包括如何
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 如何写好一个错误报告

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Jmeter 性能-阶梯负载最终请求数

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 摸爬滚打多年的打工人,总结了三条职场真理,绝不假大空!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 月薪2W的软件测试工程师,到底是做什么的?

    在生活中 我们常常会遇到以下几种窘迫时刻 准备骑共享单车出行 却发现扫码开锁半天 车子都没有反应 手机导航打车 却发现地图定位偏差很大 司机总是跑错地方 买个水 却遭遇自动售货机吐币 或者不找零钱 好不容易休息打个游戏 却一直出现卡顿 闪退
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 软件测试/测试开发/全日制/测试管理丨Android WebView 技术原理

    Android WebView是一个内置的组件 允许在Android应用中嵌套显示Web内容 Android WebView的技术原理涉及到使用WebKit引擎来渲染Web内容 并提供一系列API和回调函数 使得开发人员可以控制和定制Web
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关
  • Airtest自动化测试工具

    一开始知道Airtest大概是在年初的时候 当时 看了一下官方的文档 大概是类似Sikuli的一个工具 主要用来做游戏自动化的 通过截图的方式用来解决游戏自动化测试的难题 最近 移动端测试的同事尝试用它的poco库来做自动化 看样子还不错
  • 软件测试面试:还没有自动化测试项目经验,3个项目帮你走入软测职场!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自

随机推荐

  • Java导出压缩包zip文件

    需要导出一些图片和一个文本 一起放到zip压缩包中 GetMapping downloadZip public void downloadZip HttpServletResponse response throws IOException
  • 解决ffmpeg视频转码后视频清晰度下降的问题

    清晰度 Chrome不支持非h264编码的mp4视频播放 可通过ffmpeg将视频转码成h264编码 ffmpeg i input mp4 vcodec h264 b v 0 output mp4 注 如果不加参数 b v 0 会有精度损失
  • Flutter Text控件在不同手机上不居中的问题

    在最近flutter页面改造过程中 发现通过Contail包裹Text控件设置上下padding时 在华为魅族和vivo等手机上并没有居中展示 所以通过查看控件属性 得以解决此类问题 可以看到上面的在华为手机上明显偏下了 使用 Contai
  • 找出一批正整数中的最大偶数_c语言求一批正整数的奇数和-求奇数和输入一批正整数c语言程序-找出一批正整数中最大的偶数c语言...

    include stdio h int main int a 10 i j k printf 输入10个整数 n for i k 0 i lt 10 i scanf d a k for j 0 j if a k a j k k printf
  • [疯狂Java]面向对象:单例模式

    1 单例模式的应用 1 单例类就是指该类最多只能创建一个对象 不能创建超过一个的对象 2 这样做的原因 要么就是为了降低系统开销 要么这种类型的对象创建了多个没有任何意义 最多只需要一个就行 例如窗口管理器 假脱机打印设备 数据库引擎访问结
  • TCP传输过程详解——三次握手、四次挥手

    TCP 3 1 三次握手 重点 3 2 四次挥手 重点 3 3 通过序列号与确认应答提高可靠性 3 4 重发超时的确定 3 5 以段为单位发送数据 3 6 利用窗口控制提高速度 3 7 滑动窗口控制 3 8 窗口控制中的重发控制 TCP T
  • ICCV19 (Oral)

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 本文作者 洪晓鹏 https zhuanlan zhihu com p 127956794 本文已由原作者授权 不得擅自二次转载 Zhiheng Ma Xing Wei
  • 苹果发布iOS16正式版,各机型升级建议

    文章目录 前言 升级注意事项 iOS 16增加了哪些功能 1 锁屏界面大改动 2 全新专注模式 3 查看Wi Fi密码 4面容ID横屏解锁 5 电量百分比 6 支持任天堂Switch手柄 7 键盘输入震动 8 隐藏相册支持加密 9 清理重复
  • Linux 信号(三) —— 强大的sigaction

    在Linux中 对于信号的收发有着两组函数 1 入门版 发送函数 int kill pid t pid int sig 接收函数 sighandler t signal int signum sighandler t handler 这组函
  • MyBatis进阶版

    本文有点难 目录 1 一些区分 1 1参数占位符 和 1 1 1SQL注入 1 1 2like查询 1 2resultType和resultMap 2 映射查询 2 1一对一表映射 2 2一对多表映射 3 动态SQL 3 1标签 3 2标签
  • esp32使用fft算法显示音乐频谱

    演示参考下方视频 源码链接在视频末尾获取 点击查看视频 介绍 本项目使用esp32s3 ifd4 2 声音传感器以及tft显示屏构成 使用快速傅里叶变换算法处理采集到的音频数据 fft处理后的数据使用lvgl显示在tft屏幕上 电路图 源码
  • SpringBoot MongoDB批量删除指定日期前的文件

    SpringBoot MongoDB批量删除指定日期前的文件 Query query new Query LocalDateTime localDateTime LocalDateTime of 2021 6 1 0 0 0 query a
  • 《动手学深度学习 Pytorch版》 2.1 数据操作

    2 1 1 数据操作 注意此处 import 的不是 pytorch 而是 torch Torch 是采用 lua 语言实现的 从某种程度上说 PyTorch 是 Torch 的 Python 版本 当然还是有部分差别的 import to
  • python学生分布_python统计函数库scipy.stats的用法解析

    背景 总结统计工作中几个常用用法在python统计函数库scipy stats的使用范例 正态分布 以正态分布的常见需求为例了解scipy stats的基本使用方法 1 生成服从指定分布的随机数 norm rvs通过loc和scale参数可
  • CDUA 图形学 Texture Reference 实验

    下面是对Texture Reference的实验 代码改自 CUDA C PROGRAMMING GUIDE PG 02829 001 v10 0 October 2018 p54 因为这里比较贴近计算机图形学 故移到图形学中去 版权所有
  • Java基础面试题一:请说说抽象类和接口的区别?

    1 抽象类实例 abstract class person public String name 可以有普通成员变量 public static String sex 可以有静态成员变量 public static void eat 可以有
  • 用GDB跟踪观察共享库函数的地址翻译过程

    用GDB跟踪观察共享库函数的地址翻译过程 用GDB观察共享库函数的翻译过程 研究了一下共享库函数是怎样加载到当前进程中的 开始共享库函数地址放在GOT中 第一次调用时 ld将其翻译成函数在程序空间的真实地址 用GDB跟踪了一下整个过程 记录
  • 宋浩概率论笔记(二)随机变量

    本章节内容较多 是概率论与数理统计中最为重要的章节 对于概率密度和分布函数的理解与计算要牢牢掌握 才能在后期的学习中更得心应手
  • 安装docker后启动报错Failed to set version to docker-desktop: exit code: -1

    背景 我想用PC Windows 上的VS code连接远程服务器 Linux 内的docker容器 这样能用编辑器editor修改文件 更加方便 VS code的插件remote container能达到这一目的 按照它的指示guide
  • 性能自动化测试

    性能自动化测试 1 为什么要做性能测试 2 什么是性能测试 3 性能测试分类 1 压力测试 2 负载测试 3 配置测试 4 基准测试 5 并发测试 6 容量测试 7 稳定性测试 4 什么时候需要进行何种性能测试 5 性能测试常见指标 1 响