考核测试策略的类型
这一类问题主要出现在如果面试的岗位和当前公司的岗位很匹配的情况下, 或者面试官也是这一领域里面, 他会使劲的问测试策略。 比如我是在 AI 领域中的, 我这一次找的工作也大多数是做 AI 的团队, 所以经常遇到如下问题:
如果评估模型的效果? 类似于问怎么做效果测试。 这个问题在 AI 圈子里属于最常问的问题, 一般听说过的同学基本都知道采集数据灌入模型然后评估模型预测的正确率。 但是如果这么简单的回答基本是会跪的。 因为其实这个测试类型还蛮复杂的, 模型效果涉及到很多东西。 比如线上模型和线下模型的效果一致性, 不同类型的模型的评估指标都有什么。 整个模型的生命周期中分成哪些阶段, 每个阶段怎么测试来保证效果。 做效果测试的时候数据如何采集等等。 这类的问题肯定不是一两句话能说清楚的, 需要候选人更全面的分析每个场景和对应的测试方案。
在大数据产品里都做过哪些测试方案? 同样是一个很大的问题, 我的答题思路是批处理和流计算要分别说, 批处理方面就涉及到了功能,性能,数据倾斜,异常场景, 数据及时性。 流计算里功能,性能,数据一致性。 同样共性的都要做监控,批处理的监控主要是写 spark 程序扫描数据, 而流计算主要是写一段 Flink 来对接消息中间件来扫描数据。 白盒测试方面需要去研发的 repo 里以 UT 的形式去测试 UDF 和 UDAF, 还要去拆流,把大的流拆成若干个小流进行集成测试。 同样不管批处理还是流计算在数据领域不管是功能还是性能测试都避免不了造数这个话题。 需要分析一下需要造数进行测试的场景, 怎么造数, 甚至介绍一下自己的造数工具的思路。 我自己的思路无非就是批处理用 spark, 流计算用消息中间件的客户端。
如果测试产品的稳定性?这个问题容易理解为问你如何开展混沌工程。 因为混沌工程的目的就是测试产品的高可用架构在生产环境下出现故障的时候是否有足够的容错能力保证产品继续的稳定提供服务。 但混沌工程的这种故障注入进行测试只是一个思路, 所以我回答的时候也说明了在云原生架构下, 如何从服务调度方面,镜像规范方面, 容器编排规范方面来保证服务的稳定性。 因为有些时候调度策略不对或者镜像太大或者没有设置合理的探针,资源规划都会导致服务的不稳定。 而混沌工程方面也会展开来说在不同的场景下主要注意的地方, 比如在流计算场景里更注意的是故障在触发后会不会造成数据不一致的情况。 所以验证点就不是业务正常的返回, 还要验证数据是否正确。
总结一下这类问题跟上面说的技术深度不一样, 考核技术深度的时候是一条线的使劲往深了问, 而这种测试策略类型的问题我理解更看重的是候选人能否从整体的角度全面的介绍你的测试策略。 毕竟这个级别不是大头兵了, 需要负责一个方向,不能是只在一个点上发力。 个人理解这种问题会比较少扣技术细节, 更关注的是候选人对特定业务的测试方案的理解是否足够全面。我们在日常工作里很多人可能只是负责某一块东西, 很难能熟悉所有的测试方案, 比如从效果测试来说我们团队其实有人专门做在线效果测试, 有人专门做离线, 有人专门做一致性,有人专门做数据正确性测试, 并不是效果测试中所有的场景都交给一个人来测试。所以平时工作的时候除了自己负责的测试外, 还是建议大家都关注一下其他人做的测试类型, 给自己形成一个整体的测试思维和视角。 这一点我自己也有所不足, 我更擅长的是机器学习场景, 而深度学习类比如 CV,NLP,OCR 我都不太熟,回答问题的这时候这部分有些缺失。
考核管理能力/软性素质/测试理念/业务理解 等
比较懒了我就把这些类型都汇总在一个标题里了, 回答这类问题有话术, 需要候选人口才好, 说话逻辑清晰, 并且对于问题有自己独到的见解, 我列一下我被问到的印象深刻的几个问题。
你是如何理解工程效能的?
你是如何理解 QA 这个职业的?
如果给你一个 40 人左右的团队, 你如何管理,如何展开招聘工作
如果设计一个国内通用的可以评估自动化测试的效果的模型,你考虑一下这个模型要怎么设计, 要从哪些维度评估。
在推进工具/平台/流程 的时候遇到不配合的团队怎么处理?
大概介绍一下产品的业务,盈利模式,公司对这个产品的策略
如何度量你的自动化测试方案/工程效能工具 的成本,收益
你如何证明当前的产品的质量是 OK 的
你如何设计你所在产品的质量保障体系
首先这类问题大多数是没有正确答案的,每家公司的理念不一样, 仁者见仁智者见智。 有些看运气, 就是看你回答的理念符不符合面试官的价值观, 不符合的话别想太多就认栽吧。 然后回答这类问题的时候很看你的表达能力, 言语之间的逻辑性比较重要。 个人觉得最关键的是对这类问题要事前有准备, 否则容易被打个措手不及。 平时工作的时候也要多注重一些系统性思维的思考, 对以后都是有帮助的。
总结
剩下的有些问题我自己也记不清楚了, 就主要列上面那 3 个大类吧。 整体看除了考核算法有固定的题库外, 其他的问题基本都是根据我简历里描述的项目来展开问的, 所以好好准备自己简历中描述的内容十分重要, 结合我自己做面试官的经验, 逻辑表达能力其实也是占了一个比较重要的位置。 如果在回答上述这些问题的时候逻辑混乱, 磕磕巴巴,前言不搭后语, 那面试可能也是会挂的。 所以事前准备真的很重要, 只要是简历里写的,都要自己过好几遍, 能预想到的问题都准备好答案背下来, 比如项目描述, 测试方案这些东西。 并且整个技术方案的前因后果也要准备好, 因为有些面试官会比较喜欢问你为什么要推进这个技术方案, 是遇到什么问题导致的? 还是你自己主动推进的? 推进这个技术方案遇到了什么问题, 这个技术方案有什么优势, 后面的拿到了什么结果, 怎么度量你的结果。 面试官会根据简历写的东西使劲扣, 所以事前准备好是非常重要的。 自己简历里写的内容一定要经得起考验, 否则勾起面试官的兴趣后最后缺比较失望,那就很影响面试结果了。