引言
作为软件测试工程师,我们都会经历面试。我常对我的学员说,面试的时候,对于面试官提问的任何问题,不要着急回答,先花几秒钟时间思考面试官提问这个问题的目的:他们为什么要提问这个问题?他们希望听到什么样的答案?他们希望了解求职者哪方面的素质?
思考这些问题有助于避免“答非所问”。
得益于网络,现在可以很轻松的从网上搜索到很多的面试题以及回答的思路。需要注意的是,网上非常多的“参考答案”并非正解。比较典型的就是“说说你的职业规划?"“你对加班怎么看?”
曾经作为面试官,在人才选用方面,我的一贯原则是:
我需要寻找那些不会沉迷于系统的复杂性、遇到困难的问题时能够分解为可执行的步骤并能最终解决的人。
我需要有执行力的人,他们会被紧迫感激发而不是吓跑。
我需要能够在创新和质量中掌握平衡的人,他们不应该只满足于发现更多的bug。但最重要的是,我需要能看到他们的激情。
我需要那些真正想做测试的人。
我会通过一系列的问题来判断求职者是否是我需要的人才,比如:说说计算器的测试点?可以参考以前分享的一篇文章《如何面试测试工程师》。
在我的标准里,我希望从求职者身上看到的其中一项素质,就是求职者是否具备“分类”的思维习惯。
初学者在学习测试用例设计方法的的时候,都会碰到一个名词叫“等价类划分”。这个方法简单点说,就是分类思考的应用。
我在课堂上给学生讲解这个方法的时候,都会使用去饭馆点餐的过程来介绍它:我们去到一家餐馆,服务员会给我们一张菜单。上面会按照“热菜”、“凉菜”、“饮品”这些项目进行划分,我们判断这家餐馆的饭菜好不好,一般不会去尝试所有菜品,而是从每个分类中挑选几样。如果觉得不错,我们就会认可这家餐馆的饭菜质量。
同理,判断系统中某个功能,比如一个输入框是否有问题,我们也是按照“分类”的思路挑选几个输入项进行测试,据此判断这个输入框质量是否达标。这里用到的就是等价类的思想。
文章篇幅所限,本文只简单讨论一下加法如何测试。下图是win7系统中的计算器,我们以此为例:
(小技巧:我们可以在运行中输入calc命令来快速调用计算器)
虽然这个软件很简单,但是加数的选择范围可以说是无穷尽的,我们不能能列举完。所以我们要对这些加数进行分类,然后从不同的类别中选择有代表性的就可以了,就好像我们点菜一样。现在的问题是,如何进行分类呢?
第一种:加数可以是正整数、正浮点数、零,负整数,负浮点数。两个加数,各种五种选择,排列一下就是25种情况。(2+0 和0+2 视为两种不同情况)
第二种:分类的标准是有无进位,这样我们至少有两种情况需要测试:有进位和无进位
第三种:按照加数的位数来分,例如加数可以为一位数,两位数,三位数,四位数......如何这个计算器支持32位数之内的运行,那么加数就有32位选择。在这种情况下,我们没有必要把这32位选择都尝试一遍,在超过10位数之上的,我们可以每五种为一类,如果其中一个通过测试,我们可以认为其他的也没有问题,例如,15位数到20位数,我们可以选择16位数进行测试。
第四种:以加数的个数来分,2个,3个,4个
第五种:.......
从面试题反推用例设计
说到这类,带出来的一个更重要的问题是:怎么写用例呢?又怎么设计测试数据呢?
给一个参考思路:
总结:
很多人都听过“等价类”这个概念,但具体怎么使用呢?能做哪些扩展呢?
它的核心思想是分类,并非只有输入框能分类, 我们是对输入和输出进行分类。什么是输入、输出呢?哪些模块可以使用“等价类”的思想测试呢?欢迎在评论区留下你的见解。