吐血整理,常见性能测试缺陷+基准测试分析,一篇通透...

目录:导读

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

前言

1、常见性能测试缺陷

1)硬件

磁盘空间:磁盘空间不足导致系统运行变慢,文件、日志等无法生成存放导致的性能瓶颈;
CPU:CPU的核心功能是解释计算机指令以及处理数据,性能主要体现在其运行程序的速度上。影响运行速度的性能指标包括工作频率、Cache容量、指令系统和逻辑结构等参数;

IO读写速率:即input和output,输入和输出,主要考虑数据处理时的读写速度,页交换等情况;

内存:所有的程序都是运行在内存中的,其作用是用于暂时存放CPU中的运算数据,以及与外部存储器交换的数据,内存不足会限制程序的数据处理速度,因此这也是很重要的一项性能关注指标;

2)网络

带宽:高并发情况下,如果带宽不足,可能会导致网络资源竞争,超时等情况;
网络波动:这里是从网络的稳定性来描述,即性能测试的环境,需要一个稳定的网络环境;

CDN:即内容分发服务,有时候不同的CDN策略也会影响到“用户”感知到的系统性能表现;

延时:延时的值越大,对系统性能表现影响越大(比如格斗类的PVP游戏),且性能测试的结果也存在更大的偏差;
丢包:数据在网络上是以数据包的形式传输的,如果丢包,则可能造成报错或异常的情况;

3)应用

JVM:
堆内存分配:根据系统硬件条件来进行合理的堆内存分配,一般来说JVM的堆内存分配不要超过系统内存的25%较好;

垃圾回收算法:JAVA的动态垃圾回收机制,是基于不同的几种回收算法来进行的,根据具体的情况,选择合适的垃圾回收策略;

OOM:即内存溢出(out of memory),这个算是性能测试中很常见的一个问题,通常是由于代码问题造成的内存泄漏、GC不够彻底、内存被耗尽引起;

代码逻辑:
常见的情况有不合理的线程引用和内存分配;

4)配置

版本:在性能测试过程中,一定要确保被测系统的版本和实际生产保持一致,否则由于版本不同带来的些许差异可能会对性能测试带来很大的偏差和影响;

底层配置:涉及到操作系统、服务器等硬件的一些配置方式不合理,带来的性能瓶颈;
参数配置:系统架构设计中,各个不同的参数配置带来的性能瓶颈;

5)数据库

索引:索引的存在就像一个标签目录一样,在执行数据库操作时提供更为快速的执行效率,减少磁盘IO操作和执行的数据库系统时间;
锁:为了保证事务的原子性和隔离性,有了锁的存在,但有时候由于某些原因造成的表锁,也是性能瓶颈的一种表现;

表空间:不合理的表空间设计,导致的数据库性能问题;
慢SQL:慢SQL会导致数据库操作时间变长,增加IO读写以及引起一些列的资源竞争等问题。

6)中间件

超时:设置合理的请求或响应超时时间,是很有必要的,这点要根据具体的业务场景和系统架构来考虑,具体的超时时间,建议进行配置测试来设定;

线程池:之前的博客介绍过线程池的相关资料,线程池配置太小,很容易被使用完,太大的话又浪费资源,合理的线程池,建议进行配置测试来确定;

缓存策略:缓存的优点是减少请求响应过程中的传输时间,但有时候在高并发情况下,缓存很容易失效而导致缓存穿透,瞬间对服务端带来很大的压力;

最大连接数:关于连接数,之前的博客也介绍过,合理的连接数配置是很重要的,否则连接数太少容易导致队列等待、超时,连接数太多则浪费了系统资源;

通信实现方式:同步(sync)和异步(Async);
负载均衡策略:现在很多的系统都进行了服务集群,随之而来的就是负载均衡策略的实现,如果负载均衡不够“均衡”,在大数量的冲击下,容易导致某些服务的异常或者挂起;

