二、为什么(Why)要测试软件
“聪明的人解决问题,明智的人避免问题”—Albert Einstein 为什么要测试软件? “要找到错误!”是本能的反应。许多人,包括开发商和程序员在内,认为在开发过程中进行调试和代码审查就可以找到和修复错误,从而认为正式的测试是多余的。除非“千年虫”的出现确实是代码引起的,软件测试的重点是发现最终产品的缺陷。 以下是一些严重的缺陷,如果更好地测试肯定会在产品投入应用前发现。
? 2003年2月,美国财政部寄出50000份社会安全检查书却没有受益者的名字。一名发言人说,名字的缺失是由软件程序维护错误造成的。
? 2001年7月,一个严重的缺陷在长期用于跟踪美国核材料的系统软件中被发现。该软件最近已被捐赠给另一个国家,那个国家的科学家发现了软件的这个缺陷并且告诉了美国官员。
? 1999年10月,美国宇航局1.25亿美元的星际气候卫星在太空中由于数据转换错误丢失。经调查发现,软件对航天器进行某些计算时在该应用公制单位“米”的时候却错误采用了英文单位“码”。
? 1996年6月,第一次飞行的欧洲航天局阿丽亚娜5号火箭发射后不久就失败了,从而造成保险损失$500,000,000。这场灾难是由于在64位整数转化为16位有符号整数时缺乏对浮点错误的异常处理。
软件测试可以回答代码审查和调试无法回答的问题:
? 软件真的如预期中那样工作吗?
? 软件满足了用户的需求吗?
? 它是用户所期盼的产品吗?
? 用户会喜欢使用它吗?
? 它与我们的其他系统兼容吗?
? 它的性能如何?
? 它能承受多少用户的访问量?
? 软件中的哪个组件需要更多的工作投入?
? 软件已经可以发布了吗?
有了以上问题的答案,我们可以做些什么?
? 尽早发现缺陷,节省时间和金钱。
? 避免或减少开发的滞停。
? 因为有了比较好的应用程序,我们可以提供更好的客户服务。
? 知道我们已满足用户的要求。
? 为后续版本做必要的修改和改进。
? 识别和分类可复用的模块和组件。
? 识别出程序员和开发人员在哪些方面需要培训。