|
很久以前看到的一则笑话,有个小bug,不过意思我倒是弄懂了。大意是爱迪生耳朵不好使(实际上是一只耳朵不好使而不是两只),听不到电话铃声;好钻研的朋友为他发明了一套闪光装置,来电话的时候除了铃响还有闪光;问题是就算爱迪生知道有来电,拿起话筒的时候还是什么都听不到。
人们时常会犯类似的错误,付出的代价还不小,事实上在动手之前就应该找到这些问题。软件测试也是一样。千里之行,始于足下。计划和设计阶段的测试,才是测试工作的第一步。人们通常认为的编码结束才开始的测试,已经太晚了。
计划和设计阶段程序员和项目经理分别会非常关心两件事情:技术上如何实现,能否引起客户的使用意欲。那么测试人员会关心什么事情呢?
我的答案是:假设上述事情都能按计划完成,还有什么事情会让产品失败?
你可能会想,还能有什么事情?
我先讲一个别人告诉我的故事:
有个产品是识别纸上指定图案的,技术上没法100%场合都能识别,但还在客户容许范围之内,而且客户也的确相当欢迎这项技术。不过原型出来之后客户反馈相当差,很多人试了几下就不用了。究其原因,一旦识别算法觉得无法识别,比如因为光线、角度等原因,就会弹出一个对话框说识别失败。想象客户被弹了两次之后,还会充满信心的认为这个产品一定能用吗?没有这么自虐的吧?
就是有这么自虐的。想想是谁说没问题啦可以见人的
解决方案也挺简单,只要改用一个温和一点的方式表达“难以识别”,而不是用弹对话框这种方式来打断用户调整光线角度的过程就可以了。
现在你同意还是有一些事情会让产品失败的吧。我们来看看都有哪些。
客户表达的需求,开发团队所理解的需求,以及客户真正使用时的需求,有重大的差别;
完成产品所依赖的条件中,有些现在就知道无法或难以具备;
有导致无法或难以按计划完成的因素。
测试人员在计划和设计阶段的任务之一,就是尽可能找到这些问题。
你可能想,明显的问题谁都看得到,还用得着专人检查吗?事实上大问题不一定明显。我下面要讲的例子就是一个设计阶段成功避免的大问题。
有个设备用于拍摄参加小型会议的所有人,放在桌子中间。用户普遍使用笔记本电脑并通过与设备相连的软件看到网络另一端的与会者的视频。在进行用户场景(user scenario)讨论时测试人员发现了一个问题:笔记本电脑的屏幕把用户的脸挡住了。所以最终定型的设备比最初调高了5厘米。
面对一堆文字描述的测试人员如果不能发现这个问题,后果将会是:大量设备召回,或者流传一个笑话“开会时记得带本厚书”。
你不会愿意成为这种笑话的主角的。 |
|