继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

每天一道面试题——计算器

青春的小奋斗
关注TA
已关注
手记 84
粉丝 1.4万
获赞 1041

引言

作为软件测试工程师,我们都会经历面试。我常对我的学员说,面试的时候,对于面试官提问的任何问题,不要着急回答,先花几秒钟时间思考面试官提问这个问题的目的:他们为什么要提问这个问题?他们希望听到什么样的答案?他们希望了解求职者哪方面的素质?

思考这些问题有助于避免“答非所问”。

得益于网络,现在可以很轻松的从网上搜索到很多的面试题以及回答的思路。需要注意的是,网上非常多的“参考答案”并非正解。比较典型的就是“说说你的职业规划?"“你对加班怎么看?”

曾经作为面试官,在人才选用方面,我的一贯原则是:

  • 我需要寻找那些不会沉迷于系统的复杂性、遇到困难的问题时能够分解为可执行的步骤并能最终解决的人。

  • 我需要有执行力的人,他们会被紧迫感激发而不是吓跑。

  • 我需要能够在创新和质量中掌握平衡的人,他们不应该只满足于发现更多的bug。但最重要的是,我需要能看到他们的激情。

  • 我需要那些真正想做测试的人。

我会通过一系列的问题来判断求职者是否是我需要的人才,比如:说说计算器的测试点?可以参考以前分享的一篇文章《如何面试测试工程师》。

在我的标准里,我希望从求职者身上看到的其中一项素质,就是求职者是否具备“分类”的思维习惯。

初学者在学习测试用例设计方法的的时候,都会碰到一个名词叫“等价类划分”。这个方法简单点说,就是分类思考的应用。

我在课堂上给学生讲解这个方法的时候,都会使用去饭馆点餐的过程来介绍它:我们去到一家餐馆,服务员会给我们一张菜单。上面会按照“热菜”、“凉菜”、“饮品”这些项目进行划分,我们判断这家餐馆的饭菜好不好,一般不会去尝试所有菜品,而是从每个分类中挑选几样。如果觉得不错,我们就会认可这家餐馆的饭菜质量。

同理,判断系统中某个功能,比如一个输入框是否有问题,我们也是按照“分类”的思路挑选几个输入项进行测试,据此判断这个输入框质量是否达标。这里用到的就是等价类的思想。

文章篇幅所限,本文只简单讨论一下加法如何测试。下图是win7系统中的计算器,我们以此为例:

(小技巧:我们可以在运行中输入calc命令来快速调用计算器)

https://img3.mukewang.com/5c975bf100017c9002280322.jpg

虽然这个软件很简单,但是加数的选择范围可以说是无穷尽的,我们不能能列举完。所以我们要对这些加数进行分类,然后从不同的类别中选择有代表性的就可以了,就好像我们点菜一样。现在的问题是,如何进行分类呢?

第一种:加数可以是正整数、正浮点数、零,负整数,负浮点数。两个加数,各种五种选择,排列一下就是25种情况。(2+0 和0+2 视为两种不同情况)

第二种:分类的标准是有无进位,这样我们至少有两种情况需要测试:有进位和无进位

第三种:按照加数的位数来分,例如加数可以为一位数,两位数,三位数,四位数......如何这个计算器支持32位数之内的运行,那么加数就有32位选择。在这种情况下,我们没有必要把这32位选择都尝试一遍,在超过10位数之上的,我们可以每五种为一类,如果其中一个通过测试,我们可以认为其他的也没有问题,例如,15位数到20位数,我们可以选择16位数进行测试。

第四种:以加数的个数来分,2个,3个,4个

第五种:.......

从面试题反推用例设计

说到这类,带出来的一个更重要的问题是:怎么写用例呢?又怎么设计测试数据呢?

给一个参考思路:

https://img.mukewang.com/5c975bd50001f87707880347.jpg

https://img3.mukewang.com/5c975bd50001342507880347.jpg

https://img3.mukewang.com/5c975bd50001933806780319.jpg

总结:

很多人都听过“等价类”这个概念,但具体怎么使用呢?能做哪些扩展呢?

它的核心思想是分类,并非只有输入框能分类, 我们是对输入和输出进行分类。什么是输入、输出呢?哪些模块可以使用“等价类”的思想测试呢?欢迎在评论区留下你的见解。


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP