周伟明的专栏

<<软件测试实践>> 已上市

周伟明ID:drzhouweiming
179887次访问,排名358好友0人,关注者8
软件技术爱好及研究者
drzhouweiming的文章
原创 48 篇
翻译 0 篇
转载 0 篇
评论 312 篇
周伟明的公告
一书已上市, 欢迎大家提出意见!
最近评论
algcfx:Wow gold
dimire:LZ你好,我参考你的第一个测试程序int main(int argc, char* argv[])
{
#pragma omp parallel for
for (int i = 0; i < 10; i++ )
{
printf("i = %d\n", i);
}
……
dimire:学习了
dimire:LZ你好,我参考你的第一个测试程序int main(int argc, char* argv[])
{
#pragma omp parallel for
for (int i = 0; i < 10; i++ )
{
printf("i = %d\n", i);
}
……
dimire:LZ你好,我参考你的第一个测试程序int main(int argc, char* argv[])
{
#pragma omp parallel for
for (int i = 0; i < 10; i++ )
{
printf("i = %d\n", i);
}
……
文章分类
    收藏
      相册
      最近文章
      1、多核新观念-象使用内存一样使用CPU?
      2、多核编程中的任务随机竞争模式的概率分析
      3、OpenMP创建线程中的锁及原子操作性能比较
      4、多核编程中的任务分组竞争模式
      5、称球问题的测试解法
      90%程序员写不出无BUG的二分查找程序?
      C/C++代码检视实例
      多核编程中的负载平衡难题
      多核编程中的锁竞争难题
      微软过桥问题与测试人员素养
      接口关系稳定原理探索
      接口设计定理
      模块分解原理与三权分立
      模块分解原理的探索
      测试驱动需求分析
      筑一座坝治好中国的沙漠
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 微软过桥问题与测试人员素养收藏

      新一篇: 多核编程的几个难题及其应对策略(难题一)

       
      微软过桥问题与测试人员素养
      相关文章链接如下:
      微软面试题过桥问题在IT业内几乎已变成一个众所周知的问题,问题如下:
              4个人在晚上过一座小桥,过桥时必须要用到手电筒,只有一枚手电筒,每次最多只可以有两人通过(人多了桥支撑不住就塌了), 4个人的过桥速度分别为1分钟、2分钟、5分钟、10分钟,试问最少需要多长时间4人才可以全部通过小桥?
              一般人碰到这道题目也许马上就在想该如何安排这4个人的过桥顺序使得过桥时间最少,稍微聪明一些的人也许马上就想到了答案:“先让1、2过去,1回来,5、10再过去,2回来,1、2再过去”,总共需要17分钟就可以让4个人都过去。
              当然如果数学知识足够好的话,可能会用图论来分析这个问题,最后发现这是一个图论的最短路径算法问题,只要根据过桥的状态建立一张有向图,然后求出最短路径就可以得到最少时间的过桥方案。(如果读者对如何用图论问题解这个问题感兴趣的话,可以看我的博客中的另外一篇讲微软过桥问题图论解法的文章)。
             
              现在如果让一个测试人员来回答这个问题的话,是不是也象上述一样回答就可以了呢?如果能在很短时间内象上面一样回答问题,当然说明你人比较聪明,但是如果作为测试人员的话,需要的不是简单的结果,而是要全面分析问题,仅仅回答出最短时间为17分钟的答案是达不到测试人员的要求的。
              作为一个测试人员,首先得对问题中的许多未知因素提出疑问,下面一些问题也许是测试人员所想知道的:
      n        这4个人为什么要在晚上过这座桥,他们是在正常回家的路上还是野外探险迷路还是被人追杀?如果是被人追杀会不会有2人过去后独自逃走不回来接剩下的2人?
      n        这四个人过桥的时间为什么差距这么大,最大最小时间差了10倍?进而可以提出疑问,这4个人到底是什么样的人?他们的年龄分别多大?他们是否有人是残疾人或是小孩?如果有小孩或残疾人的话,那么是不是残疾人和小孩不能同时过桥?(也就是说5和10不能同时过桥)
      n        既然最多只有2人可以同时过桥,那么桥的最大承重能力是多少?是不是两个最重的人也可以同时过桥?
      n        手电筒是不是好的,手电筒里的电是不是用完了,或者手电筒的电还能用多久?或者过桥的过程中手电筒会不会掉到桥下去或摔坏?
      n        当时的天气是什么样的?有没有刮风下雨、打雷或下暴雪,会不会有人在过桥过程中被风刮下桥去,或者被打雷声吓得掉下桥去。或者过桥时天气变坏使得他们过桥需要的时间增加了。
      n        当时的气温是多少度?如果温度低于0度的话,桥上是不是结冰了,过桥时会不会滑下去。
      n        过桥的过程中对面是不是有救援人员来了,比如1、2过去后就碰到救援人员等在对岸,那么1也许可以拿救援人员的电筒过去接剩下的两个人,这样最少只要14分钟就可以过桥了。
      n        过桥的过程中是否有山洪爆发或水突然涨高将桥淹没?
      n        会不会在过桥过程中有野兽嚎叫等因素影响他们的过桥速度?
      n        桥下面是什么?是水溪还是无水的沟谷还是很深的悬崖?人掉下去后能不能爬上来?
      n        桥旁边有没有其他的捷径可以过去。
      n        1分钟的人是否可以背上10分钟的人过桥?如果可以的话需要多长时间?
      n        桥有多长?手电筒能照多远?是否过去的人在桥的另外一头就可以用手电筒照亮桥让未过去的人过桥?
              这些问题的确定对过桥需要的最短时间都会有影响,在不同的情况下过桥所需要的最短时间是不同的。以上只是写出了一些问题,还有更多的问题读者可以自己去发掘,如果能在上面的基础上再发掘出2个以上的新问题的话,那么相信你已经具备了测试人员全面分析问题的素养了。
              不过即使你不能发现新的问题,并且上面的那些问题你很多都没有想到,也没有任何关系,当学完后面第3章的测试用例设计方法后再来重新分析这个问题,也许你会惊喜地发现你已经有能力发现很多新的问题了。
      当然初学者也许会觉得有些问题好像是在钻牛角尖,但是作为测试人员来讲,要的就是这种钻牛角尖的精神。
       

      发表于 @ 2007年03月29日 22:26:00|评论(loading...)|编辑

      旧一篇: 等价类分法 新解

      评论

      #border1 发表于2007-03-30 10:30:06  IP: 58.31.73.*
      最怕做这种题了.晕!! (e表 for .NET, 无须编程和写复杂的SQL语句就能实现复杂的统计报表. 详见: http://www.fcsoft.com.cn )
      #cime63 发表于2007-03-30 10:31:56  IP: 220.163.82.*
      这样的测试人员早就被要求转开发了
      #blackart 发表于2007-03-30 13:06:56  IP: 221.238.227.*
      脑筋急转弯做多了!
      #shrinerain 发表于2007-03-30 13:47:58  IP: 218.108.51.*
      不会...好的公司里面牛的测试工程师比比皆是...

      #bamfk10231023 发表于2007-03-30 14:04:12  IP: 125.77.185.*
      晕!
      #amberleaf 发表于2007-03-30 15:01:52  IP: 121.18.66.*
      它们四个人是否都在桥的一端?还是两端都有?各自向不同方向过桥,谁拿着手电筒?
      既然桥只能承受2个人的能力,已经是危桥了,怎么不翻修?改进一下?再说了,如果中途塌了怎么办??没有备用的吗?
      #coldwinter_stone 发表于2007-03-30 15:58:49  IP: 221.6.88.*
      这座小桥有多长? 是小桥就不会太长,既然不会太长,用手电筒从一头就能够照到另一头了.何必再把手电筒带来带去呢.
      让1号2号先过去,在另一头照着,让3号和4号一起过桥,12分钟就OK了.
      #zCheng 发表于2007-03-30 17:22:05  IP: 58.49.253.*
      人多了桥会塌是什么情况?是只3个以上的人在同一个地方吗?如果不是,可不可以让他们拉开距离?既是走得快的在前面为后面的照明,其它人后面隔开一些跟着走也行?
      #coldwinter_stone 发表于2007-03-30 17:31:13  IP: 221.6.88.*
      题目中提到需要用到手电筒,但没有手电筒是干什么用的。如果只是需要在桥上的人中有一个人拿着手电筒就可以的话,那么10分钟就可以全过去。
      4号一直拿着手电筒。
      4号和1号一起上桥,1分钟后1号过桥了;然后2号上桥,2分钟后2号过桥了;然后3号上桥,5分钟后3号也过桥了;最后2分钟后,4号也过桥了。
      总共10分钟。
      #kofkyo 发表于2007-03-30 17:41:48  IP: 218.104.39.*
      桥为什么会撑不住3个人呢?人的位置不同对桥的压力也不同,不可以利用这点加快过桥速度吗?
      #skystar99047 发表于2007-03-31 09:43:53  IP: 211.91.133.*
      对于测试人员要求多点是好,但过于偏激不是件好事。毕竟人是需要用正常的思想来思想问题。
      上面提到的实在是太不合理了!如果执有这种思想,就属于死脑子,钻牛角尖需要人有丰富的思想才对,不然就是祸害,迟早被开。
      如果按照这种思想来思考,人都可以不存在了!1+1也永远不用等于2了。因为算1+1=2的人可能发生大灭亡不存在了。
      怎么不考虑:如果人走着都桥上掉下去呢;如果人突围出现心脏病死在桥上挡住道了呢;如果桥突然被一个炮弹轰了呢;如果四个人当中有犯罪份子,一急之下把其它人都杀了呢;如果这时候突然来了架直升机把人直接带走了呢;如果这座桥就算蹋了也没关系,人照样可以从桥下走过去呢;如果桥或人突然间被雷电霹了呢;如果1分钟的人是大力士,直接把人从这头扔到那头呢;这座桥是否在地球上存在呢,万一地球被彗星撞上,全球大灭亡了呢;等等等等。举止不尽。
      是个人就能举个不停,傻子都能举出一堆,非正常思想,如果软件开发人员全这种思想,软件就别想往下做下去。
      #lzw184 发表于2007-03-31 12:39:22  IP: 219.131.221.*
      5分钟就可以了啊.....每次都由1号背上一个 不就OK了么?怎么想得那么麻烦啊??
      #AhBian 发表于2007-03-31 13:12:18  IP: 222.191.138.*
      这片贴子充分表明了楼主有着严重的自恋倾向。
      他并不是在讨论题目所代表的论题,而是在卖弄自己“过人的”分析问题的能力,同时也流露了一点“怀才不遇”的失落情绪或者“小人得志”的自以为是。

      退一步,生活或者做事都要像楼主这样的态度,这人生也实在无趣了。
      #nlsoft 发表于2007-03-31 13:50:24  IP: 218.27.67.*
      www.niusoft.net 中国程序员之家
      #red_berries 发表于2007-03-31 17:26:25  IP: 60.0.231.*
      呵呵,很不错的一个题让你们都给想成什么了,这道题我感觉给测试一点关系都没有,想找好的测试例子了哪都是,找这个真不恰当,我倒觉得这个问题和管理有一点关系,如果一个人能很快的想到17分钟,那他在管理特别是在分配资源方面很有天赋
      #stonepeter 发表于2007-03-31 22:48:47  IP: 125.96.20.*
      其实我觉得楼主还不如以测试一台电视机作面试题要来得好得多。
      #NetLinux 发表于2007-04-01 09:36:58  IP: 222.35.123.*
      make
      #dahulu 发表于2007-04-01 11:40:58  IP: 166.111.7.*
      有道理。

      不过觉得还是你闲的。。。
      #zwxhxnkk 发表于2007-04-01 14:50:24  IP: 220.165.205.*
      这几个人里有没有智商有总题,到了中间迷了方向又拐回来的
      #liandti 发表于2007-04-01 19:56:43  IP: 211.140.192.*
      两字,扯蛋!
      #journeyboy 发表于2007-04-01 22:46:26  IP: 124.64.59.*
      好吧,我承认……

      这些问题,的确和原题没有太大关系……

      也不是测试人员需要掌握的素质……

      而是FBI关心的……

      这是哪个该死的出的题……
      #bgu 发表于2007-04-01 22:53:17  IP: 219.134.142.*
      我第一时间想到的居然是12分钟就可以了。
      10+5,2+1

      因为显然只能两个人过的桥一定是小的可怜的桥,桥长定短。过去的人回头照就是了。哈。
      #niwalker 发表于2007-04-01 23:38:04  IP: 59.56.76.*
      个人同意LZW184的5分钟。
      #xiaoyaoliang 发表于2007-04-02 08:31:04  IP: 222.92.84.*
      3分钟就可以了,1号背3号,2号背4号,不就ok了阿
      #flydream1981 发表于2007-04-02 08:49:01  IP: 210.76.108.*
      楼上的不适合当测试员,题目(需求) 都没有认真看,

      “每次最多只可以有两人通过(人多了桥支撑不住就塌了), ”
      #Kirinsky 发表于2007-04-02 09:37:38  IP: 218.17.82.*
      flydream1981也没看清xiaoyaoliang说的,xiaoyaoliang是说1背3走,花一分钟时间过完桥后2再背4,这样一起3分钟

      但是,还是有问题,因为其中有一躺过桥的没手电筒
      #icekzl 发表于2007-04-02 10:18:05  IP: 222.66.4.*
      有一个问题。。难道就一定独木桥么?
      5-10中要是5拿手电,是不是一定会与10同步过去。
      这样是不是就一定要 时间长的拿手电来限制时间短的人等他。而不能先跑了。所以很多先决条件没有给出来。
      如果人更多一些。把体重与桥的承重量给出来,可能这个题思考起来会更好玩。
      #matrix00wy 发表于2007-04-02 10:45:36  IP: 60.211.187.*
      其实应当重新修桥,这样的桥太危险,不安全。
      #BuilderChen 发表于2007-04-02 11:06:04  IP: 192.168.32.*
      噢!都快发疯了~~
      #aben_king 发表于2007-04-03 01:20:48  IP: 58.61.59.*
      一直认为真正做软件这行的,都是十足的完美主义者....完整的考虑软件的各个方面.才能真正的去解决软件中的不足.无论是代码的书写规范还是软件设计思维等都是必不可少的东西..
      #nyzfl 发表于2007-04-03 09:23:28  IP: 123.113.203.*
      同意
      #yzsb1118 发表于2007-04-03 17:04:40  IP: 121.35.150.*
      微软是颠的。
      #conanhawke 发表于2007-04-11 18:38:57  IP: 222.240.167.*
      为什么我不把桥加固点,增大容量和结实度,郁闷!老是这样子走,每次都给人家出这种难题有意思吗?
      #conanhawke 发表于2007-04-11 18:40:55  IP: 222.240.167.*
      为什么我不把桥加固点,增大容量和结实度,郁闷!老是这样子走,每次都给人家出这种难题有意思吗?
      #szHai 发表于2007-04-17 13:48:12  IP: 219.232.166.*
      题目中有二点没有说清楚:(1)当有二个人在桥上时,必须走在一起.不能一先一后,或者一来一往.(2)手电筒由一个在桥上的人带着,不能直接放在桥上.
      #summersnowgieno 发表于2007-04-18 16:49:12  IP: 131.107.0.*
      我 不 否认 你 这篇 文章 很有 新意。
      但是 作为 一个 测试 人员, 我 必须 指出 你 所 范 的 错误。
      首先 , Tester 是 the light of project, 是 一个 information 的 provider ,你没有权利决定该问什么不该问什么,没权利决定什么信息有用什么没用。
      第二, 作为 Tester 你 需要的是确定需求, 而不是漫无边际的乱想,没一个公司愿意花钱来让你做没有用的事情。
      第三, 我 觉得偶 不用 说了, 你 该 开窍 了~
      #drzhouweiming 发表于2007-04-18 20:48:32  IP: 220.249.249.*
      To summesnowgieno:
      1)首先需求能否写得没有任何问题呢?需求本身就需要通过测试来进行验证
      2)即使需求天衣无缝,但对需求的处理过程,用户的行为是没法控制的,你能让用户按你想的进行操作吗?
      #summersnowgieno 发表于2007-04-19 09:51:53  IP: 131.107.0.*
      To drzhouweiming:
      If we are in perfect world, desgin may have little error. But we are not in perfect world, so, it's reasonable that we have a lot of obstacle in desgin. That's right.
      But this reasonable desgin obstacle doesn't mean that desgin should have errors. We cannot avoid pitfall in desgin but we should try to manage it.
      That's right you say "需求本身就需要通过测试来进行验证", and also that is just the reason of TDD (Test Driven Develpoment). But, for a tester, who can promise that what you think it's just fix the end-user? I'm telling you, no one can do that. This reality compeled us to just provide all the info we can find but not judge.
      And you say that the behavior of end-user is not under control, that's right. But this is also not mean you should forget all this things. You should try to guide the user. For this kind of testing, the BDD(Behavior Driven Develpoment) is born.
      So, Do you have any other question?
      #crearo 发表于2007-07-11 16:40:58  IP: 218.22.27.*
      起码要给测试员一台好的机子(独木桥),不然还要担心爆炸。。连生命都不能保证,那能工作呢。。
      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © 周伟明