接口性能测试,这个还真有用啊。

news/2024/10/15 20:07:40/

一、概述

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

a. 用户视角的性能
用户角度感受到的网站响应速度的快和慢。从用户在浏览器输入网址/打开应用,到整个页面呈现给用户的耗时。包含了用户端发送请求,服务端收到并执行请求,返回请求,客户端收到之后渲染的总时间。

b.开发人员视角的性能

包括系统吞吐量,并发处理能力,系统稳定性,响应延迟等。如果发现有不满足要求的地方,需要定位出问题所在,并给出解决方案。
c.运维
主要关注基础设施性能和资源利用率,如网络运营商带宽能力,服务器应急配置,数据中心网络架构,服务器和网络带宽的资源利用率等。

二、为什么要做接口压力测试

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

三、接口压力测试的局限性

接口压力测试只注重单业务的接口性能,进行压测的时候,只关注个别接口的性能。
接口大部分时间是在线下进行,可能线上线下机器配置不一样,而且线上同时在进行着各种不同的业务。
因此在线下进行接口压力测试的结果,只能作为线上配置的一个参考值。

四、谁来做接口压力测试

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

五、如何做接口压力测试

通常使用 Jmeter ,loadRunner 等进行压力测试

六、如何设计接口压力测试方案

如何确定并发数:

可以通过尝试的方式。第一次压测的时候,可以设置自己预期接口需要达到的并发数,进行压力测试。然后通过二分法进行调整。
举例:如果期望的并发数是512 ,第一次压测并发数设置为512 ,如果系统没有压力,第二次并发就尝试设置为1024。如果系统有压力,下次就设置为256。通过逐渐尝试的方式,找出当前接口的并发阈值。

如何确定总请求次数:
有时候单纯的通过并发数并不能完全发现系统的压力状况,因为并发数只能测出系统的处理能力。
但是有时随着长时间的调用,系统可能会出现其他问题。比如:随着数据量的增多,存储磁盘满了、内存缓存用光,缓存服务使用磁盘缓存而拖慢系统等情况。
为了避免这种情况,可以尝试用现有线上业务每天产生的数量乘以一定的天数(天数的大小视业务的具体情况而定,推荐180天以上),作为接口压力测试的总请求次数。

接口压力测试数据的选取:
通常随机选择数据。但是要注意重复进行压力测试对性能的影响。
比如:
第一次压测的 Id 是从2500W 到2600W 之间选择的,下次用同样的 Id 范围做压测的时候,如果接口实现中有缓存,则会很大程度影响压力测试的结果,对压力测试的解读时候,要考虑到这个因素。
另外,使用不存在的 Id 去进行压测,结果并没有太大意义。

七、压力测试报告应该包含哪些结果

接口压力测试结果

服务器压力

每次接口压力测试时,接口所在服务的服务器 cpu/jvm 使用率历史记录,jvm堆大小,响应时长图 (借助 pinpoint 查看),cpu load 值(top 命令),gc 信息等。

八、如何解读压力测试的结果

对于接口压力测试结果:

关注 响应时间是否符合要求,响应时间(前99%) 是不是在可允许的范围内。最大值是多少,是否可以容忍。 通常来说,错误百分比应该为0。

对于服务器压力:
看 cpu 使用率是否在可接受范围内,jvm 堆大小是否变化频繁,是否有 fullGC。Young GC 耗时,CPU load值是否在可接受范围内。 响应时长图是否平滑(如果有毛刺现象,需要找出原因)。

九、如何根据测试结果定位性能问题

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

2.并发数达不到要求,可以从以下几个方面进行考虑:
a 是否发生系统依赖资源争用(比如:数据库连接,业务处理线程数等)

b 业务流程/代码性能是否可以优化 c 在运行的过程中是否频繁 GC

3. CPU 使用率过高:
a 在运行的过程中是否频繁 GC

b是否发生过多的线程切换 c 程序中是否有比较耗 cpu 的代码

cpu 内存 磁盘 io 网络 io 服务器 top 命令 vmstat pidstat / iostat

sar jvm java mission Control 工具 jmap 命令,结合eclipse mat 工具进行分析

全链路:pinpoint

十、修复性能问题

除了只可能在极端压力测试情况下会发生的性能问题,并且修复代价过大的问题可以不进行修复(但是要在压力测试报告中体现出来此问题,以及解决方案),其他问题都必须进行修复。

十一、其他

如果没有专门的接口压力测试环境,记得做完接口压力测试之后,将测试数据清除(缓存,数据库,消息中间件中未消费完毕的消息 等)。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   


http://www.ppmy.cn/news/1539594.html

相关文章

【已解决】黑群晖绕过双重认证(2FA)登录(终极方案)

黑群晖绕过双重认证(2FA)登录(终极方案) 黑裙版本7.x,之前设置了双重认证,但是由于更换设备导致卡在2FA登录界面,无法登录,之前也没开SSH,网上找了很多方法,…

PCL 平面点云边界特征提取(alpha shapes)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 点云边界提取 2.1.2 可视化点云与边界 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新) 一、概述 平…

html实现倒计时

参考网址 <!DOCTYPE html> <html> <head><title>倒计时示例</title> </head> <body><h1 id"titleCountDown"></h1><div id"countdown"></div><script>// 目标日期var targetDat…

手机在网状态接口的使用和注意事项

手机在网状态接口是用于查询手机号码在运营商数据库中的实时状态的工具&#xff0c;这种接口在互联网金融、贷款、租赁、保险等相关行业中尤为重要&#xff0c;因为它可以帮助这些行业进行更有效的风控审核。以下是对手机在网状态接口的详细介绍&#xff1a; 一、手机在网状态…

FD6288

FD6288 驱动电压VCC 为4.2V以上&#xff0c;否则不能正常工作 低侧电压可以直接驱动&#xff0c;但高侧电压受VB VS影响 VB接VCC VS 测试时要将VSX接GND 否则不亮&#xff08;正常状态 高侧导通时会限制低侧&#xff0c;关断同路的低侧

Modnet 人像抠图(论文复现)

Modnet 人像抠图&#xff08;论文复现&#xff09; 本文所涉及所有资源均在传知代码平台可获取 文章目录 Modnet 人像抠图&#xff08;论文复现&#xff09;论文概述论文方法复现WebUI部署 论文概述 人像抠图(Portrait matting)旨在预测一个精确的 alpha 抠图&#xff0c;可以用…

浙江省发规院产业发展研究所调研组莅临迪捷软件考察调研

2024年10月10日下午&#xff0c;浙江省发展与规划院产业发展研究所调研组一行莅临迪捷软件考察调研&#xff0c;绍兴市府办、区发改、区经信、迪荡街道等相关领导陪同。 调研组一行参观了迪捷软件的展厅与办公区&#xff0c;深入了解了迪捷软件的公司发展历程、运营状况、产品…

AR、VR、XR 沉浸式体验在艺术展览中的成功案例分享

AR、VR、XR 沉浸式体验在艺术展览中的成功案例&#xff1a; 1、AR 技术应用案例&#xff1a; “敦煌 AR 智能导览” 在北京民生美术馆的展览&#xff1a;这是国内迄今为止展览规模最大的敦煌艺术展的一部分。观众戴上 AR 眼镜&#xff0c;在数字讲解员 “敦敦” 的引导下&…