面试官:卡秋同学,现在给你一个登陆页面你如何测?
(满脸不削于坏笑…)
比卡丘:嗯…啊…,先测个空密码,再测个超长用户名…
面试官(我):好了同学,先回家等通知吧…
首先我想为面试的同学抱不平,这类面试问题本来就是一场信息不对等的较量。面试官了解问题上下文背景,题库的答案可能也了然于心。他们站在一个制高点俯视你,你若紧张,张口就直奔细节,结果只有一个,就是跪…
一.解读:
面试时间仓促,面试官要的不是一份精确的测试方案或测试设计。重点关注的是求职者的系统思考能力和表达能力。
二.应对策略:
1.变被动为主动
主动向面试官寻求更多的上下文信息:需求背景、产品背景(技术栈、业务流程)等等。虽然明知不会得到准确答案,但要告诉面试官,你是一个从问题出发的系统思考着,你是一个关注全流程的敏捷测试人员,而不是一个被动的测试小工。甚至你可以直接告诉面试官,我只能在有限的的上下文信息中,做有限的测试分析。
2.缩小你的问题域
即使是一个简单的登陆页面,我们也可以拆分出很多的测试需求。比如登陆页面我们拆分出:账户/密码认证登陆、数字证书认证登陆、扫描登陆、第三方认证登陆、生物特征识别登陆…
你可以先像这样将测试需求做顶层的单功能拆分和参数,并告诉面试官由于时间关系,我们先讨论XX单功能的测试。
3.系统化的方式去描述你的测试点
测试人员应深刻理解,软件测试是分层的,而在每一层,我们都可以从软件的8大质量属性去思考测试点。
例如:账户/密码认证登陆这个单功能,分别在不同分层考虑功能性:
1.系统(UI)测试层面:
功能性:WEB UI层面考虑账户密码支持各种字符类型、编码类型、数据长度、验证码…(同时关注正向测试和负向测试)
2.集成(接口)测试层面:
功能性:剥离前端页面,直接使用接口测试工具,构造POST登陆认证请求发给后端。当然可以进一步详细验证前端与Web中间件之间的接口(如Base认证)、中间件与后端代码逻辑之间的接口、后端与数据库接口等等
3.单元(函数/模块)测试层面:
功能性:打桩与数据库接口或者其他依赖接口,写UT详细验证逻辑相关的函数/模块。