2、基准测试

1)定义

通过设计合理的测试方法,选用合适的测试工具和被测系统,实现对某个特定目标场景的某项性能指标进行定量的和可对比的测试。

2)特质

①、可重复性:可进行重复性的测试,这样做有利于比较每次的测试结果,得到性能结果的长期变化趋势,为系统调优和上线前的容量规划做参考。
PS:这种特质是为了满足基准测试的日常轮询需要。

②、可观测性:通过全方位的监控(包括测试开始到结束,执行机、服务器、数据库),及时了解和分析测试过程发生了什么。
③、可展示性:相关人员可以直观明了的了解测试结果(web界面、仪表盘、折线图树状图等形式)。

④、真实性:测试的结果反映了客户体验到的真实的情况(真实准确的业务场景+与生产一致的配置+合理正确的测试方法)。
⑤、可执行性:相关人员可以快速的进行测试验证修改调优(可定位可分析)。

3)前置条件

基准测试一定要在可控的条件下进行。
面对日益复杂的系统和不断增长的用户数,以及性能测试可能涉及到的多个业务系统,只有做到基准测试所涉及的业务场景、系统架构、测试环境等在可控状态下,才能得到相对准确的结果,为容量规划、缺陷定位、系统调优提供参考和依据。

4)意义

①、为容量规划确定系统和应用程序的极限;
②、为配置测试的参数和配置选项提供参考依据;
③、为验收测试确定系统是否具备自己所宣称的能力;
④、为性能基线的建立提供长期的数据统计来源以及比较基准;

5)前提

①、测试目的:明确测试的目的,测试什么?用什么测试方法、策略?
②、测试环境:被测系统的环境是什么,SIT还是UAT活着PAT?
③、测试限制:要执行测试有哪些限制因素,该如何解决?
④、风险因素:测试可能存在哪些风险,解决方案是什么?
⑤、结果分析:对测试结果如何分析?测试产生的数据如何分析、定位?

6)原则

①、测试策略:稳定且连续的工作负载,多次运行,看测试结果数据的正态分布趋势,尽量取平均值;
②、数据统计:真实环境下测试数据的平均值、峰值各是多少,取值的维度;
③、差异风险:明确存在哪些风险,风险对测试结果的影响,是否忽略;
④、特殊情况:有哪些特殊情况,是否有对应的解决方案(比如支付场景中的支付服务调用,是否采用挡板等);

7)需要考虑的因素

交易配比:某些业务场景,一个流程包含多个事务,在模拟并发中,不同的事务各自的占比;
突发性的读写操作:某些特殊业务场景,会有短时的大流量冲击或者请求数量骤减,该如何模拟(浪涌测试);

系统配置:不同环境的系统配置不同,测试结果如何换算、如何对比?
测试时长:测试执行过程中,运行多长时间,不同交易运行的时间分配等;
结果展示类型:平均值、峰值、百分比值如何展示,如何对比?
成功/失败占比:每次测试过程中,成功和失败的事务占比统计;
是否可重现:如测试过程中出现报错或某些异常情况,是否可以重现?
是否可对比:是否有其他测试工具或者测试结果进行对比(尽量多次执行测试,进行测试结果对比:标准方差、正太分布了解一下?)?

8)简单可行的方法

逐渐增加系统负载是一个确定系统所能处理的最大吞吐量的简单办法,也是寻找系统性能拐点的可行策略(阶梯式加压测试)。

9)重点

基准测试的工作重点是统计分析:可以从以下几个维度去进行统计:
①、选择合适的测试工具,设定合理的测试方法以及需要确认的系统性能指标;
②、选择不同的测试工具,对测试结果进行对比,选择稳定且能反应系统真是性能表现的结果;
③、多次执行测试,收集大量的测试数据集和指标;
④、从不同维度解读分析数据,生成报告。

完整版!企业级性能测试实战,速通Jmeter性能测试到分布式集群压测教程

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

