13年测试老鸟,接口性能测试-压测总结汇总,一文概全...

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、概述

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

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

2)开发人员视角的性能
包括系统吞吐量,并发处理能力,系统稳定性,响应延迟等。如果发现有不满足要求的地方,需要定位出问题所在,并给出解决方案。

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

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

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

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

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

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

4、谁来做接口压力测试

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

5、如何做接口压力测试

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

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

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

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

如何确定总请求次数:
有时候单纯的通过并发数并不能完全发现系统的压力状况,因为并发数只能测出系统的处理能力。

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

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

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

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

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

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

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

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

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

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

9、修复性能问题

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

10、其他

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

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

勇敢地面对挑战,坚定地追求梦想,努力奋斗不止,成功的路上没有捷径,唯有坚持和努力,才能书写属于自己的辉煌。

每一次努力都是自己的投资,勇敢面对困难,坚定追逐梦想,不放弃、不停歇,才能成就辉煌人生,让青春绽放出最耀眼的光芒。

在逆境中磨砺意志,在挫折中坚定前行,每一份努力都是成长的印记,只有坚持不懈,才能绽放出生命最美丽的花朵,让梦想的火焰点亮前行的路途。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/727295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何禁止员工在上班时间利用电脑打游戏逛娱乐网站?

在现代化的工作环境中,电脑已成为员工日常工作的必需品。然而,一些员工可能在上班时间利用电脑进行非工作相关的活动,如打游戏或浏览娱乐网站。这不仅影响个人的工作效率,也可能对团队的整体绩效和公司的文化产生负面影响。因此&a…

python界面开发 - Radiobutton:单选按钮

文章目录 1. python图形界面开发1.1. Python图形界面开发——Tkinter1.2. Python图形界面开发——PyQt1.3. Python图形界面开发——wxPython1.4. Python图形界面开发—— PyGTK:基于GTK1.5. Python图形界面开发—— Kivy1.6. Python图形界面开发——可视化工具1.7. …

【Linux C | 网络编程】多播的概念、多播地址、UDP实现多播的C语言例子

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

如何选择适合您需求的虚拟主机服务

随着互联网的发展,虚拟主机服务在网站托管领域扮演着至关重要的角色。我们在前几天遇到客户咨询如何在Hostease服务商选择适合的主机服务。本文将介绍如何选择适合您需求的虚拟主机服务,以确保您的网站或应用程序能够稳定运行并获得最佳性能。 确定您的需…

常见的验证码

一、短信验证码 前端: 用户填写手机号,点击按钮发送请求用户短信得到验证码后,用户填写表单提交 form 表单,进行验证 后台: 随机生成几位验证码并将生成时间、手机号、验证码存储起来,可以存到session、…

小游戏加固方案已全面适配微信、QQ、抖音、快手、美团、华为、支付宝渠道

2023年,国内移动游戏收入与游戏用户规模双双创下历史新高。其中小游戏异军突起,市场规模达到200亿元,同比增长300%,成了万众瞩目的行业新风口。 小游戏的高速发展带来了更多的活力,产出了多款月流水过亿的热门游戏。行…

webpack编译报错Cannot find module ‘@babel/core‘且无法识别es6的reset语法

~ npm install babel-core babel-loader --save-dev 用了这个指令后webpack报错 尝试重新下载了babel-core babel-loader 还是不行 Cannot find module babel/core babel-loader8 requires Babel 7.x (the package babel/core). If youd like to use Babel 6.x (babel-core), …

Matter 笔记1-环境准备,编译

不要远程登录Ubuntu输入以下命令,原因:ubuntu/linux上的http代理设置 1. 准备 1.1 工具 Ubuntu 22.04 LTSClash 里General的端口设置到ubuntu 的网络设置里 1.2 代码 这里使用芯科整理过的代码 git clone https://github.com/SiliconLabs/matter.…

3. springboot中集成部署vue3

1. vue3构建 构建命令 npm run build&#xff0c; 构建的结果在disc目录&#xff1a; 2. springboot集成 2.1 拷贝vue3构建结果到springboot resources/static目录 2.2 springboot pom依赖 添加thymeleaf依赖 <dependency><groupId>org.springframework.boot</…

Rust错误处理和Result枚举类异常错误传递

