测试工程师面试题及答案_第1页
测试工程师面试题及答案_第2页
测试工程师面试题及答案_第3页
测试工程师面试题及答案_第4页
测试工程师面试题及答案_第5页
已阅读5页,还剩23页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

测试工程师面试题及答案基础理论类1.请简述软件测试的核心目标与常见测试阶段划分?答:软件测试的核心目标不是证明软件不存在缺陷,而是通过系统化的测试活动发现软件中的潜在缺陷、量化评估软件质量水平、降低产品上线后的业务风险、最终保障用户体验符合预期。常见测试阶段按研发流程划分为6个环节:①需求阶段:参与需求评审,识别需求中的逻辑矛盾、边界缺失、不合理点,输出测试需求清单,明确测试范围;②单元测试:针对代码的最小可测试单元(函数、类、单个模块)进行逻辑校验,一般由开发人员执行,以白盒测试为主,核心验证单元内部逻辑的正确性,输入为详细设计文档、代码片段,输出单元测试报告;③集成测试:将多个关联模块组装后测试模块间的接口交互、数据传递逻辑,以灰盒测试为主,核心验证模块间的协作是否符合设计要求,输入为接口设计文档、集成后的测试版本,输出集成测试报告;④系统测试:对完整的可交付系统进行全范围测试,覆盖功能、性能、兼容性、安全性等所有测试维度,以黑盒测试为主,核心验证整个系统是否符合需求规格说明书的所有要求,输入为需求文档、完整测试版本,输出系统测试报告;⑤UAT(用户验收测试):由需求方、产品经理或者终端用户执行,以真实业务场景为核心测试逻辑,验证系统是否满足业务使用要求,是上线前的最后一道质量关卡,输入为业务场景清单、稳定测试版本,输出UAT验收报告;⑥灰度测试:上线后针对小范围用户放量测试,收集真实用户反馈、验证线上环境的系统稳定性,确认无问题后全量上线。2.黑盒测试、白盒测试、灰盒测试的核心差异是什么?分别适用哪些场景?答:三者的核心差异在于测试过程中是否关注软件内部的代码逻辑与实现路径:①黑盒测试:完全不关注内部代码实现,仅将软件看作一个不可见的黑盒,只验证输入与输出是否符合预期。优势是测试视角完全贴近用户,测试用例设计无需编码基础,劣势是无法覆盖内部逻辑分支,容易遗漏隐藏缺陷。适用场景包括系统功能测试、UAT测试、用户端体验测试、兼容性测试。②白盒测试:完全开放软件内部逻辑,针对代码的路径、分支、变量、逻辑判断进行全覆盖测试,优势是测试粒度细,能发现代码层面的底层缺陷,劣势是测试成本高,对测试人员的编码能力要求高,且无法覆盖用户体验类问题。适用场景包括单元测试、代码安全扫描、核心逻辑模块的路径覆盖测试。③灰盒测试:结合两者的特点,仅关注模块间的接口交互、数据传递逻辑,不需要深入了解单个模块的内部代码实现,兼顾了测试效率与覆盖深度。适用场景包括集成测试、接口测试、服务间调用链路测试。用例设计类3.常用的测试用例设计方法有哪些?请分别举例说明适用场景。答:常用方法共6种,可根据测试场景组合使用:①等价类划分法:将输入域划分为有效等价类(符合需求的合法输入)和无效等价类(不符合需求的非法输入),同一等价类中的输入测试效果一致,可大幅减少用例数量。适用场景为所有带输入框的功能测试,例如手机号输入框,有效等价类为11位1开头的合规手机号,无效等价类为10位数字、非1开头的11位数字、含字母/特殊字符的内容、空值等。②边界值分析法:针对输入域的边界值设计用例,是等价类划分法的补充,统计显示80%的缺陷出现在输入边界而非中间区间。适用场景为带数值范围限制的功能,例如输入框限制输入1-100的整数,测试边界为0、1、99、100、101;再如分页功能每页最多展示10条数据,测试边界为第10条、第11条数据的展示逻辑。③错误推测法:基于测试人员的行业经验、历史缺陷数据、业务特性推测可能出现缺陷的点,针对性设计用例。适用场景为复杂业务场景、历史迭代中缺陷率较高的模块,例如测试登录功能时,基于经验设计“连续输错3次密码是否触发账号锁定”“退出登录后点击浏览器后退键是否可以回到登录后页面”等用例。④场景法:以用户真实业务流程为核心,将主流程、分支流程、异常流程组合为不同的业务场景进行测试,也叫流程图法。适用场景为业务流类功能,例如电商下单场景,覆盖主流程(登录-选品-加购-结算-支付-查看订单)、分支流程(选择不同支付方式、选择优惠券)、异常流程(支付时余额不足、下单时库存不足)。⑤因果图法:针对多输入条件存在关联、共同影响输出结果的场景,通过梳理输入与输出的因果关系设计用例,避免遗漏输入组合。适用场景为多条件判断类功能,例如注册页面要求用户名长度6-12位、密码长度8-16位、验证码正确三个条件同时满足才能提交,需覆盖所有条件不满足的组合场景。⑥正交试验法:针对多输入、多水平的场景,通过正交表选择最少的用例覆盖最多的输入组合,大幅降低测试工作量。适用场景为多参数组合的功能,例如搜索功能有3个筛选条件,每个条件有4个可选项,全量组合有64种用例,通过正交表仅需16条用例即可覆盖90%以上的组合场景。4.请设计微信发红包功能的测试用例,要求覆盖核心场景。答:从功能、非功能、异常三个维度设计用例:①功能测试:金额类:验证0.01元-200元的合法金额可正常发送,验证超过200元、0元、负数、小数位超过2位、非数字内容输入时的提示是否符合预期,验证拼手气红包总金额/个数的最小值是否满足单个红包不低于0.01元;发送对象类:验证单个好友、群聊、黑名单用户、已删除好友、陌生人的发送逻辑是否符合预期,验证群聊红包可指定领取人、可设置拼手气/普通红包类型;支付类:验证余额、银行卡、零钱通等支付渠道的红包发送逻辑,验证支付失败后的重发、支付超时后的订单关闭逻辑是否正常;接收类:验证红包领取后金额可正常入账,24小时未领取的红包可原路退回至原支付渠道,群聊红包的领取记录、剩余金额展示正确;扩展功能类:验证红包备注支持的字符长度、特殊字符展示逻辑,验证表情包红包、专属红包等衍生功能的正确性。②非功能测试:性能:验证弱网(丢包率30%、延迟500ms)下红包发送不会重复提交,除夕高并发场景下红包发送响应时间不超过1s,无金额错发、重复到账问题;兼容性:验证iOS、安卓不同系统版本、不同微信版本的红包收发、样式展示逻辑一致;安全:验证抓包篡改红包金额、领取人ID的请求会被拦截,不存在越权领取他人红包、XSS注入漏洞。③异常场景:验证发红包过程中断网、杀进程后,重新打开微信的订单状态同步正确;验证发红包后被对方删除、发群红包后被移出群聊的领取逻辑符合预期;验证红包发送方账户冻结时,未领取的红包退回逻辑正确。自动化测试类5.请简述自动化测试的适用场景与不适用场景,以及自动化测试的落地流程。答:自动化测试的核心价值是降低重复测试的人工成本、提高测试效率,投入产出比(ROI)是判断是否适用的核心标准。适用场景包括:版本迭代频繁的回归测试、每次上线前固定执行的冒烟测试、接口全量回归测试、高并发性能测试的压测脚本、多浏览器/多设备的兼容性测试。不适用场景包括:需求频繁变动的模块(脚本维护成本超过人工测试成本)、仅上线一次的定制化项目、需要人工主观判断的场景(如UI美观度、语音识别的语义准确率)、交互逻辑极其复杂的场景(如手绘、多触点手势操作,脚本稳定性极低)。自动化测试落地流程分为6个步骤:①需求评估:梳理所有测试模块的迭代频率、用例重复执行次数,筛选ROI≥1的模块纳入自动化范围,优先覆盖核心主流程、高优先级用例;②框架选型:根据测试类型选择匹配的技术栈,接口测试可选Requests、Pytest,UI测试可选Selenium、Appium、Cypress,性能测试可选JMeter、Gatling,优先选择与团队技术栈匹配、社区生态完善的框架;③用例梳理:筛选稳定、优先级高、断言清晰的用例作为自动化用例,剔除需要主观判断、逻辑频繁变动的用例;④脚本开发:采用页面对象模式(POM)、数据驱动模式(DDT)将脚本、元素定位、测试数据分离,加入断言、日志收集、失败重跑、异常截图机制,提高脚本可维护性;⑤脚本调试:在测试环境完成单脚本、批量脚本的调试,解决动态元素定位、等待机制、测试数据冲突等问题,确保脚本通过率稳定在98%以上;⑥集成与维护:将自动化脚本集成到CI/CD流水线,代码提交时自动执行冒烟用例、上线前自动执行全量回归用例,设置质量门禁,通过率不达标则阻断上线;每次需求迭代同步更新对应脚本,定期清理无效用例,维护脚本可用性。6.接口测试和UI自动化测试的核心差异是什么?分别有哪些优缺点?答:核心差异在于测试层级不同:接口测试跳过前端页面,直接测试前后端、服务与服务之间的请求交互逻辑;UI自动化模拟用户真实操作,在前端页面层面执行测试流程。接口测试的优势:执行速度快,单接口执行时间仅需几十毫秒;稳定性高,只要接口参数、返回值规则不变,前端页面迭代不影响脚本可用性;可覆盖前端无法测试的场景,例如参数篡改、前端校验绕过的权限问题;支持测试左移,前端页面开发完成前即可提前启动接口测试,缩短项目周期。劣势:不贴近用户真实操作路径,无法覆盖页面交互、样式展示类缺陷。UI自动化的优势:完全模拟用户真实操作,可覆盖端到端的全流程场景,能发现页面交互、样式适配、路径跳转类缺陷。劣势:执行速度慢,单流程用例执行时间需要几十秒到数分钟;稳定性差,前端页面的元素ID、样式、布局调整都会导致脚本失效;维护成本高,需求迭代时脚本更新工作量大。两者适用场景互补:接口自动化适合做全量接口回归、权限校验、异常参数测试;UI自动化适合做核心用户路径的冒烟测试、端到端场景的回归测试。7.你在做自动化测试过程中遇到过哪些常见的稳定性问题?是怎么解决的?答:常见问题及解决方案如下:①页面元素定位失败:原因包括元素ID动态生成、页面加载延迟、元素被弹窗/悬浮层遮挡。解决方案:放弃绝对路径,采用相对路径的XPath、CSS选择器定位元素,优先使用name、class、text等稳定属性;放弃全局隐式等待,针对单个元素设置显式等待,等待元素加载完成后再执行操作;元素被遮挡时,先执行滚动到元素可见区域、关闭弹窗的前置操作。②测试数据冲突:多脚本并行执行时,共用同一测试账号、同一订单数据导致断言失败。解决方案:每个自动化用例绑定独立的测试账号与测试数据,脚本执行前先执行数据初始化操作,执行完成后做数据清理,避免脏数据影响后续用例;采用数据驱动模式将测试数据与脚本分离,支持动态生成唯一测试数据(如时间戳后缀的用户名、订单号)。③环境不稳定导致脚本误判:测试环境服务重启、数据库宕机、依赖第三方接口不可用导致脚本执行失败,被误判为业务缺陷。解决方案:增加环境预检脚本,自动化执行前先检测所有依赖服务、数据库、第三方接口的可用性,环境异常时停止执行并发送告警,不纳入脚本成功率统计。④动态参数无法处理:接口请求需要的token、验证码、时间戳为动态参数,硬编码会导致脚本失效。解决方案:增加前置请求,登录获取token后存入公共变量,所有后续接口自动带入变量;测试环境关闭验证码校验,或开发提供万能验证码、验证码获取接口;时间戳、签名等参数通过脚本动态生成。性能测试类8.性能测试的核心指标有哪些?分别代表什么含义?答:核心指标分为后端服务指标与前端体验指标两类:后端指标:①响应时间(RT):从客户端发起请求到收到服务端完整响应的总耗时,包括网络传输时间、服务端处理时间、数据库查询时间,核心业务接口的响应时间要求≤200ms,复杂查询接口要求≤1s。②吞吐量(TPS/QPS):TPS指系统每秒处理的事务数,QPS指每秒处理的请求数,代表系统的整体处理能力,数值越高性能越好,需满足业务峰值要求(如电商大促时下单接口TPS要求≥5000)。③并发用户数:同一时间向系统发起请求的用户数量,区分在线用户数(登录系统但未发起操作的用户)与并发用户数(同时发起操作的活跃用户)。④错误率:失败请求占总请求数的比例,生产环境要求错误率≤0.01%,压测时正常负载下错误率需为0。⑤资源利用率:包括服务端CPU、内存、磁盘IO、网络带宽的使用率,正常压测下CPU使用率≤70%、内存使用率≤80%,无持续增长的内存泄漏问题。前端指标:核心为WebVitals三项指标:LCP(最大内容绘制)≤2.5s,代表页面加载速度;FID(首次输入延迟)≤100ms,代表页面交互响应速度;CLS(累积布局偏移)≤0.1,代表页面布局稳定性。此外还包括白屏时间、首屏加载时间、DOM渲染完成时间等。9.简述性能测试的完整流程,以及如果压测过程中发现TPS上不去,可能的原因有哪些?答:性能测试完整流程分为6个环节:①需求分析:明确性能测试的核心场景(如登录、下单、搜索等高并发场景)、性能指标要求(如TPS阈值、响应时间阈值、并发用户数),输出性能测试方案;②环境准备:搭建与生产环境硬件配置、服务版本、数据量一致的压测环境,压测环境需隔离,避免与其他测试任务共用资源影响测试结果;③脚本开发:录制/编写压测脚本,对测试数据做参数化处理,添加请求断言,设置符合用户真实操作的思考时间,调试单用户脚本确保业务逻辑正确;④测试执行:依次执行基准测试(单用户跑通核心流程,记录基准响应时间)、负载测试(逐步增加并发数,观察TPS、响应时间的变化曲线,找到系统吞吐量拐点)、压力测试(在峰值并发下持续运行,验证系统稳定性)、稳定性测试(7*24小时长时间压测,验证是否存在内存泄漏、资源未释放问题);⑤性能调优:针对压测中发现的性能瓶颈,联合开发、运维做根因分析,优化后重新压测验证,直到满足性能指标要求;⑥报告输出:输出性能测试报告,包含测试环境说明、压测数据、瓶颈分析、优化建议、最终测试结论。TPS上不去的常见原因:①服务端资源瓶颈:压测时服务器CPU、内存使用率达到100%,磁盘IO、网络带宽被占满,导致请求堆积;②数据库瓶颈:存在大量慢SQL、未添加索引、数据库连接池满、锁等待时间过长、数据库读写未分离导致查询压力过大;③应用代码瓶颈:代码存在死循环、同步锁竞争激烈、未做缓存导致每次请求都查询数据库、内存泄漏导致服务运行缓慢;④中间件瓶颈:Nginx、Tomcat的最大连接数配置过低,网关设置了限流规则,消息队列堆积导致请求无法及时处理;⑤压测端瓶颈:压测机的CPU、带宽不足,无法模拟足够的并发请求,脚本参数化配置错误导致大量请求被缓存,无法打到真实服务;⑥网络瓶颈:压测机与服务端之间的网络延迟过高、带宽不足,导致请求传输耗时过长。缺陷管理类10.一个完整的缺陷报告应该包含哪些核心字段?缺陷的生命周期是怎样的?答:核心字段包括:缺陷唯一ID、缺陷标题(简洁描述问题)、所属模块、严重程度(致命:导致系统崩溃、数据丢失、资金损失;严重:核心功能不可用;一般:次要功能异常、不影响主流程;建议:用户体验优化类问题)、优先级(高:需要立即修复,阻塞后续测试;中:当前迭代修复;低:可后续迭代优化)、复现步骤(清晰可复现,step1/step2/step3列清楚)、预期结果、实际结果、测试环境(系统版本、APP版本、测试账号、设备型号)、提交人、提交时间、附件(截图、录屏、错误日志)、备注信息。缺陷生命周期:新建→指派→确认→修复→回归→关闭,中间存在两个分支:如果开发确认不是缺陷,直接驳回并说明原因,测试验证后可关闭缺陷;如果缺陷当前迭代无法修复,经测试、产品、开发三方评估风险后,可标记为延期,纳入后续迭代修复计划;如果回归验证发现缺陷未修复,可重新打开,回到修复环节。11.如果你发现了一个缺陷,开发认为不是缺陷,你会怎么处理?答:按以下流程处理,避免无效沟通:①首先自查问题:严格按照复现步骤多次操作,确认缺陷可稳定复现,排除测试环境异常、操作流程错误、测试数据错误导致的误报;②收集需求依据:查阅需求文档、原型图、设计稿,确认问题不符合需求的明确要求,带着需求依据与开发沟通,客观说明需求与实际实现的差异;③业务视角评估:如果需求文档未明确约定该场景的规则,站在用户体验、业务合理性的角度评估问题影响,同步产品经理确认是否符合业务预期,如果产品判定为缺陷,拿着产品的结论与开发沟通;④三方评审对齐:如果开发仍不认可,组织测试、开发、产品三方评审,明确问题的影响范围、上线风险,共同达成一致结论,若判定为缺陷则明确修复时间,若判定为非缺陷则记录评审结论,后续有用户反馈再跟进;⑤全程留痕:所有沟通记录、评审结论都备注在缺陷报告中,避免后续出现问题追责不清。敏捷与DevOps类12.敏捷开发模式下,测试工程师的工作流程和传统瀑布模式有什么区别?你是怎么适配敏捷开发的?答:核心区别在于测试介入的时间点与工作模式不同:瀑布模式是线性流程,需求、开发、测试、上线各阶段完全分离,测试在开发全部完成后才介入,测试周期长,需求变更成本极高;敏捷模式是小步迭代,每个迭代周期为1-2周,交付一个可运行的最小版本,测试从需求阶段就全程介入,测试与开发并行,支持快速响应需求变更。适配敏捷开发的方法:①测试左移:全程参与需求评审、迭代规划会,提前识别需求中的逻辑漏洞与不合理点,减少后续返工风险,开发编码阶段同步编写测试用例、准备测试数据,开发提测后可立即启动测试;②灵活调整用例粒度:迭代周期短,无需编写过于详细的用例,核心主流程用例结构化输出,次要功能采用探索式测试覆盖,平衡测试效率与覆盖度;③自动化体系支撑:搭建自动化冒烟、回归测试体系,每次开发提测后自动跑通核心主流程,节省手动冒烟的时间,迭代上线前自动跑全量回归用例,保障老功能不受新需求影响;④高频同步沟通:参与每日站会,同步测试进度与阻塞问题,遇到缺陷即时拉通开发、产品对齐,避免问题堆积到迭代末期才暴露,影响上线时间。13.你了解DevOps吗?测试在DevOps流程里的作用是什么?答:DevOps是打破开发、测试、运维的部门墙,通过工具链实现持续集成、持续交付、持续部署,缩短上线周期、提升交付质量的研发模式。测试在DevOps流程中承担全链路质量保障的核心作用:①质量左移:在需求阶段、编码阶段介入,参与需求评审、单元测试评审、代码静态扫描,提前发现代码缺陷与逻辑问题,将缺陷拦截在研发早期;②自动化质量门禁搭建:将单元测试、接口自动化测试、UI自动化测试、安全扫描脚本集成到CI/CD流水线,代码提交后自动执行单元测试、代码扫描,不达标则阻断代码合并;提测前自动执行冒烟测试,不达标则驳回提测;上线前自动执行全量回归测试,不达标则阻断上线,从流程上保障交付质量;③质量右移:上线后参与线上灰度测试、用户反馈收集、线上业务监控,针对线上异常及时告警、快速定位,配合开发、运维实现线上问题的快速回滚与修复,将线上故障影响降到最低;④质量数据度量:收集需求缺陷率、迭代通过率、线上故障数等质量数据,定期输出质量报告,反向优化研发流程,提升整体交付质量。场景实战类14.某电商APP上线后,有用户反馈下单时支付成功了,但是订单状态还是待支付,你会怎么排查这个问题?答:按从前端到后端、从业务到数据的逻辑逐步排查:①复现问题:用用户提供的相同操作路径、相同支付渠道复现问题,复现过程中抓取前端请求日志、接口返回值,确认问题触发条件;②前端逻辑排查:检查支付成功后前端是否调用了订单状态更新接口,是否存在前端缓存未更新的问题,清除缓存、刷新页面后确认订单状态是否正常;③支付回调排查:查看第三方支付平台的回调日志,确认是否向服务端发送了支付成功的回调请求、回调参数是否正确,确认服务端是否收到回调、回调接口是否返回成功,排查是否存在回调网络超时、幂等校验逻辑错误导致回调未生效的问题;④后端逻辑排查:查看订单服务、支付服务的日志,确认支付服务收到回调后是否向订单服务发送了状态更新通知,订单服务是否成功更新订单状态,排查是否存在事务提交失败、分布式锁冲突、消息队列堆积导致状态更新延迟的问题;⑤数据一致性排查:查询数据库的订单表、支付流水表,确认支付流水表存在成功记录、订单表状态为待支付,排查是否存在分布式事务一致性问题,支付服务扣减余额成功但订单服务未更新状态;⑥应急处理与优化:排查到根因后,第一时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论