一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九、总结(尾部小惊喜)

人生最珍贵的不是终点站的奖杯,而是追梦路上那个永不放弃的自己。当你觉得撑不住时,请记住:每个伟大的故事都写在最艰难的章节之后。你的坚持,正在创造别人眼中的奇迹!

别被暂时的风雨模糊了双眼!那些让你流泪的磨练,正在雕刻更璀璨的未来。当别人选择放弃时,你的坚持就是胜利的宣言。向前奔跑吧,整个世界都在等待你的光芒绽放!

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

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

相关文章

上位机是什么意思?了解其在工业控制中的用途

上位机是什么?别再只会说“它是电脑”了!你有没有在工控现场听到过这样的对话:“PLC程序跑通了,但上位机连不上。”“数据没传上来,是不是上位机配置错了?”“这个报警要在上位机里设一下阈值。”听起来&am…

架构之最终一致性

架构之最终一致性 概述 在分布式系统中,AP、CP是不能同时满足的,这是铁律。根据CAP定理,当网络分区发生时,系统必须在一致性(Consistency)和可用性(Availability)之间做出选择。为了…

Leetcode 99 删除排序链表中的重复元素 | 合并两个链表

1 题目 83. 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入:head [1,1,2] 输出:[1,2]示例 2: 输入&#x…

基于IAR的PLC编程:完整指南

用IAR打造高性能PLC系统:从零构建实战指南工业自动化正经历一场静默的变革。当越来越多的产线控制器不再依赖传统PLC厂商封闭的编程环境,而是运行在基于ARM Cortex-M7甚至RISC-V内核的“软PLC”平台上时,一个更灵活、更高效、更具扩展性的控制…

display driver uninstaller 结合 DDU 模式进行安全卸载示例

显卡驱动清不干净?一招“DDU 模式”彻底卸载,告别蓝屏与性能下降 你有没有遇到过这样的情况: 刚更新完显卡驱动,结果开机黑屏;玩游戏突然花屏、掉帧;甚至系统频繁蓝屏,提示“VIDEO_TDR_FAILURE…

一文说清TC3中I2C中断的工作原理

深入理解TC3中I2C中断:从硬件机制到实战优化在汽车电子和高可靠性嵌入式系统开发中,英飞凌AURIX™ TC3xx系列微控制器凭借其多核TriCore架构、功能安全支持以及丰富的外设集成能力,已成为ADAS、电机控制和车载网关等关键应用的首选平台。而在…

书籍-E.A.韦斯特马克《人类婚姻史》

E.A.韦斯特马克《人类婚姻史》详细介绍 书籍基本信息 书名:人类婚姻史(The History of Human Marriage) 作者:E.A.韦斯特马克(Edward Alexander Westermarck,1862-1939年) 成书时间:…

从零实现Multisim正确安装避免数据库丢失

如何彻底解决“Multisim数据库未找到”?从零开始的完整安装实战指南 你有没有遇到过这种情况:兴冲冲地装好Multisim,打开软件准备画个电路仿真一下,结果刚点击“放置元件”,弹出一个红色警告—— “multisim数据库未…

计算机毕业设计springboot考试管理系统 基于Spring Boot框架的高校考试管理平台设计与实现 Spring Boot驱动的在线考试管理系统开发与应用

