第1 章软件测试概述
随着计算机技术的飞速发展,人们对计算机的需求和依赖与日俱增。随之而来的是计算机系统的规模和复杂性急剧增加,其软件开发成本以及由于软件故障而造成的经济损失也正在增加,软件质量问题已成为人们共同关注的焦点。因此,许多科学家在展望21世纪计算机科学发展方向和策略时,把软件质量放在优先于提高软件功能和性能的地位。
软件测试是对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。随着软件系统规模和复杂性的增加,进行专业化高效软件测试的要求越来越严格,软件测试职业的价值逐步得到了认可,软件测试从业人员急剧增加,软件测试评测中心如雨后春笋般成长起来。可以预测,在未来3~5年内,软件测试技术将作为一门新兴产业而快速发展起来。
计算机系统的软件可靠性问题
随着对计算机需求和依赖的与日俱增,计算机系统的规模和复杂性急剧增加,使得计算机软件的数量以惊人的速度急剧膨胀。与此同时,计算机出现故障引起系统失效的可能性也逐渐增加。由于计算机硬件技术的进步,元器件可靠性的提高,硬件设计和验证技术的成熟,硬件故障相对显得次要了,软件故障正逐渐成为导致计算机系统失效和停机的主要因素。
下面介绍几个实例,以说明软件故障可能造成的损失和灾难,
千年虫问题
千年虫问题是一个众所周知的软件故障。上世纪70年代,所使用的计算机存储空间很小,这就迫使程序员在开发工资系统时尽量节省存储空间,一个简单的方法是在存储日期时,只存储2位,如1974存储为74。工资系统常依赖于日期的处理,因此他们节省了大量的存储空间。他们知道在2000年到来时,问题会出现,比如银行在计算利息时,是用现在的日期如“2000年1月1日”减去客户当时的存款日期如“1974年1月1日”,如果年利息为3%,那么每100元银行应付给客户78元的利息。如果年份存储问题没有得到纠正,其存款年数就变为-74年,客户反应付给银行利息了,这显然是不合理的。但他们认为在20多年内程序肯定会更新或升级,而且眼前的任务比计划遥不可及的未来更加重要。为此,全世界付出了数亿美元的代价来更换或升级类似程序以解决千年虫问题,特别是金融、保险、军事、科学、商务等领域,花费大量的人力、物力对现有的各种各样程序进行检查、修改和更新。
1991年,美国爱国者导弹防御系统首次应用在海湾战争中对抗伊拉克飞毛腿导弹的防御战争中。尽管对该系统的赞誉不绝于耳,但是它确实在几次对抗导弹战役中失利,其中一枚在沙特阿拉伯的多哈击毙28名美国士兵。分析专家发现症结在于一个软件故障。一个很小的系统时钟错误积累起来就可能拖延14小时,造成跟踪系统失去准确度。在多哈袭击战中,这样一个小故障造成系统被拖延100多个小时。
1999年美国宇航局火星极地登陆飞船在试图登陆火星表面时突然坠毁失踪。故障评测委员会调查分析了这一故障,认定出现该故障的原因可能是由于某一数据位被更改,并认为该问题在内部测试时应该能够解决。
为什么会这样呢?简单而言,火星登陆过程计划是:飞船在火星表面降落时,着陆伞自动打开以减缓飞船的下降速度。当飞船距离火星表面1800米时,丢弃着陆伞,点燃登陆推进器,缓缓降落到地面。然而,美国宇航局为了节省开销,简化了关闭着陆推进器的装置,在飞船的支撑脚部安装了一个触点开关,在计算机中设置一个数据位来控制触点,以关闭飞船燃料。显然,飞船没着陆以前,推进器就应该一直处于着火工作状态。不幸的是,在许多情况下,当飞船的支撑脚迅速打开准备着陆时,机械震动也会触发触点开关,导致设置了错误的数据位,关闭了登陆推进器的燃料,使火星加速下降1800米后撞向地面,撞成碎片。
结果是灾难性的,但原因很简单。事实上,飞船发射之前,经过了多个小组的测试,其中一个小组负责测试飞船支撑脚的落地打开过程,另一个小组负责测试此后的着陆过程。其前一个小组没有检测触点开关数据位,那不是他们的职责;后一个小组总是在测试之前重置计算机,清除数据位。两个小组工作的都很好,但从未在一起进行过集成/系统测试,接口错误没有被检测出,从而导致了这一灾难性的事故。
在PC机的“计算器”中输入以下算式:
(4195835 ¤ 3145727)´ 3145727-4195835
如果答案不为0,就说明该计算机使用的是带有浮点除法软件缺陷的老式Intel奔腾处理器。
1994年,美国弗吉利亚州Lynchburg学院的一位博士在用奔腾PC机解决一个除法问题时,发现了这个问题。他将发现的问题放在互联网上,引发了一场风暴,成千上万的人发现了同样的问题,以及其它得出错误结果的情形。万幸的是,这种情况很少出现,仅在精度要求很高的数学、科学和工程计算中才会出现。
这个事件引起
第01章 软件测试概述 来自淘豆网m.daumloan.com转载请标明出处.