性能测试基础

用户头像
王友
关注
发布于: 2020 年 07 月 19 日
性能测试基础

1. 性能测试

性能测试性能优化的前提和基础,也是性能优化结果的检查和度量标准

性能测试是一个总称,具体可细分为系统性能测试负载测试压力测试以及稳定性测试

性能主观视角(用户感受到的性能)和客观视角(按性能指标衡量)两个方面。网站性能测试的指标主要有:响应时间并发数吞吐量性能计数器等。

  • 响应时间直观地反映了系统的”快慢“;

  • 并发数反映了系统的负载特性;

  • 吞吐量体现了系统的处理能力;

  • 主要的吞吐量指标有:TPS、QPS、HPS等;

  • 性能计数器是描述服务器或操作系统性能的一些数据指标。

  • 包括:System Load、对象与线程数、内存使用、磁盘与网络I/O等指标;

  • 对这些指标设置预警阈值,运维与开发人员根据预警可及时发现并处理系统异常。

1.1 系统性能测试

是以系统设计初期规划的性能指标为预期目标,对系统不断增加压力,验证系统在资源可承受范围内,能否达到预期性能目标。

1.2 负载测试

当系统性能测试达到预期目标后,继续增加系统压力,直到系统的某项或多项性能指标达到安全临界值,如某资源以达到饱和状态(网络,内存,CPU等),以测试出系统在高负载下的最大性能指标。这个时候如果继续对系统施加压力,系统的处理能力不但不会提高,反而会下降。

1.3 压力测试

在超过安全负载的情况下,对系统继续施压,指导系统崩溃或不能再处理任何请求,以此获得系统的最大压力承受能力。

1.4 稳定性测试

被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统的稳定性。

在实际生产环境中,请求压力是不确定的,压力分布是不均匀的,因此为了能够更好地模拟生产环境,不均匀地系统施加压力可以更好地测试系统的稳定性。

2 全链路压测

全链路压测是在特定的业务场景下,将相关的链路完整地串联起来同时施压,尽可能模拟出真实的用户行为,当系统整站流量被打上来时,必定会暴露出性能瓶颈,继而可以探测出系统整体的真实处理能力,以及有指导地在特殊使其进行容量规划和性能优化。

全链路压测面临的挑战

  • 业务系统多,涉及整条链路所有基础设施与中间件,如何确保压测流量畅通无阻,没有死角?

  • 压测数据如何构造?

  • 数据模型如何贴近真实?

  • 直接在线上环境模拟,如何保证线上系统不受影响?

  • 巨大的业务流量如何制作出来?

2.1 数据构造

2.2 数据隔离

  1. 逻辑隔离:直接把测试数据和正常数据写在一起,通过特殊标识区分

  • 可能污染线上数据,破坏线上数据安全

  1. 虚拟隔离:在所有写数据的地方做mock,数据并不真正写入

  • 不会污染线上数据,但是mock对压测结果的准确性会产生干扰

  1. 物理隔离:所有写数据的地方对压测流量进行识别,判断一旦是压测流量的写入,就写到隔离的位置,包括存储、缓存、搜索引擎等

2.3 流量构造

2.4 全链路压测平台化



用户头像

王友

关注

懒是一种艺术 2018.03.26 加入

间歇性自律,持续性懒散,真的很懒!

评论

发布
暂无评论
性能测试基础