【性能测试_01课_性能测试理论筑基】

发布于:2024-04-24 ⋅ 阅读:(24) ⋅ 点赞:(0)

课程安排,每周二周四,共3周-6节课

预计4个阶段,到微服务。第二阶段是调优

需要做虚拟机搭建

一、性能测试和功能测试的区别

1、功能测试:是一个非黑即白的过程。是和非。测不到更深层的东西,有些bug无法通过肉眼去发现和校验。需要使用工具(postman请求、抓包、代理)

测一辆汽车:是否存在这个功能,能不能正常使用。

2、性能测试:看一个东西好不好用。最重要的是:找到这个程序的极限值。找极限的目的:保证系统上线后能正常运行,不会遇到突发情况导致崩溃,而造成经济损失。只要找到了极限值,就可以做预警机制。

测一辆汽车:噪音大不大,百公里加速多少。

二、可能影响性能的因素:

开发的代码属于工业化的代码

cpu执行代码,内存存储数据。线程多,CPU处理起来慢

CPU:核心执行器。计算机的大脑

3、请求的处理过程

执行的代码,通过线程,运行到CPU,由CPU执行所有的脚本代码。(线程就相当于卡车的概念)

code是代码

 请求的线程多的时候

4、一个http请求的过程

1个线程,占用内存资源,会小于等于1兆

通过URL的后缀,服务器判断应该执行什么函数(在controller层),所有这个后缀的请求,都执行这个函数。

例如:queryByPage

请求的线程多的时候

 CPU处理不过来(把CPU看作银行的办理窗口)

 性能测试的流程

浏览器发起一个网络请求,网络请求会占用网络资源,先通过网卡,请求后端的程序,程序执行占用内存,内存创建线程,线程请求CPU,CPU做对线程的处理,把数据存储到磁盘(永久化存储)

 三、性能测试的指标

1、响应时间

一个请求完成的时间:等待时间(不可控)+处理时间(可控) 

一个程序的性能越好,等待时间越短。这样就会越好。而等待时间受处理时间影响,处理时间越快,等待时间可能越少。处理时间越慢,等待时间一定会越长。

当程序的某个接口处理时间、响应时间较长时,就需要优化它。

1.1)网页响应的时间,是该页面上嵌套的多个页面(模块)的资源响应时间的累计。

1.2)接口响应的时间:就是一个完整接收响应的时长。

2、并发量

相对并发:一段时间内向服务器,发出请求的并发(人的操作,会有间隔)--相对并发没啥压力

绝对并发:一个时间点,服务器收到的请求数量----绝对并发压力大

用户,关注:页面响应时间和接口响应时间。因为这个是性能的结果---好用不好用的结果

3、资源占用率

资源占用率:程序运行的角度一个用户请求过来,对服务器资源占用多少

老板,关注资源占用率,

4、吞吐量: 

Jmeter只统计吞吐量,不统计QPS和TPS---面试题

1)QPS:每秒查询率(Query  Per Second),不涉及数据变化的操作

2)TPS:每秒事务处理数(Transactions Per Second),涉及数据变更的操作

表现形式:数字/s,表示程序处理能力的综合体现(每秒处理多少事务的能力),数字越大越好

3)上面是QPS和TPS是事后统计出来的

4)得用(或者模拟)和生产服务器,配置一模一样的服务器进行压测。所以压测前,需要问研发或者测试负责人,明确使用什么样的配置进行性能测试

16核是啥意思

吞吐量例子:

例子1:

银行大厅:处理请求

两个窗口接待客户,1个窗口每接待一个客户需要15分钟

一次来了10个人(两个窗口同时分别接待1个人,这就是并发)2个去办理业务,8个人等待。

15分钟后两个人办理完毕走了,此时(吞吐量)就是2

当吞吐量过低时:10分钟又来了10个人,越来越多挤满所有的空间



例子2:

银行大厅:处理请求

10个窗口接待客户,1个窗口每接待一个客户需要15分钟

