2022-03-24

遇:

###一. 性能测试

#####1.为什么要进行性能测试?

1. 评估当前系统的能力

2. 寻找性能瓶颈,优化系统性能

3. 评估软件是否满足未来的需要

4. 招聘需要

#####2.什么是性能

**时间:**系统处理用户请求的响应时间

**资源:**系统运行过程中,系统资源的消耗情况

#####3. 性能测试是什么

######(1)广义定义

基于协议模拟用户发出请求,对服务器形成一定负载,来测试服务器的性能指标是否满足要求性能指标关注点:时间性能、空间性能性能测试与页面无关

######(2)狭义定义

指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

#####4.功能和性能测试

1. 不同

功能测试验证系统的功能需求规格,聚焦功能。

性能测试验证系统的业务性需求场景,聚焦时间和资源。

2. 关系

一般项目中,先功能测试通过后,后进行性能测试。

#####5.性能测试的分类

######(1)基准测试

狭义:单用户测试

广义:建立基准线,当系统软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响。

######(2)负载测试

1. 概念

通过逐步增加系统负载,确定在满足性能指标的情况下,找出系统所能承受最大负载量的测试。

2. 作用

系统最大负载量达到用户要求时,系统才能正式上线使用。

3. 案例

电梯行业规范:电梯从1楼到5楼的运行时间不超过24s

```

1人    20s

7人    20s

13人  20s    达到最大负载

16人  25s

19人  28s

21人  断绳子

```

4. 注意

通过负载测试,可以确定系统的最大负载量和极限负载量

系统对外宣称的最大负载量

负载测试的时间一般为1-2小时

######(3)稳定性测试

1. 概念:在服务器稳定运行(用户正常业务负载下)的情况进行长时间测试(1天-一周等),并最终保证服务器能满足线上业务需求。

2. 系统在用户需求的业务负载下运行达到规定的时间时,系统才能正式上线使用。

######(4)压力测试

1. 概念:在强负载下的测试,查看系统在峰值下是否功能隐患、系统是否具有良好的容错能力和可恢复的能力。

2. 测试场景

高负载下的长时间稳定性压力测试 (如:B-C区间内进行24/3*24小时长时间测试)

极限负载下的破坏性压力测试(如:C-D区间内进行测试)

######(5)并发测试

1. 概念:在极短时间内,发送多个请求,来验证服务器对并发的处理能力。

2. 应用场景

特定的活动场景:抢红包、秒杀、抢购等。

3. 与负载测试对比:

负载测试:主要目的是测试高负载情况下,对系统资源的消耗,是否会耗尽的问题(双11活动)

并发测试:主要目的是测试极短时间内,并发请求时,系统资源争抢的问题(抢红包、秒杀)

#####6.性能测试的指标

######(1)响应时间

1. 指从客户端发起请求开始,到客户端接收到结果的总时间

2. 包括:服务器处理时间 + 网络传输时间

######(2)并发用户数

某一时刻同时向服务器发送请求的用户数

######(3)吞吐量(Throughout)

1. 概念:单位时间内处理客户端的请求数量,直接体现软件系统能能承载能力。

2. 吞吐量单位分类

######(4)QPS

QPS(Query Per Second)每秒查询数,即控制服务器每秒处理的指定请求的数量。

######(5)TPS

TPS(Transaction Per Second)每秒事务数,即控制服务器每秒处理事务请求的数量。

如:支付请求事务=查询用户余额请求+校验支付安全请求+发送支付请求

每秒处理查询用户余额15请求,每秒处理校验支付安全15个请求,每秒处理发送支付15个请求

支付tsp为15

######(6)点击数

所有的页面元素(如:图片、链接、框架等)的请求总数量

**注意:**点击数是请求数,不是页面上的一次点击

######(7)错误率

指系统在负载情况下,失败业务的概率

**注意:**错误率是性能指标,是高负载下的失败业务的概率

-随机bug是功能bug,先解决随机bug才能进行性能测试

######(8)资源利用率

1. 概念:系统各种资源的使用情况,率=资源使用量/总资源可用量x100%

2. 常见资源指标

CPU使用率:不高于75%-85%

内存大小使用率:不高于80%

磁盘IO(速率):不高于90%

网路(速率):不高于80%

#####7.性能测试工具

![性能测试工具.png](https://upload-images.jianshu.io/upload_images/5887463-64cfca19eb5509b0.png?imageMogr2/auto-orient/strip|imageView2/2/w/938/format/webp)

遇:

###三. 使用Jmeter测试快速入门

#####1. 线程组是什么

```

进程: 一个正在执行的程序对应一个进程

线程: 一个进程有多个执行线程

线程组:  按照线程性质对线程分组。查看任务管理器(爱奇艺有多个)

三者关系: 一个进程有多个线程组,一个线程组有多个线程

```

测试计划—线程组—线程组属性中的线程数

并发执行:多个线程同时执行,特点:执行结束的顺序与开始的顺序不一致

顺序执行:按照线程的启动顺序挨个执行

默认情况下,线程组中的线程是并发执行

每一个线程都要执行组内的http请求

设置线程组顺序执行:勾选测试计划中的(独立运行每个线程组)

线程组用来模拟用户的并发访问

######(1)线程组主要包含三个参数:

线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。

######(2)线程数:

虚拟用户数。一个虚拟用户占用一个线程。设置多少虚拟用户数在这里也就是设置多少个线程数。

######(3)准备时长(秒):

设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。

######(4)循环次数:

每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一直到选择停止运行脚本。

######(5)调度器:

设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)

######(6)持续时间(秒):

测试持续时间,会覆盖结束时间

######(7)启动延迟(秒):

测试延迟启动时间,会覆盖启动时间

######(8)启动时间:

测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。

######(9)结束时间

测试结束时间,持续时间会覆盖它。

#####2. 创建http请求

![创建http请求](https://upload-images.jianshu.io/upload_images/5887463-f20df683c15eb8a7.png?imageMogr2/auto-orient/strip|imageView2/2/w/740/format/webp)

#####3. 指定请求域名,请求路径

![指定请求域名,请求路径](https://upload-images.jianshu.io/upload_images/5887463-ca4fb1dbcc12eeb4.png?imageMogr2/auto-orient/strip|imageView2/2/w/740/format/webp)

| 一个HTTP请求有着许多的配置参数,下面将详细介绍: |

|--|

| 名称:本属性用于标识一个取样器,建议使用一个有意义的名称。 |

| 注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。 |

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

| 端口号:目标服务器的端口号。 |

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

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

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

点击run测试,很麻烦,我们使用postman测试更简单,使用postman操作。

可以使用刚才的接口文档中的,聚合接口中演示一个。

#####4. 设置对应的查看内容

![设置对应的查看内容](https://upload-images.jianshu.io/upload_images/5887463-32cc47426143a287.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)

**注意:**如果监听器中有jp@gc开头的,都是第三方插件

你可能感兴趣的:(2022-03-24)