软件测试(第2版)
上QQ阅读APP看书,第一时间看更新

1.2 为什么要进行软件测试

为什么要进行软件测试?就是因为软件缺陷的存在。因为只有通过测试,才可以发现软件缺陷。也只有发现了缺陷,才可以将软件缺陷从软件产品或软件系统中清理出去。至于为什么会存在软件缺陷,我们将留在下一节来讨论。

软件缺陷的危害有小有大,小的缺陷可能使软件看起来不美观,使用起来不流畅或不方便。而严重的缺陷则可能给用户带来损失,甚至造成生命危险,也可能给软件企业自身带来巨大损失。下面列举的几个例子可以说明软件缺陷所带来的严重危害。美国商务部国家标准和技术研究所(NIST)进行的一项研究表明,软件缺陷每年给美国经济造成的损失高达595亿美元。这说明软件中存在的缺陷给我们带来的损失是巨大的,也说明了软件测试的必要性和重要性。

【例一】

苹果推出万众期待的iPhone 3G的同时,也推出了一个同步服务器MobileMe。MobileMe允许Mac和PC用户通过一个Web界面去同步他们的联系人、日历、电子邮件、照片等内容。但在它推出的第一天便出现了大量的问题——性能缓慢、宕机、用户随机注销等,还有一个致命的问题——整整耗费了一天的时间,同步服务也无法同步日历和全部联系人。就像苹果CEO Steve Jobs在一封内部邮件里所写的一样——这不是苹果的“光荣时刻”。后来,苹果修复了那些漏洞,并且承诺所有的MobileMe用户可以免费使用90天。2008年,互联网产品宕机的现象非常严重,包括Twitter网站频繁出现宕机,Gmail服务宕机30小时等,Twitter宕机标志Fail Whale甚至拥有了其狂热者(Fans)的俱乐部、商店等,如http://www.zazzle.com/failwhale

【例二】

当Facebook推出创新广告平台Beacon的时候,受到了极其严厉的批评。事实证明,Facebook的用户不喜欢让Web上的每个人知道他们的交易记录。例如一个小伙子在某电子商务站点上买了订婚戒指,他的Facebook资料里会立刻显示这个交易信息,从而暴露了不该暴露的信息,毁坏了他的订婚惊喜。Facebook之后在Beacon里增加了选项,允许用户设置,不显示相关信息。但是很多不良的影响已经造成了,例如一对夫妇诉讼Facebook及提供这类服务的合作伙伴。

【例三】

2008年8月,诺基亚公司承认其Series40手机平台存在严重缺陷,Series40手机所使用的旧版J2ME中的缺陷使黑客能够远程访问本应受到限制的手机功能,使黑客能够在他人的手机上秘密地安装和激活应用软件。

【例四】

2007年10月30日上午9点,北京奥运会门票面向境内公众第二阶段预售正式启动。由于瞬间访问数量过大造成网络堵塞,技术系统应对不畅,造成很多申购者无法及时提交申请。为此,票务中心向广大公众表示歉意,并宣布暂停第二阶段门票销售。

【例五】

2007年,美国12架F-16战机执行从夏威夷飞往日本的任务中,因计算机系统编码中出现了一个小错误,飞机上的全球定位系统纷纷失灵,导致一架战机折戟沉沙。

【例六】

2003年8月14日发生的美国及加拿大部分地区史上最大停电事故是由软件错误所导致的。

SecurityFocus的数据表明,位于美国俄亥俄州的第一能源(FirstEnergy)公司下属的电力监测与控制管理系统“XA/21”出现的软件错误,是北美大停电的罪魁祸首。根据第一能源公司发言人提供的数据,由于系统中重要的预警部分出现严重故障,负责预警服务的主服务器与备份服务器接连失控,使得错误没有得到及时通报和处理,最终多个重要设备出现故障导致大规模停电。

【例七】

2003年8月11日,“冲击波”计算机病毒首先在美国发作,使美国的政府机关、企业及个人用户的成千上万的计算机受到攻击。随后,“冲击波”蠕虫很快在因特网上广泛传播,结果使十几万台邮件服务器瘫痪,给整个世界范围内的Internet通信带来惨重损失。“冲击波”计算机病毒仅仅利用了微软Messenger Service中的一个缺陷,便攻破了计算机安全屏障,可使基于Windows操作系统的计算机崩溃。

【例八】

导航软件Bug使俄罗斯飞船偏离降落地。2003年5月4日,搭乘俄罗斯“联盟-TMA1”载人飞船的国际空间站第七长期考察团的宇航员们返回了地球。但在返回途中,飞船偏离了降落目标地点约460公里。据来自美国国家航空航天局的消息,这是由飞船的导航计算机软件设计中的错误引起的。

【例九】

仅仅由于没有进行有效的集成测试,就导致1999年美国宇航局的火星探测器在试图登陆火星表面时坠毁。原因是当探测器的脚迅速摆开准备着陆时,触发了着地开关,设置了错误的数据位,导致探测器在着陆之前反推器被关闭。

【例十】

爱国者导弹防御系统存在一个致命的软件缺陷,当时钟累计运行超过14小时后,系统的跟踪系统就不准确了。在1999年多哈袭击战中,爱国者导弹防御系统由于连续运行100多个小时,导致了问题的发生。防御系统未能防住飞毛腿导弹,从而造成28名美国士兵死亡。

【例十一】

1996年欧洲航天局阿丽亚娜5型火箭发射后40秒钟火箭爆炸,发射基地2名法国士兵当场死亡,历时9年的航天计划严重受挫,震惊了国际宇航界。爆炸原因在于惯性导航系统软件技术和设计的小失误。

【例十二】

1994年,已大批卖出的英特尔奔腾CPU芯片存在浮点运算的缺陷,导致英特尔公司为此付出4.5亿美元的代价。