每天一道面试题
让我的分享带给你新思考
我常说一句话;测试人员最重要的财富就是他受过训练的大脑。而其中最重要的,就是他是否具备成熟的测试思维。
今天我们就再用一个大家可能更有切身体会的一个例子。在以前的文章里多次谈到测试思维的重要性,也举了不少例子。不过,既然它如此的重要,那么我们再怎么重复提起它也不为过。
我相信有很多测试人员遇到这个面试题:假设有一个登录功能,页面包括用户名、密码、验证码、登录按钮、注册链接五个元素,请说出有哪些测试点?
我曾经也就这个问题问过一些职者,给大家举几个遇到的回答案例。
案例1:
......
案例2:
先用等价类和边界值划分好之后,再按照用户名和密码有效、用户名无效密码有效、用户名有效密码无效、用户名和密码都无效的方式来测试......
案例3:
......
这几种回答,从我的面试经历来看,都是很常见的回答。也许大家从我的语气中能看出来,每种回答都是存在一些问题的,那么都有什么问题呢?
我听到第一个例子中的回答后,我常会反问求职者三个问题:
第一个问题,有的人会说这是根据无效等价类的思想在测试啊,或者干脆就支支吾吾什么也说不上来。可问题是,这真的是无效等价类吗?只要稍微懂一点编程知识,我想都不会再认为这是在测试无效等价类。
那么一定不需要测试用户名无效的情况吗?也不尽然。举两个例子:
再来说第二个问题,验证“用户名输入特殊字符或超过长度限制的字符串”, 是否是注册时的测试点? 如果把它作为登录的测试点,是否会让面试官觉得求职者连最基本的测试技能都不扎实?甚至理解需求都存在障碍? 如果录用这样的求职者,以后安排的测试任务,是否会存在很大的风险?
当然,这个例子中也反映出,这类求职者在整体性思维方面存在欠缺。
第二个例子中,存在跟第一个例子相似的问题。如果让我来回答这个问题,我可能会取个巧。比如我会说用户名密码的验证上需要参考需求和代码实现,比如代码实现上是先验证用户名是否存在,若存在则继续验证密码....通过这样的小技巧,可以让我们的回答更接地气,突出我们更有实际的测试经验,更关注需求而非想当然的去做测试。
第三个例子中,可能代表这名求职者初步具备了整体性测试思维。为什么说可能呢?因为仅仅从这个回答,无法判断求职者是真的有整体性测试思维,或者仅仅是在某些地方看到锅这道面试题的回答思路。这就需要通过更多的细节来提问。我遇到的那些使用这个方式回答问题的求职者,普遍给我一种“背书”的感觉。这一点,也希望大家引以为戒。
这个问题最好的回答方式是什么呢?
其实对我来说,没有最好的回答方式,我始终对这道题持开放的态度。我希望从求职者的回答中看到不同的东西,当然也不希望因为我的文章,让大家在回答这个问题时产生“思维定势”,这就违背了我的初衷了,也不利于测试人员培养自己的测试思维。
如果确实对这个面试题好奇,可以参考我以前的一篇文章给出的测试思路。