概述

性能测试依照不同视角,能够分为以下几类:

a. 用户视角的性能

用户角度感触到的网站响应速度的快和慢。从用户在浏览器输出网址/关上利用, 到整个页面出现给用户的耗时。蕴含了用户端发送申请,服务端收到并执行申请,返回 申请,客户端收到之后渲染的总工夫。

b.开发人员视角的性能
包含零碎吞吐量,并发解决能力,零碎稳定性,响应提早等。如果发现有不满足要求的中央,须要定位出问题所在,并给出解决方案。

c.运维
次要关注基础设施性能和资源利用率,如网络运营商带宽能力,服务器应急配置, 数据中心网络架构,服务器和网络带宽的资源利用率等。

为什么要做接口压力测试

1.分明本人所提供的接口性能是多少
2.判断出零碎可能存在的问题(代码,DB,cache,系统配置,容量等),提前解决
3.为设置接口的限流/熔断做参考

接口压力测试的局限性

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

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

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

谁来做接口压力测试

对接口比拟相熟的开发人员来做,这样有以下益处:1.对接口实现比拟理解,对接口中潜在的问题有肯定的预判2.比拟容易对接口进行优化(业务逻辑层面和技术层面)。

如何做接口压力测试

通常应用 Jmeter ,loadRunner, Metersphere 等进行压力测试。

如何设计接口压力测试计划

1.如何确定并发数:
能够通过尝试的形式。第一次压测的时候,能够设置本人预期接口须要达到的并发 数,进行压力测试。而后通过二分法进行调整。

举例:如果冀望的并发数是 100 ,第一次压测并发数设置为 100 ,如果零碎没有 压力,第二次并发就尝试设置为 200。如果零碎有压力,下次就设置为 150。通过逐步 尝试的形式,找出以后接口的并发阈值。

2.如何确定总申请次数:
有时候单纯的通过并发数并不能齐全发现零碎的压力情况,因为并发数只能测出零碎的解决能力。

然而有时随着长时间的调用,零碎可能会呈现其余问题。比方:随着数据量的增多, 存储磁盘满了、内存缓存用光,缓存服务应用磁盘缓存而拖慢零碎等状况。

为了防止这种状况,能够尝试用现有线上业务每天产生的数量乘以肯定的天数(天 数的大小视业务的具体情况而定,举荐 180 天以上),作为接口压力测试的总申请次数。

3.接口压力测试数据的选取:
通常随机抉择数据。然而要留神反复进行压力测试对性能的影响。比方:

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

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

压力测试报告应该蕴含哪些后果

1.接口压力测试后果

2.服务器压力
每次接口压力测试时,接口所在服务的服务器 cpu/jvm 使用率历史记录,jvm堆大

小,响应时长图 (借助 pinpoint 查看),cpu load 值(top 命令),gc 信息等。

如何解读压力测试的后果

1.对于接口压力测试后果:
关注响应工夫是否符合要求,响应工夫(前 99%) 是不是在可容许的范畴内。最大值是多少,是否能够容忍。通常来说,谬误百分比应该为 0。

2.对于服务器压力:
看 cpu 使用率是否在可承受范畴内,jvm 堆大小是否变动频繁,是否有 fullGC。Young GC 耗时,CPU load 值是否在可承受范畴内。响应时长图是否平滑(如果有毛 刺景象,须要找出起因)。

如何依据测试后果定位性能问题

1.响应工夫不符合要求:
通过 pinpoint 察看调用链,找出耗时比拟长的步骤,进行优化

2.并发数达不到要求,能够从以下几个方面进行思考:
a 是否产生零碎依赖资源争用(比方:数据库连贯,业务解决线程数等)b 业务流程/代码性能是否能够优化
c 在运行的过程中是否频繁 GC

  1. CPU 使用率过高:
    a 在运行的过程中是否频繁 GC
    b 是否产生过多的线程切换
    c 程序中是否有比拟耗 cpu 的代码

    全链路:pinpoint

修复性能问题

除了只可能在极其压力测试状况下会产生的性能问题,并且修复代价过大的问题可 以不进行修复(然而要在压力测试报告中体现进去此问题,以及解决方案),其余问题 都必须进行修复。

其余

如果没有专门的接口压力测试环境,记得做完接口压力测试之后,将测试数据革除(缓存,数据库,消息中间件中未生产结束的音讯等)

《2021接口测试白皮书》传送门 >>>


一站式播种前沿测试开发技术、先进测试治理教训,结识业界大咖精英