上午来了两个人吞吐量最多是2,并发量是2

下午来了四个人吞吐量最多是4,并发量是4


吞吐量有一个上限,但是一旦请求数量不够,我们无法正确获得吞吐量.所以此时需要通过加并发来加压

慢慢获得一个对应的吞吐量

四、正常的平台

1:45:16开始讲实际的项目部署和JMeter

jmeter不需要玩很深,会简单使用就行

性能测试的手法很简单,只要能调通接口,就能开展性能测试

四、Jmeter的基础使用

1、创建测试计划,并添加线程组

2、在线程组里写上对应的http请求

 

 

3、 添加观察结果树

4、 然后继续写HTTP请求内容就可以了

接口参数:

 中文的地方需要注意,不然会报错

5、查看接口调用的结果 

五、Jmeter的性能测试使用

 1、设置http默认请求值

2、 为接口请求增加断言

这里使用JSON path

根据接口返回的状态码、message进行断言即可

 3、性能测试的开展

1)需要做个基准测试:
用最少的并发,确定每一次用户操作需要占用的资源和性能指标

4、 添加监听器的聚合报告和汇总报告

5、 配置TPS

6、增加随时间变化的响应时间

7、随时间变化的活动线程数--最重要

8、 运行基准测试

但是基准测试不算重要,因为它不能找到性能瓶颈的根源。

9、查看执行情况

1)

2)

 3)异常率--最重要指标

异常率默认小于等于0.05%,才可以通过。根据公司实际要求来。超过1%就是一定不合格

因为跑很长实际,允许有异常情况

4)吞吐量

1个吞吐量是TPS+QPS

单个线程的吞吐量如此,放大100倍、1000倍去观察

9、通过负载测试去找瓶颈 

1、 

 持续1分钟后,开始回收

10、关闭基准测试

 清除数据

每次新执行的是线程组,不是测试计划

11、执行负载测试

12、 压测瓶颈点判断

负载测试:通过梯度压测,找到对应的瓶颈点,找到之后,我们需要去做验证。这个时候要添加一个新的线程组

310个线程,并发数是1的话,就是一个线程1秒跑一个请求,一共就是一秒310个请求。上图是在请求数为310的时候,出现瓶颈问题。

1)添加常数吞吐量定时器 --控制发请求的节奏

310是并发数量,不配置这个定时器,有可能1秒钟不是310个并发

设置吞吐量定时器 ,会限制了并发,因为我们已经知道并发数的瓶颈,所以可以限制

并发数,对应的是1个请求同时存在多少线程数。

线程和请求不一样,线程是用户,一个线程可以在一段时间发起多个请求。限制每秒发1个请求才能控制住线程是请求情况。实际可能第1秒发2个,第2秒发8个,每次都不一样。

同步定时器,310个线程,一秒可能跑出400个请求。所以不好控制。必须设置常量定时器

并发数是,N个线程一起执行的并发数就是N

每秒请求数*线程数=并发数

并发数=线程数×TPS--正确的

配置常数吞吐量定时器后:

TPS这里=每分钟目标吞吐量÷60 =每秒钟吞吐量(吞吐的请求数量)

每秒钟发1个请求,310个并发数,就是每秒发310个请求

每秒钟发2个请求,想要每秒发310个并发数,就是应该配置155个线程数。

线程组控制的是并发用户数,吞吐量定时器是控制一个用户1分钟往服务器发多少个请求,设置1分钟发60个,就是1秒1个,我们的线程设置的310,就是1秒310个并发

 

意义

此时TPS=1.每秒处理1个

常量吞吐器一般设置为60就不用管了,就是一秒一个请求

 如果下面每秒发310,系统就不行了,说明310在瓶颈之上

计算逻辑是:

120意味着每秒发2个

TPS=2

 

13、通过汇总报告,观察异常

执行

往上加线程数,1秒请求341个

做对应的压测·上调和下调线程数,找到对应的一个瓶颈范围。

进行上浮,找瓶颈