常见的性能测试缺陷有哪些?你都遇到过吗

前言

性能测试,是结合被测系统应用架构、业务场景和实现细节、逻辑,对软件响应时间、处理速率、容错能力等进行分析测试,找到系统的性能瓶颈,并确认问题得到解决的过程

由于工作需要,对性能测试缺陷分类进行了整理,这篇博客,聊聊常见的性能缺陷以及表现方式。

性能测试缺陷分类

缺陷类型缺陷描述
硬件磁盘空间
CPU
IO读写速率
内存
网络带宽
网络波动
CDN
延时
丢包
配置JDK版本
底层配置
参数配置
数据库索引
表空间
慢SQL
数据量
中间件超时
线程池
缓存策略
最大连接数
通信实现方式
负载均衡

一、硬件

磁盘空间:磁盘空间不足导致系统运行变慢,文件、日志等无法生成存放导致的性能瓶颈;

CPU:CPU的核心功能是解释计算机指令以及处理数据,性能主要体现在其运行程序的速度上。影响运行速度的性能指标包括工作频率、Cache容量、指令系统和逻辑结构等参数;

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

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

二、网络

带宽:高并发情况下,如果带宽不足,可能会导致网络资源竞争,超时等情况;

网络波动:这里是从网络的稳定性来描述,即性能测试的环境,需要一个稳定的网络环境;

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

延时:延时的值越大,对系统性能表现影响越大(比如格斗类的PVP游戏),且性能测试的结果也存在更大的偏差;

丢包:数据在网络上是以数据包的形式传输的,如果丢包,则可能造成报错或异常的情况;

三、应用

1、JVM

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

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

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

2、代码逻辑

常见的情况有不合理的线程引用和内存分配;

四、配置

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

底层配置:涉及到操作系统、服务器等硬件的一些配置方式不合理,带来的性能瓶颈;

参数配置:系统架构设计中,各个不同的参数配置带来的性能瓶颈;

五、数据库

索引:索引的存在就像一个标签目录一样,在执行数据库操作时提供更为快速的执行效率,减少磁盘IO操作和执行的数据库系统时间;

锁:为了保证事务的原子性和隔离性,有了锁的存在,但有时候由于某些原因造成的表锁,也是性能瓶颈的一种表现;

表空间:不合理的表空间设计,导致的数据库性能问题;

慢SQL:慢SQL会导致数据库操作时间变长,增加IO读写以及引起一些列的资源竞争等问题,常见的慢SQL原因如下(以MySQL为例):

数据量:对同一张表来说,1W条数据和1000W条数据,对其进行操作时的性能表现也是不同的,因此在性能测试时对于数据的正确性可用性,以及数据量也是需要重点关注的;

六、中间件

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

线程池:线程池配置太小,很容易被使用完,太大的话又浪费资源,合理的线程池,建议进行配置测试来确定;

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

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

通信实现方式:同步(sync)和异步(Async);

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

最后感谢每一个认真阅读我文章的人!作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,坚持几天便放弃的感受的话,在这里我给大家分享一些软件测试的学习资源,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,希望能给你前进的路上带来帮助。如果你用得到的话可以直接拿走:

软件测试资料领取:[内部资源] 想拿年薪40W+的软件测试人员,这份资料必须领取~

软件测试面试刷题工具领取:软件测试面试刷题【800道面试题+答案免费刷】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

