那预防和修复呢?预防在测试业界一直都是个难题;修复目前要比发现要容易一些,——事实上不少项目里面开发人员没bug可修复,不是没有bug,是产品发布之前找不到。
所以,测试的核心价值就是发现产品中存在的bug;测试可以做更多的东西,但首要的任务是发现bug。这里的所有其他观点都以此为基础,由此而涉及的软件企业测试工作发展和个人测试职业生涯发展也是基于这个观点。
有兴趣的朋友可以读读这本书,The Art of Software Testing,第二版,作者Glenford J.Myers, Corey Sandler, Tom Badgett, Todd M. Thomas,出版社John Wiley & Sons,ISBN 9780471469124。上述观点来源于此书。
该不该投资测试:投资方期望的测试回报
既然明白了测试的核心价值,那么明确测试能带来的具体回报也是很合理的问题。但是这个问题上的误解也往往会令投资打水漂。
● 误解一:做了测试产品就没有bug了
这个误解会导致在测试上的投资中断,比方说,我投资了若干人力去测试某款产品,bug是少了不少,但是发布以后用户还是反馈有bug,我觉得出乎意料,于是不再投资了,反正虱子多了不咬。
软件产品本身的复杂性以及应用环境和用户需求的易变,让软件产品产生大量的bug,多得没有办法完全清除,或者完全清除的性价比太低。前面介绍的书里面有个很好的例子,大意是哪怕一个简单的一看就明白的小程序(判断三个输入的数字能不能表示一个三角形的三个边长),可以存在的bug也能达到上百个,而且随着应用环境和用户需求的变化还会以指数上升。
合理的期望可以是:做了测试产品的bug会大幅减少。这些bug如果继续存在会带来的损失,就是测试的回报,是可以量化计算的。
● 误解二:测试需要很大的投入
不少宣传,包括微软在内,介绍测试就像是星球大战一样炫酷的技术和设备。实际上,兵无常势,水无常形。不同的企业和项目可以采取不同的测试方法,一个企业和项目适用的方法,在另一个企业和项目不一定回报投入比就好。
有个大型跨国企业的测试,是一堆人试用一个产品,发现问题就举手,测试经理过去查看,核实是bug就发给开发人员修复,同时奖励发现问题的人。我们看了觉得这个做法很实在,很对他们开发的产品胃口。
● 误解三:测试不需要很复杂的技术
这是另一个极端,导致对测试投入过于斤斤计较。测试可以从小量开始,那也得分不同的产品和项目。有些产品重于用户体验,人的参与和使用能暴露更多的bug;有些产品重于处理不同的数据,制造理解和分析数据的过程能暴露更多的bug;有些产品重于子产品的整合,把各部件放在一起工作的过程能暴露更多的bug;有些产品重于处理大量的用户请求,把系统置于大压力下能暴露更多的bug。这些产品和项目做测试的性价比是不一样的。为了能暴露更多的bug,有些产品和项目需要复杂技术。