计算机毕业设计springboot考试管理系统5m0cl (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着信息技术的飞速发展,传统的考试管理模式面临着诸多挑战。纸质试卷的…

基于硬件ID定位未知usb设备(设备描述)的实践方法

如何一眼认出“未知USB设备(设备描述)”?从硬件ID入手的实战全解析你有没有遇到过这样的场景:插上一个调试器、传感器或自研板卡,Windows 却只在设备管理器里冷冷地回你一句——“未知USB设备(设备描述&…

USB3.0硬件握手协议时序分析:深度剖析D+ D-信号

USB3.0的“老线新用”:D与D-如何悄悄决定5Gbps通信命运?你有没有想过,一个标称传输速率高达5 Gbps的USB3.0接口,竟然在刚插上的那一刻,靠的是两条“祖传”的信号线——D 和 D-来判断自己该跑多快?这听起来有…

招聘领域的静默革命:AI重构人才选拔的底层逻辑

招聘领域的静默革命:AI重构人才选拔的底层逻辑AI得贤招聘官招聘失误带来的成本损耗,远比企业想象中更为沉重。一次不当的雇佣决策,可能让企业承担该职位年薪30%-50%的直接成本,还会引发团队士气低落、培训资源闲置等连锁问题。在传…

obsidian_url_clipper插件介绍

1. Obsidian URL Clipper 一个支持可视化正文选择的网页剪藏插件 1.1. 插件简介 Obsidian URL Clipper 是一款为 Obsidian 设计的网页剪藏插件,专注于解决传统网页剪藏中最棘手的问题之一: 如何稳定、准确地剪藏网页“正文内容”,而不是整页…

2015年最终终极版诞生~~新手操作一天6000元不是梦

{}MID:MA(CLOSE,21),COLORWHITE; UPPER:MID 1.96*STD(CLOSE,21),COLORYELLOW; LOWER:MID - 1.96*STD(CLOSE,21),COLORYELLOW; UP:MID 2.58*STD(CLOSE,21),COLORFF00FF; LOOW:MID - 2.58*STD(CLOSE,21),COLORFF00FF; {1.96统计学中为95%可信区间,2.58为…

基于vtkPolyData的法向量可视化

代码详细解析 1. 头文件和初始化 #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL); VTK_MODULE_INIT(vtkInteractionStyle);</

计算机毕业设计springboot牙科诊所管理系统 基于Spring Boot的牙科诊所信息化管理系统设计与实现 Spring Boot框架下的牙科诊所管理平台开发研究

计算机毕业设计springboot牙科诊所管理系统j84x1 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着人们对口腔健康的关注度不断提升&#xff0c;牙科诊所的业务量也在逐年增…

快速理解Elasticsearch基本用法中的全文检索机制

从零搞懂 Elasticsearch 的全文检索&#xff1a;倒排索引与相关性排序是怎么工作的&#xff1f;你有没有遇到过这样的场景&#xff1f;日志系统里每天产生上亿条数据&#xff0c;用户输入一个关键词&#xff0c;要求“一秒内给我找出所有包含这个错误码的记录”&#xff1b;或者…

LVGL内存管理入门:了解堆与动态分配策略

LVGL内存管理实战指南&#xff1a;从堆分配到碎片治理的深度解析你有没有遇到过这样的情况&#xff1f;界面切换几次后&#xff0c;按钮突然不响应了&#xff1b;或者动画播放到一半卡住&#xff0c;系统莫名重启。查遍代码逻辑都正常&#xff0c;最后发现——是内存不够了。在…

libwebkit2gtk-4.1-0安装常见问题深度剖析与解决方案

libwebkit2gtk-4.1-0 安装难题实战解析&#xff1a;从依赖地狱到稳定部署你有没有在某个深夜&#xff0c;满怀希望地敲下一行sudo apt install libwebkit2gtk-4.1-0&#xff0c;结果终端却冷冷抛出一串红字&#xff1a;The following packages have unmet dependencies:libwebk…

车载SOA架构下UDS与SOME/IP融合方案探讨

车载SOA时代&#xff0c;诊断还能靠CAN“硬扛”吗&#xff1f;——UDS与SOME/IP融合实战解析你有没有遇到过这样的场景&#xff1a;OTA升级卡在98%&#xff0c;诊断仪连上一看&#xff0c;提示“安全访问未解锁”&#xff1b;自动驾驶系统报了个复合故障&#xff0c;排查一圈才…