9.1软件错误及分类_第1页
9.1软件错误及分类_第2页
9.1软件错误及分类_第3页
9.1软件错误及分类_第4页
9.1软件错误及分类_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件质量保证与测试第9章软件质量与软件质量管理SoftwareQualityAssuranceandTesting9.1软件缺陷及分类

各种软件缺陷

软件当中可能会出现的缺陷,可以说是各式各样,首先让我们通过一些因缺陷引发的事故,来直观的体验一下软件缺陷的外在表现和不良后果。

ATM机“红包”2009年元旦刚过,在英国的曼彻斯特郡,有一台ATM机,人们取钱的时候发现,实际出款额是取款额的2倍。许多人闻讯赶来排队取款。6小时内被取走了1万英镑。人们戏称这是ATM机在发“新年红包”

后经查明,故障原因是ATM机程序缺陷。

各种软件缺陷全球“千年虫”问题

“千年虫”可以说是计算机发展史上的一个经典案例,这里呢我们多花点时间,来搞清楚“千年虫”的前世今生,以及将来可能的“魅影重现”。

各种软件缺陷全球“千年虫”问题“千年虫”问题是指在某些使用了计算机程序的智能系统(包括计算机系统、自动控制芯片等)当中,由于只使用两位十进制数来表示年份,因此当系统涉及到跨世纪的日期处理运算时就会出现缺陷的结果,进而引发各种各样的系统功能紊乱甚至崩溃。世界上第一台电子计算机“ENIAC”1946年诞生于美国宾夕法尼亚大学,计算机系统中用两位数表示年份时,实际上就是默认年份的前两位为“19”,例如,“05”年,表达的就是1905年。

各种软件缺陷全球“千年虫”问题但是当时间跨越百年,到了2000年以后,那么“05”到底是“1905”年,还是“2005”年呢?此时含义就会出现混淆,而与之相关的计算就会出现缺陷。例如,一个人的出生年份在计算机系统中登记的是80年,现在是00年的,他现在的年龄应该是多大呢?如果没有预防措施,而是按照年份相减的方式简单计算的话,那么他的年龄就是-80岁,类似的还有,98年存钱,2000取钱,结果算出来的利息是负数等等。

各种软件缺陷全球“千年虫”问题简单的说,千年虫是计算机系统在日期处理上的一个缺陷,原因是仅采用2位数表示年份,当进入新的世纪时,就无法有效区分年份,而与之相关的计算就会出现紊乱和缺陷。

各种软件缺陷00年=全球“千年虫”问题广泛地讲,“千年虫”还包括以下两个方面的问题:一是在一些计算机系统中,对于闰年的计算和识别会出现问题,不能把2000年识别为闰年,即在该计算机系统的日历中没有2000年2月29日这一天,而是直接由2000年2月28日过渡到了2000年3月1日;还有就是在一些比较老的计算机系统中,在程序中使用了数字串99(或99/99等)来表示文件结束、永久性过期、删除等一些特殊意义的自动操作,这样当1999年9月9日(或1999年4月9日即1999年的第99天)来临时,计算机系统在处理到内容中有日期的文件时,就会遇到99或99/99等数字串,从而出现将文件误认为已经过期或者将文件删除等错操作,引发系统混乱甚至崩溃。

各种软件缺陷全球“千年虫”问题

据美国一家顾问公司估计,全球花在防备千年虫发作上的费用高达6000亿美元。

各种软件缺陷

这一估算数字是否准确有待考证,但全球为此大费周章,花费巨额成本,却是不争的事实。下图为当时的一些新闻报道。

全球“千年虫”问题

各种软件缺陷全球“千年虫”问题

各种软件缺陷

看到“千年虫”的严重后果,我们不禁要问,一开始发明和使用计算机的专家学者为什么要设定成用两位数来表示年份呢?原因很简单,早期计算机存储器的成本很高,如果用四位数字表示年份,就要多占用存储器空间,就会使成本增加,因此为了节省存储空间,计算机系统的编程人员采用两位数字表示年份。全球“千年虫”问题

