软件测试岗位的经典面试题
昨天辅导星球一位同学的终面,他提到了前两轮技术面试中面试官问到的几道面试题,他回答的不是特别好,问我有没有更好的方法。我看了一下,都是很经典的测试岗位面试题。
在我近十年的测试职业生涯中,我也面试过不少软件测试岗位的候选人,这几个问题我也经常问到。但很多同学在这几个高频面试题上,其实并不太了解面试官提问背后的逻辑和目的。
这篇文章,聊聊这几道经典面试题考查的目的,以及如何更好的回答这几个问题。
1、说说最近做过的项目
这个问题考察的重点有如下几项:
简历是否过度包装(阐述的项目经验和简历中的内容是否匹配)。
对参与过的项目是否足够了解(业务流程、核心模块、技术架构)。
在项目中做了哪些事情,有哪些技术实践(便于开展后续的提问)。
项目迭代情况,交付质量,遇到的问题,以及候选人如何解决这些问题。
2、你们的测试流程是什么
这个问题看似简单,其实很多同学在回答的时候容易犯流水账式的回答错误。比较好的回答步骤如下:
说明测试流程的几个核心部分(需求-编码-测试-交付)。
说明项目迭代节奏和交付方式(敏捷交付/版本迭代火车)。
需求阶段,开展需求分析评审,提前暴露潜在风险(逻辑/交互/数值计算),并及时与产品/业务沟通确认。
编码阶段,分析测试点,拆解测试任务,设计测试用例,测试用例评审(与研发保持认知一致),提测前冒烟。
测试阶段,执行测试用例,跟踪缺陷状态,关注业务流/数据流的正确性(而非仅关注用例是否执行完毕),以及资损和异常场景的处理是否合理和优雅。
交付阶段,检查交付清单,组织变更评审(代码/配置/环境),准备并验证应急方案的有效性。线上发布后回归验证以及线上日常巡检。
回答这个问题的重点,要体现出测试岗位,作为 QA 这一质量保障和监督者在不同阶段的工作重心,也可以借此谈谈你对于质量保障这件事的理解。
3、谈谈印象最深刻的 BUG
这个问题算是最为经典的一道测试岗位面试题,很多同学在这道问题上翻过车。这个问题考查的是候选人分析问题解决问题的能力,以及分析问题解决问题的思维逻辑。比较好的回答方式如下:
问题表现:什么场景执行了什么操作产生了什么问题。
问题影响:对项目造成了什么样的影响(影响范围、损失大小、严重程度)。
问题止损:如果是线上问题,则第一优先级是业务止损,再谈如何定位修复。
问题定位:依靠经验和对项目的了解,判断/猜测是哪里出了什么问题导致的。
寻找数据:通过监控、日志等方式寻找相关数据来支撑你的判断/猜测,确认问题根因。
问题修复:找到问题根因后,接着是描述解决问题的思路和解决问题所采用的方案和方法。
结论和 Action:对问题定性,然后阐述后续的改进方向以及行动(技术优化/流程改进/应急预案)。
4、面对线上问题如何应对解决
这道面试题在我近十年的职业生涯中,也仅遇到过三次,不过这道题背后隐含的考察点不少。主要有如下几点:
认知:线上问题才是真的质量问题,测试阶段发现的问题只是过程,不是质量保障的目的。
方法:线上问题无法彻底避免和杜绝,因此需要一些应急手段和预案,比如灰度发布、回滚、降级。
机制:出现线上问题,团队的应急响应效率和应对措施(在线 oncall,应急开关、备份方案、修复验证)。
流程:出现线上问题,优先业务止血,然后才是分析复盘改进落地。流程大致分为这几个步骤:问题汇总-问题分类-抽象总结共性-复盘如何改进-执行改进行动-阐述改进结果。
最后,分享几个准备简历和回答面试问题的小技巧,仅供参考。
专业技能,如果没有实战经验或仅停留在听说过的层面,尽量不要写,避免面试官提问回答不上来,反而会扣分。
技术实践,会就是会,没做过就是没做过。面试官提问的问题大概率是他比较擅长的,几个问题就可以判断出候选人是否有实践经验。因此没实践可以讲思路,没思路可以讲自己对这方面的了解和认知,或者与之有所关联的案例。
有实践经验但没有深入的话,老老实实讲自己负责的部分是如何做的。同时可以扩展问题,讲讲如果扩大覆盖范围或者深入实践,会遇到哪些问题(你听说过或了解过的案例),并说明你会如何做,展现自己的主动学习能力和解决问题的思路,这样有助于提升面试印象分。
版权声明: 本文为 InfoQ 作者【老张】的原创文章。
原文链接:【http://xie.infoq.cn/article/3b29b1233fccc0a606c5c255d】。文章转载请联系作者。
评论