为了账号安全,请及时绑定邮箱和手机立即绑定

每天一道面试题——自动售货机

标签:
测试 面试

引言

今天分享的这道面试题也是我曾经在笔试中用到过的。 当初大概有四十人左右曾经做过这道题,没有一个人给出了正确答案,让我没有想到的是,其中做得最接近正确答案的,是一名大四出来实习的小女生。

有很多面试官喜欢问:在软件测试的各个环节中,你觉得哪个环节是最重要的?

在我看来,如何分析分析需求并且转化为测试范围是排在首位的。理解需求难吗?很多测试从业者都有一种感觉,只要给足够的时间,理解需求这个事儿并不难。但我们常常面临的情况是,任务重时间紧,导致我们常常在没有足够理解需求的情况下进行测试,这时候我们还能有信心说测试过的软件产品符合上线标准吗?

这种情况下,有一套快速理解需求并转化为测试范围的方法就显得尤为重要。而作为面试官,自然也希望能在面试过程中判断求职者是否具备这种能力。这也是我当初把这道题作为笔试题的原因。

这道题并非我原创,当初在将它列为我的笔试题的时候有过这样的考虑:求职者是否在其他地方看到过这道题?如果看到过,对其他求职者是否不公平?如果因为他们提前训练过,他们的面试结果是否会对我做出录用决策产生影响?

一番考虑之后,我仍然决定把它列入笔试题。一方面是因为软件测试从业者中,喜欢看书学习的少,这意味着大多数求职者以前碰到这道题的概率很小,这就保证对大多数人是公平的。反过来说,如果他们之前看到过这道题,也可能意味着这名求职者喜欢学习,有上进心,这也是我希望看到的。况且,我可以通过提问更多的问题来判断求职者是否是有真材实料,减少这一道题的结果可能对我的误导。简单来说就是,求职者回答的好,并不代表求职者一定善于分析需求分解需求,但回答的不好,那一定是在这方面存在不足。另一方面,善于学习的人并不多。那个资料中给出的参考思路在我看来并非最优,如果原封不动的把那个参考思路搬过来,我会考虑这名求职者是否是一个只会“读死书”的人。

面试题

案例分析(给出分析过程和测试点):

有一个饮料自动售货机(处理单价为5角钱)软件。其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。

当初资料中是按照“因果图测试法”给出的思路,具体如下:

1) 分析需求,列出原因和结果

原因:

    1.售货机有零钱找

    2.投入1元硬币

    3.投入5角硬币

    4.押下橙汁按钮

    5.押下啤酒按钮

结果:

    21.售货机〖零钱找完〗灯亮   

    22.退还1元硬币

    23.退还5角硬币             

    24.送出橙汁饮料

    25.送出啤酒饮料

2)画出因果图,如图所示。所有原因结点列在左边,所有结果结点列在右边。建立中间结点,表示处理的中间状态。中间结点:

    11. 投入1元硬币且押下饮料按钮

     12. 押下〖橙汁〗或〖啤酒〗的按钮

    13. 应当找5角零钱并且售货机有零钱找

    14. 钱已付清

https://img1.sycdn.imooc.com//5c994bfc000118e304750212.jpg

3)转换成判定表:

spacer.gifhttps://img1.sycdn.imooc.com//5c994c040001aec904660301.jpg

 4) 在判定表中,阴影部分表示因违反约束条件的不可能出现的情况,删去。第16列与第32列因什么动作也没做,也删去。最后可根据剩下的16列作为确定测试用例的依据。


我的看法

当初的作者是用这道题来介绍“因果图测试法”,是为了使用这个需求来训练测试方法的使用。但如果抛开这个限制,我们是否有其他思考方式呢?

显然是有的。在上一次的分享中,我们提到“分类”的方法对测试人员来说很重要,对这道题其实也可以使用分类的方法来思考,比如:

有零钱找, 且有饮料(红灯灭):

    1.    投入1元硬币,押下〖橙汁〗的按钮,送出橙汁,并退回五角钱。

    2.     投入1元硬币,押下〖啤酒〗的按钮,送出啤酒,并退回五角钱。

    3.    投入5角硬币,押下〖橙汁〗的按钮,送出橙汁。

    4.     投入5角硬币,押下〖啤酒〗的按钮,送出啤酒。

有零钱找,但无饮料(红灯灭)。

    1.    投入1元硬币,押下〖橙汁〗的按钮,不能送出饮料。

    2.     投入1元硬币,押下〖啤酒〗的按钮,不能送出饮料。

    3.    投入5角硬币,押下〖橙汁〗的按钮,不能送出饮料。

    4.     投入5角硬币,押下〖啤酒〗的按钮,不能送出饮料。

无零钱找,有饮料(〖零钱找完〗的红灯亮):

    1.    投入1元硬币,押下〖橙汁〗的按钮,饮料不送出来而且1元硬币也退出来。

    2.     投入1元硬币,押下〖啤酒〗的按钮,饮料不送出来而且1元硬币也退出来。

    3.    投入5角硬币,押下〖橙汁〗的按钮,送出橙汁。

    4.      投入5角硬币,押下〖啤酒〗的按钮,送出啤酒。

无零钱找,无饮料(〖零钱找完〗的红灯亮):

    1.    投入1元硬币,押下〖橙汁〗的按钮,饮料不送出来而且1元硬币也退出来。

    2.     投入1元硬币,押下〖啤酒〗的按钮,饮料不送出来而且1元硬币也退出来。

    3.    投入5角硬币,押下〖橙汁〗的按钮,不出饮料。

    4.     投入5角硬币,押下〖啤酒〗的按钮,不出饮料。


总结:

  • 相比“因果图”测试法,这种方法的有点和缺点是什么呢?

  • 如果是你,你会怎么选择?

  • 你能否想到其他的思路来完成这道题呢?

点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
软件测试工程师
手记
粉丝
1.4万
获赞与收藏
1041

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消