各种软件缺陷

随着计算机技术的迅猛发展,虽然后来存储器的价格降低了,但在计算机系统中使用两位数字来表示年份的做法却由于惯性而被沿袭下来,年复一年,直到新世纪即将来临之际,大家才突然意识到用两位数字表示年份将无法正确辨识公元2000年及其以后的年份。1997年,信息界开始拉起了“千年虫”警钟,并很快引起了全球关注。全球“千年虫”问题

各种软件缺陷

费尽周折,虽然有不少“千年虫”发作的案例,但总体而言,全球还是平稳度过了2000年。

然而时间永是流逝,用4位数表示年份,也不是一劳永逸的,类似的“万年虫”问题就在未来等着我们,因为当人类跨越10000万年时,年份混淆就会“魅影重现”!我们再来看一下其他几个软件缺陷案例。美国火星气候轨道探测器坠毁1998年12月11日,美国发射火星气候轨道探测器。参与这个项目的一个NASA的工程小组使用的是英制单位,而没有采用预定的公制单位,这造成探测器的推进装置无法正常运作。正是因为这个缺陷,1999年探测器从距离火星表面130英尺的高度垂直坠毁。此项工程成本耗费3.27亿美元,这还不包括损失的时间(该探测器从发射到抵达火星将近一年时间。)

各种软件缺陷阿丽亚娜5型火箭处女秀发射悲剧1996年6月4日,阿丽亚娜5型运载火箭首次发射,原计划将运送4颗太阳风观察卫星到预定轨道,但因软件缺陷引发的问题导致火箭在发射39秒后偏轨,从而激活了火箭的自我摧毁装置。阿丽亚娜5型火箭和其搭载的卫星在瞬间灰飞烟灭。后来查明的事故原因是:阿丽亚娜5型的发射系统代码直接重用了4型的相应代码,而4型的飞行条件和5型的飞行条件截然不同。此次事故损失3.7亿美元。

各种软件缺陷

有问题的软件、有缺陷的程序可能导致严重的后果,那么什么样的程序是正确的呢?程序的正确性有不同的标准。按照由弱到强,我们可以这样来描述程序的正确性

程序正确性程序正确性的不同标准程序编写得无语法缺陷程序执行中未发现明显的运行缺陷程序中无不适当的语句程序运行时能通过典型的有效测试数据,而得到正确的预期结果程序运行时能通过典型的无效测试数据,而得到正确的结果程序运行时能通过任何可能的数据,并给出正确结果弱强程序正确性的标准不同,那么对应的要求就不同,例如程序编写得无语法缺陷

——程序通过编译即可达到

............程序运行时能通过任何可能的数据,并给出正确结果

——这样的要求要达到很不容易!甚至可以说是无法保证到达!程序正确性的不同标准软件缺陷的分类软件中的缺陷,按照来源可以作如下分类:软件需求缺陷功能和性能缺陷软件结构缺陷数据缺陷软件实现和编码缺陷软件集成缺陷软件系统结构缺陷测试定义与测试执行缺陷

为了分析软件缺陷的来源,有人做了大量的统计工作。例如,对某一个包含有687,7000行代码的软件,在进行完单元测试、集成测试和系统测试之后,经统计共发现缺陷1,6209个,平均每千行代码有缺陷2.36个,将发现的缺陷进行分类,具体情况如下表。软件缺陷的分类缺陷分类缺陷数百分比软件需求缺陷13178.1功能和性能缺陷262416.2软件结构缺陷408225.2数据缺陷363822.4软件实现和编码缺陷16019.9软件集成缺陷14559.0软件系统结构缺陷2821.7测试定义与测试执行缺陷4472.8其他类型缺陷7634.7按照缺陷后果的严重程度:较小缺陷中等缺陷较严重缺陷严重缺陷非常严重缺陷最严重缺陷轻重软件缺陷的分类注意:缺陷本身的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论