02. 性能测试的策略
2024年10月28日大约 6 分钟
02. 性能测试的策略
1. 基准测试
为什么要进行基准测试?
1. 单用户性能不达标,有必要进行多用户性能测试吗? 2. 影响性能的因素有很多(如:服务器配置、资源、代码效率),如何判断谁在导致性能变好/变坏?
狭义上讲:就是单用户测试。测试环境确定后,对业务模型中的重要业务做单独的测试,获取单用户运行时的各项性能指标。
广义上讲:是一种测量和评估软件性能指标的活动。你可以在某个时刻通过基准测试建立一个已知的性能基准线,当系统的软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响。
(1)什么是基准测试? - 狭义上讲:就是单用户测试。(单用户循环多次得到的数据) - 广义上讲:建立基准线,当系统的软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响。 (2)基准测试数据的用途? - 基准测试不会单独存在 - 为多用户并发测试和综合场景测试等提供参考依据 - 为系统/环境配置、系统优化前后的性能提升/下降提供参考指标
2. 负载测试
电商系统平时可以正常运行,双11时能保证也可以政策运行吗? 双11用户量巨大
概念
- 通过逐步增加系统负载,确定在满足系统的性能指标(如响应时间等)情况下,找出系统所能够承受的最大负载量的测试。
作用
- 系统最大负载量达到用户要求时,系统才能正式上线使用。
电梯案例
- 练习
- 对Tpshop商城系统进行负载测试:
- 模拟用户请求tpshop商城的首页(每个用户每秒钟发送10个请求),系统要求请求首页的时间不超过 2s,测试tpshop商城系统的最大负载量。
- 测试步骤:
- Case1 : 模拟1个用户,请求商城首页,记录运行时间
- Case2 : 模拟5个用户,请求商城首页,记录运行时间
- Case3 : 模拟10个用户,请求商城首页,记录运行时间
- Case4 : 模拟20个用户,请求商城首页,记录运行时间
- Case5 : 模拟30个用户,请求商城首页,记录运行时间
- ……
- 对Tpshop商城系统进行负载测试:
3. 稳定性测试
电商系统能抗住双11时的考验,能保证长时间运行不出问题吗?
概念
- 在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试(1天-1周等),并最终保证服务器能满足线上业务需求。
作用
- 系统在用户要求的业务负载下运行达到规定的时间时,系统才能正式上线使用。
稳定运行时的负载量设置为多少?
- 例如:前面电梯案例中,实际测试的最大负载为:13人
- 场景1:如果甲方要求用户正常的负载人数为10人,稳定运行的负载量为多少?
- 场景2:如果甲方要求用户正常的负载人数为15人,稳定运行的负载量为多少?
- 例如:前面电梯案例中,实际测试的最大负载为:13人
4. 其他:并发测试、压力测试等
1. 并发测试
电商系统能抗住双11时的考验,能保证秒杀活动时不出问题吗? 特点:时间短,请求量大
概念
并发测试(绝对并发):是指在极短的时间内,发送多个请求,来验证服务器对并发的处理能力。
1. 相对并发是指在一个时间段内发生的事务(时间区间) 2. 绝对并发是指在同一时刻发生的事情(时间点)
特点
- 时间短,请求量大
应用场景
- 特定活动场景,如:抢红包、秒杀、抢购等
2. 压力测试
概念
- 在强负载下的测试,查看系统在峰值情况下是否功能隐患、系统是否具有良好的容错能力和可恢复能力。
为什么要进行压力测试?
- 软件实际使用时,用户量超过预期,该如何反应?
- 软件由于意外情况出现问题,多久能恢复?
- 压力测试使用场景
- 极限负载情况下导致系统崩溃的破坏性压力测试
- 高负载下的长时间的稳定性压力测试
三条曲线:
- Utilization U = 资源利用率
- Throughput X = 吞吐量
- Response Time R = 响应时长
两个点:
- The Optimum number of Concurrent users : 最合适的并发用户数
- The maximum number of Concurrent users : 最大的并发用户数
三个区域:
- Light load: 轻负载
- Heavy load: 重负载
- Buckie zone: 崩溃区
三个状态描述:
- 资源饱和(Resource Saturated)
- 吞吐下降(Throughput Falling)
- 用户受影响(End Users Effected)。
横轴是并发数:
- Number of Concurrent Users(Load) = 并发用户数
纵轴有三个,系统资源利用,tps每秒响应,响应时间:
- 第一阶段Light load, 并发增加,响应时间会变慢,系统的tps也增加,系统的性能会逐渐打满,
- 第二阶段Heavy load ,系统的性能增加不怎么变化了,系统性能处于比较满的状态
- 第三阶段Buckle zone,随着并发增加,系统性能减低,甚至不影响了,是一个不能接收的阶段,
当然时间上测试过程的曲线不会这么工整,因为在中间的heavy 阶段可能就出现error了,而tps还能往上增加,但是已经没有多大的意义了,
5. 小节
常见的性能测试策略有哪些?各自的概念及作用?
1.基准测试
- 建立基准,系统环境变化后对比确定对性能的影响。不会单独存在,为综合场景测试提供参考依据
2.负载测试
- 逐步增加负载,找到满足系统性能指标情况下的系统最大负载量(也可以找出极限负载量)
3.稳定性测试
- 用户正常负载下的长时间测试,保证系统长时间稳定运行
4.并发测试:
- 极短的时间内,发送大量请求,验证并发处理能力
5.压力测试:
- 高负载下,查看系统在峰值情况下的容错能力和可恢复能力