软件测试理解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件缺陷与故障
1.软件缺陷和软件故障案例
当今人类的生存和发展已经离不开各种各样的信息服务,为了获取这些信息,需要计算机网络或通信网络的支持,这里包含着不公需要计算机硬件等基础设施或设备,还需要程式各样的、功能各异的计算机软件。软件在电子信息领域时辰我处不在。然而,软件是由人编写开发的,是一种逻辑思维的产品,尽管现在软件开发都采取了一系列有效措施,不断地提高软件开发的质量,但仍然无法完全避免软件(产品)会存在各种各样的缺陷。对于软件故障或缺陷,依据危害程度的不同,可分为轻、重不同级别。以下是六例软件缺陷和故障的案例分析,借此说明软件缺陷和故障问题有时会造成的相当严重的损失和灾难。
(1)美国迪斯尼公司的狮子王游戏软件bug。这是一个典型的软件兼容性问题。1994年,美国迪斯尼公司发布向少年儿童的多媒体游戏软件“狮子王动画故事书”。经过迪斯尼公司的大力促销活动,销售异常地火爆,使该软件游戏几乎成为当年秋季全美少年儿童必买的游戏。但产品售后不久,该公司的客户支持部的电话就一直不断,愤怒的儿童家长和玩不成游戏的孩子们大量投拆该游戏软件的缺陷,一时间各种报纸和电视媒体也大量报道了这一游戏软件的各种问题。后经调查证实,造成这一严重问题的原因是迪斯尼公司没有对该游戏软件在已投入市场上使用的各种PC机型上进行正确的测试,也就是说游戏软件对硬件环境的兼容性没有得到保证。该游戏软件的开发该程序的程序员的机器硬件系统上工件是政党的,但在大众使用的常见系统中却存在不兼容问题。该软件故障使迪斯尼公司声誉大损,并为改正软件缺陷和故障付出了沉重的代价。
(2)美国航天局火星登陆事故。1992年月日2月3日,美国航天局的火星极地登陆飞船在试图登陆火星表面时突然失踪。负责这一太空发展项目的错误修正委员会的专家们观测到的并分析了这一故障,确定出现该故障的原因可能是由于某一数据们被意外地更改,而造成灾难性的后果,并得出该问题应该在内部测试时就予以解决的结论。
简要地说,火星登陆的过程是这样的:当飞船快要降落到火星表面时,它将打开着陆降落伞以减缓飞船的下落速度。在降落伞打开后的几秒钟内,飞船的三条支撑脚将迅速撑开,并在预定的地点着陆。在飞船距离火星表面1800y高空时,飞船将丢弃降落伞,同进点燃登陆推进器,控制稳定飞船的下降速度,使其在余下高度里缓慢降落到火星表面。
然而,美国航天局为了节省研制经费,简化了确定何时关闭登陆推进器的装置。为了替代其他大空船上通常使用的贵重的着陆雷达系统,设计师们在登陆飞船的支撑脚上安装了一个简易廉价的触电开关,并在计算机中设置了一个数据们来控制关闭登陆推进器的燃料。很明确,飞船的支撑腿在没有着地之前,推进器引擎就会一直处于着火工作状态。
遗憾的是,在事后的分析测试中发现,当飞船的支撑脚迅速打开准备着陆时,机械震动很容易触发着地触电开关,导致设置了错误的数据位,关闭了登陆推进器的燃料。
设想当飞船开始进入着陆动作时,由于机械震动的缘故,触发了着地触电开关,计算机极有可能关闭了推进器的燃料,也就是说使得登陆推进器提前停止了工作,使火星登陆飞船加速下坠1800m之后直接冲向火星表面,撞成碎片。
这一事故的后果非常严重,损失巨大,然而起因却如此简单,是软件设计中的缺陷。
事实是飞船登陆飞行发射之前,飞船各部位的工作过程经过了多个小组的测试,其中一个小组测试飞船的支撑脚落地打开过程,另一个小组测试此后的着陆过程。前一个小组没有注意到着陆数据位是否已经置位,因为这不属于他们负责的范围;而后一个小组总是在开始测试之前重置计算机,进行数据的初始化,清除数据位。双方的独立工作都很
好,但从未在一起进行过集成(系统)测试,使系统测试中的衔接问题隐藏起来,从而导致了这一灾难性事故的发生。
(3)跨世纪“千年虫”问题。这是一个非常著名的计算机软件缺陷问题,在上世纪末的最后几年中,全世界的各类计算机硬件系统、软件系统和应用系统都为“千年虫”问题而付出了巨大的代价。
20世纪70年代,一位负责开发公司工资系统的程序员当时所使用的计算机内存空间很小,迫使他在程序设计时要考虑节省每一个字节,以减少对系统内存的占用。其中节约内存的措施之一就是把表示年份的4位数,例如1973,缩减为2位,即73。因为工资系统极度依赖数据处理,会有大量的数据占用内存空间,所以节约每一个字节的意义很大,该程序员的这一方法确实节省了可观的存储空间。他采用这一措施的出发点主要是认为只有在到了2000年时程序在计算00或01这样的年份时才会出现问题,但在到达2000年时,程序早已不用或都修改升级了。而在1995年,这位程序员退休了,但他所编制的程序仍在使用,没有谁会想到进入程序去检查2000年兼容的问题,更不用说去做修改了。计算机系统在处理2000年份问题(以及与年份相关的其他问题)时,软、硬件系统中存在的问题隐患被业界称为“千年虫”的问题。
据不完全统计,从1998年初全球开始进行“千年虫”问题的大检查,特别是金融、保险、军事、科学、商务等领域花费了大量的人力、物力对现有的各种各样的程序进行检查、修改和更正,据有关资料统计,公此项费用就达数百亿美元。
(4)爱国者导弹防御系统炸死自家人。美国爱国者导弹系统首次应用于海湾战争中,以对抗伊拉克的飞毛腿系统。尽管爱国者导弹防御系统在这次战争中屡建功勋,多次成功拦截飞毛腿导弹,但确实也有几次在对抗中失利,其中有一枚爱国者导弹在沙特阿拉伯的多哈炸死了28名美军士兵。事后,分析专家得出造祸于这一结果的结论是爱国都导弹防御系统中一个软件系统的缺陷所致。一个很小的系统时钏错误积累起来就可能延时14个小时,造成跟踪推动准确度。在那次的多哈袭击战中,导弹系统的重要时刻被延时100多个小时,造成了这一慧剧。
(5)Windows 2000中文输入法漏洞。在安装微软的Windows 2000简体中文版的过程中,在默认情况下会同进安装各种简体中文输入法。随后这些装入的输入法可以在Windows 2000系统用户登录界面中使用,以便用户能够使用基于字符的用户表示和密码登录系统。然而,在默认安装的情况下,Windows 2000中的简体中文输入法不能正确检测当前的状态,导致了在系统登录界面中提供了不应有的功能,即出现了下面的问题:
在Windows 2000用户登录界面中,当用户输入用户名时,用Crtl+Shift组合键将输入法切换到全拼输入法状态下,同时在登录界面的屏幕的左下角将出现输入法状态条。用鼠标右键单击状态条并在出现的菜单中选择“帮助”项,再将鼠标移到“帮助”项上,在弹出选择项里选择“输入法入门”,随后即弹出“输入法操作指南”帮助窗口。再用鼠标右键单击“选项”,并选择“跳至URL”,此时将出现Windows 2000的系统安装路径并要求填入路径的空白栏。如果该操作系统安装在C盘上,在空白栏中填入“C:\windowsnt\system32”,并单击“确定”按钮,在“输入法操作指南”右边的框里就公出现C:\widowsnt\system32目录下的内容了。也就是说这样的操作成功地了身份的难顺利地进入了系统的system32目录,当然也说可以进行各种各样的操作了。
此软件缺陷被披露后,微软公司推出了该输入法的漏洞补丁,并在Windows 2000 Server Pack2以后的补丁中都包含了对该漏洞的修补,但对于没有进行打补丁的用户来说,系统仍处于不安全的状态之中。
(6)金山词霸bug。在国内,“金山词霸”是一个很著名的词典软件,应用范围极