<think>好的,我现在需要帮用户解答关于校大学生找测试工程师实习岗位常见的面试题。首先,用户可能对测试工程师的职责和所需技能不太清楚,所以得先涵盖基础概念。然后,考虑到是实习生岗位,公司可能更关注基础知识和学习能力,所以应该包括理论题和简单的实践题。 接下来,我应该分几个部分来组织回答。比如基础知识、测试方法、工具使用、逻辑思维、项目经验、开放性问题等。每个部分都要列出常见的题目,并且给出例子,这样用户更容易理解。 需要确认常见的测试方法,比如黑盒、白盒测试的区别,测试用例的设计方法。工具方面,可能会问到Postman、JMeter、Selenium等,但实习生可能不需要太深入,所以基础问题即可。 逻辑思维题可能包括编程基础,比如简单的算法或SQL查询,或者脑筋急转弯。项目经验部分,用户可能没有实际经验,但可以引导他们描述课程项目或自学实践。 开放性问题需要考察沟通和团队合作能力,以及学习意愿。例如遇到意见不合怎么办,或者如何快速学习新技术。 还要注意提醒用户准备简历上的内容,因为面试官可能会根据简历提问。最后,建议用户多练习,了解公司业务,这样在面试中更有针对性。 可能遗漏的部分是测试流程和生命周期,比如测试计划、用例编写、执行和报告。这些也是常见的问题点,需要补充进去。 确保所有点都用中文,并且使用正确的LaTeX格式,但用户的问题里没有数学公式,所以可能不需要太多。不过如果有涉及的地方,比如边界值分析的例子,可能需要用行内公式,比如$0-100$的范围边界是-1,0,100,101。 最后检查结构是否清晰,是否覆盖了常见问题,语言是否易懂,适合在校大学生的水平。</think>以下是针对在校大学生应聘测试工程师实习岗位的常见面试题整理(按考察方向分类): --- ### 一、基础概念类 1. **软件测试生命周期** - 测试计划 → 测试设计 → 测试执行 → 缺陷跟踪 → 测试报告 2. **黑盒测试 vs 白盒测试** - 黑盒:关注输入输出,不关心内部代码(如等价类划分) - 白盒:基于代码结构测试(如路径覆盖) 3. **测试用例设计方法** - 等价类划分(如输入$0-100$时边界值取-1,0,100,101) - 边界值分析、因果图、场景法等 --- ### 二、场景分析类 1. **电梯测试用例设计** - 功能:楼层按键、超重报警、开关门异常 - 性能:满载运行速度、断电保护 2. **登录功能测试点** - 用户名/密码格式校验、错误次数锁定、第三方登录兼容性 --- ### 三、工具与实践类 1. **Postman基础** - 如何发送GET/POST请求?怎样做参数化测试? 2. **SQL基础** - 查询成绩大于80的学生:`SELECT * FROM students WHERE score > 80` 3. **Linux常用命令** - 查日志:`grep "error" logfile` - 看进程:`ps -aux | grep java` --- ### 四、逻辑思维类 1. **过桥问题** "4人过桥,手电筒仅30分钟,时间分别为1/3/6/8分钟,两人同行以慢者为准" - 关键点:利用最快者多次往返传递手电筒 2. **水杯缺陷描述** "向面试官描述你面前的水杯,至少说出10个测试点" - 示例:容量刻度准确性、隔热性能、杯盖密封性、材质毒性检测 --- ### 五、编程能力类 1. **Python基础** ```python # 判断素数 def is_prime(n): if n <= 1: return False for i in range(2, int(n**0.5)+1): if n%i == 0: return False return True ``` 2. **简单算法** - 冒泡排序实现 - 斐波那契数列递归/非递归写法 --- ### 六、开放性问题 1. **缺陷跟踪流程** "发现bug后如何处理?" - 标准流程:复现→记录(截图/日志)→提交JIRA→验证修复→闭环 2. **沟通冲突场景** "开发不认可你提交的bug怎么办?" - 对策:提供复现步骤/日志证据,参照需求文档沟通,必要时请PM确认 --- ### ★ 高频考点总结 | 考察维度 | 典型问题 | |----------------|--------------------------------------------------------------------------| | 测试思维 | 如何测试一个扫码支付功能? | | 缺陷管理 | Bug生命周期包含哪些状态? | | 计算机网络 | HTTP状态码200/404/500分别代表什么? | | 学习能力证明 | 最近3个月学习了哪些测试相关技术? | --- ### 准备建议 1. 刷题平台:LeetCode简单算法、牛客网测试专项练习 2. 实战准备:用MindMap梳理测试用例设计思路,GitHub上传测试工具实践demo 3. 简历重点:突出课程设计(如数据库项目)、测试相关竞赛(如大学生测试大赛) 实习面试更关注基础能力与成长潜力,遇到不会的问题可坦诚回答但需展示解决问题的思路。建议提前研究目标公司业务,在面试中关联其产品特性会加分哦! ✨
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值