跳到主要内容

性能测试

以前从来没有系统的整理过性能测试相关的内容,正好工作中有个迭代就是对接公司的测试平台,正好借此机会来整理一下相关涉及到的测试点,需要考虑哪些指标,以及测试的目的。

性能测试的目的

性能测试中,性能指标包括系统吞吐量,并发处理能力,系统稳定性,响应延迟等。性能测试就是为了如果发现有不满足要求的地方,需要定位出问题所在,并给出解决方案。

  1. 清楚自己所提供的接口性能是多少;

  2. 判断出系统可能存在的问题(代码,DB,cache,系统配置,容量等),提前解决;

  3. 为设置接口的限流/熔断做参考;

接口压力测试的局限性

接口压力测试只注重单业务的接口性能,进行压测的时候,只关注个别接口的性能。

接口大部分时间是在线下进行,可能线上线下机器配置不一样,而且线上同时在进行着各种不同的业务。

因此在线下进行接口压力测试的结果,只能作为线上配置的一个参考值。

如何做接口压力测试 ?

如何确定并发数

可以通过尝试的方式。第一次压测的时候,可以设置自己预期接口需要达到的并发数,进行压力测试。然后通过二分法进行调整。

举例:如果期望的并发数是 512 ,第一次压测并发数设置为 512 ,如果系统没有压力,第二次并发就尝试设置为 1024。如果系统有压力,下次就设置为 256。通过逐渐尝试的方式,找出当前接口的并发阈值。

如何确定总请求次数

有时候单纯的通过并发数并不能完全发现系统的压力状况,因为并发数只能测出系统的处理能力。

但是有时随着长时间的调用,系统可能会出现其他问题。比如:随着数据量的增多,存储磁盘满了、内存缓存用光,缓存服务使用磁盘缓存而拖慢系统等情况。

为了避免这种情况,可以尝试用现有线上业务每天产生的数量乘以一定的天数(天数的大小视业务的具体情况而定,推荐180天以上),作为接口压力测试的总请求次数。

接口压力测试数据的选取

通常随机选择数据。但是要注意重复进行压力测试对性能的影响。

比如:

第一次压测的 Id 是从2500W 到2600W 之间选择的,下次用同样的 Id 范围做压测的时候,如果接口实现中有缓存,则会很大程度影响压力测试的结果,对压力测试的解读时候,要考虑到这个因素。

另外,使用不存在的 Id 去进行压测,结果并没有太大意义。

References