逻辑思维题一:条件组合覆盖

我们知道软件测试对测试人员的逻辑思维要求比较高,而且笔试时经常会出一些逻辑思维方面的问题,今天我们来看一个问题。

题目是这样的:八瓶酒一瓶有毒,用人测试。每次测试结果8小时后才会得出,而你只有8个小时的时间。问最少需要____人测试?

遇到这样的问题我们应该怎么处理呢?看题目感觉比较抽象,我们可以对此进行转化为条件组合覆盖测试方法。 首先可以对八瓶酒进行编号:a,b,c,d,e,f,g,h; 有毒的酒可以当成一个bug;

测试结果8小时后才会得出,而你只有8个小时的时间。对于这个条件我们应该转换一下思路:一个人其实可以同时喝多瓶酒,所以可以将每个人喝的酒看成一个集合;需要多少人,可以看成最少测试几个集合的组合可以完全覆盖a~h。

我们再想一下,这个题目已经告诉我们了,有一个bug,所以我们可以只要覆盖a~g,7个字母。

所以这个题目可以转化为:最少设计多少集合组合测试能够完全覆盖a~h 8个字母,我们可以假设集合顺序从a到h,最少集合为n个。

所以组合条件可以是:集合1,集合2,集合3....,集合n;集合1+集合2,集合2+集合3,集合3+集合n....,集合n+1;集合1+集合2+集合3,....

最终演变为n+n+n+1=n(n-1)+1,如果要覆盖完全a~g 7个字母,必须是n(n-1)+1>=7,计算得到最小正整数n=3。这个也是此题目的答案,最少需要3个人测试。每个人喝3瓶酒,有好多组合,但集合必须满足集合组合之间有相同的酒,以下给出一个组合:


分析:如果3人都出现中毒,则a酒有毒;如果3人都没中毒,则h酒有毒
          如果第一人中毒,则d酒有毒 如果第二人中毒, f酒有毒;如果第三人中毒,则g酒有毒
    如果第一,二人中毒,第三人没中毒,则b酒有毒;如果第一,三人中毒,第二人没中毒,则c酒有毒 如果第二,三人有问题,第一人没问题,则e酒 有毒。

总结:遇到这种问题,直接通过公式n(n-1)+1>=酒数量-1计算出n的最小正整数,就是需要的最少人数。每个集合的数量=酒数量-1-n, 而且遇到类似问题,可以通过这种条件组合思路去解决问题。

如果此题目换一个问法:八瓶酒,大量检测表明,有可能有一瓶酒有问题,为了检测是否有一瓶酒有毒,用人测试。每次测试结果8小时后才会得出,而你只有8个小时的时间。问最少需要____人测试?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值