Rust 有一套独特的处理异常情况的机制&#xff0c;它并不像其它语言中的 try 机制那样简单。 首先&#xff0c;程序中一般会出现两种错误&#xff1a;可恢复错误和不可恢复错误。 可恢复错误的典型案例是文件访问错误&#xff0c;如果访问一个文件失败&#xff0c;有可能是因…

乔琼:高性能会议传声器的产品优化设计| 演讲嘉宾公布

一、智能家居与会议系统 智能家居与会议系统分论坛将于3月28日同期举办&#xff01; 智能会议系统它通过先进的技术手段&#xff0c;提高了会议效率&#xff0c;降低了沟通成本&#xff0c;提升了参会者的会议体验。对于现代企业、政府机构和学术界是不可或缺的。在这里&#x…

arm系统构建的基础知识

目录 一、环境变量 二、归档和压缩 (一) 常用命令 (二) 常用参数 三、磁盘分区和挂载 四、网络管理 一、环境变量 显示环境变量 —— echo设置临时环境变量 —— exportecho $PATH —— 显示当前PATH环境变量 在当前目录下&#xff0c;编写一个hello.c 编译并运行。 图…

千帆AppBuilder使用指南-组件中心

应用中心 百度智能云千帆AppBuilder&#xff08;以下简称为AppBuilder&#xff09;应用中心&#xff0c;提供了大量可以立即体验的应用示例&#xff0c;开发者可以在这里搜索感兴趣的应用进行使用。 官方应用&#xff1a;AppBuilder官方提供的应用&#xff0c;可以立即体验应用…

【nowcoder】NC248 左叶子之和

NC248 左叶子之和 计算给定二叉树的左叶子之和。 树上叶子节点指没有后继节点的节点&#xff0c;左叶子指连向父节点的左侧的叶子节点。 int sumOfLeftLeaves(struct TreeNode* root ) {if (root ! NULL) {int sum 0;if (root->left ! NULL && root->left->…

【CSP试题回顾】201409-3-字符串匹配

CSP-201409-3-字符串匹配 关键点&#xff1a;<string>库函数的使用 length() 或 size(): 返回字符串的长度。 empty(): 检查字符串是否为空。 append() 或 : 向字符串的末尾添加字符或另一个字符串。 insert()在字符串的指定位置插入另一个字符串或字符。 std::str…

redis未设置密码被植入挖矿脚本

最近一台测试linux响应速度贼慢&#xff0c;检查发现cpu消耗高达100%&#xff01;查看进程杀死后过段时间又重启了&#xff0c;一时间也摸不到头绪。无意间发现启动redis的时候cpu瞬间拉到了100%&#xff0c;主要就是zzh和newinit.sh两个脚本。百度了一下说是被植入了挖矿脚本&…

玩转安卓之配置gradle-8.2.1

概述&#xff1a;看了一下&#xff0c;由于gradle是国外的&#xff0c;所以下载速度很慢&#xff0c;这个老师又是很菜的类型&#xff0c;同学又不会&#xff0c;于是曹某就写这一篇文章&#xff0c;教大家学会简单的为安卓配置gradle-8.2.1。 第一步&#xff1a;下载gradle-8…

C++复习笔记——泛型编程模板

01 模板 模板就是建立通用的模具&#xff0c;大大提高复用性&#xff1b; 02 函数模板 C另一种编程思想称为 泛型编程 &#xff0c;主要利用的技术就是模板 C 提供两种模板机制:函数模板和类模板 函数模板语法 函数模板作用&#xff1a; 建立一个通用函数&#xff0c;其函…

【kubernetes】关于k8s集群的配置资源(configmap和secret)

目录 一、Secret 类型一&#xff1a;kubernetes.io/service-account-token 类型二&#xff1a;普通类型secret&#xff0c; ●Opaque&#xff0c;base64 编码格式的 Secret&#xff0c;用来存储用户自定义的密码、密钥等&#xff0c;默认的 Secret 类型; 类型三&#xff1a;…

tiktok矩阵引流系统开发常用源代码!

在数字营销领域&#xff0c;TikTok已成为一个不可忽视的平台&#xff0c;随着其用户基数的不断增长&#xff0c;如何利用TikTok进行有效的引流成为了许多企业和营销人员关注的焦点。 为了实现这一目标&#xff0c;许多开发者开始构建TikTok矩阵引流系统&#xff0c;这些系统通…