90%架构师都知道的压力测试

IT知识
303
0
0
2022-04-14
标签   架构设计

上期说了一下性能测试定义以及如何进行性能测试。其实压力测试的步骤和性能测试的步骤基本相同,但是压力测试需要达到的目的却和性能测试大相径庭。

压力测试定义

通过测试的方法一步一步逼近系统的临近崩溃点,这个点包括系统资源,内存,线程,应用,连接数等等。目的是为了运维和开发人员能够知道系统的极限在哪里,让业务人员和公司高层知道如果需要突破业务的极限必须先突破系统的极限。对我们评估业务升级,系统升级提供了有力的数据保障。

90%架构师都知道的压力测试

压力测试的分类

一般压力测试分为两类。

第一,正压力测试。以之前提到的性能测试为基础,我们知道系统大致能够承受的基本压力是多少,在这个基础上对系统逐步加压,直到系统接近崩溃或者真正崩溃。简单的说就是做加法。

90%架构师都知道的压力测试

第二,负压力测试,在系统正常运行的情况下,逐步减少支撑系统的资源,看什么时候系统无法支撑正常的业务请求。例如:在系统正常运行的情况下,逐步减少服务器或者微服务的数量,观察业务请求的情况。说白了就是做减法。

90%架构师都知道的压力测试

压力测试的步骤

90%架构师都知道的压力测试

第一,确定测试目标。与性能测试不同的是,压力测试的目标是,什么时候系统会接近崩溃。

第二,确定关键服务。压力测试其实是有重点的,根据2/8原则,系统中20%的功能被使用的是最多的,我们可以针对这些核心功能进行压力测试。

90%架构师都知道的压力测试

第三,确定负载。这个和关键服务的思路一致,不是每个服务都有高负载的,我们的测试其实是要关注那些负载量大的服务,或者是一段时间内系统中某些服务的负载有波动。这些都是测试目标。

第四,选择环境,这个和性能测试一样建议使用生产环境,不过也workaround的方法,可以参考上篇中的这部分内容。

第五,确定监视点,实际上就是对关注的参数进行监视,例如cpu负载,内存使用率,系统吞吐量等等。

第六,产生负载,这里需要从生产环境去获取一些真实的数据作为负载数据源,这部分数据源根据目标系统的承受要求由脚本驱动,对系统进行冲击。

第七,执行测试,这里主要是根据目标系统,关键组件,用负载进行测试,返回监视点的数据。建议团队可以对测试定一个计划,模拟不同的网络环境,硬件条件进行有规律的测试。

第八,分析数据,针对测试的目的,对关键服务的压力测试数据进行分析得知该服务的承受上限在哪里。对一段时间内有负载波动或者大负载的服务进行数据分析,得出服务改造的方向。

性能测试和压力测试的区别

如果说性能测试是系统的基准线的话,那么压力测试就是系统的上限或者说是系统的高压线。从基准线到高压线就是系统可以伸缩的范围。我们可以通过这两条线密切关注系统负载的情况。

90%架构师都知道的压力测试