您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第1章__软件测试概述
软件测试技术教师:张继军办公室:文理大楼607电话:8242497(办)E-mail:zhangjijun@sdau.edu.cn教学公共邮箱(大家下载学习材料):wldl123@126.com密码:wldl321作业提交邮箱:wldl6@126.com软件测试技术软件测试技术主要学习:软件测试基本原理、思想软件测试方法软件测试工具软件测试管理软件测试教程教材主编:宫云战出版社:机械工业出版社课程基本内容第1章软件测试概述第2章黑盒子测试技术第3章白盒子测试技术第4章基于缺陷模式的软件测试技术第5章集成测试方法第6章系统测试方法第7章软件评审第8章测试管理技术学习目的及其重要性掌握软件测试的基本原理和常用测试技术将这些有关的原理、方法应用到我们所开发的系统的测试中,或应用到他人所开发的系统的测试。目前,软件测试是计算机专业中一个重要的岗位,国家有专门的测试机构、以及专业测试公司,需要大批的这方面的人才。课程组织课内讲授、课外阅读和实践相结合(1)上课讲授基本的理论知识;(2)需要学生课后阅读有关的软件测试方面的资料和网站,提高认识;(3)通过实践,掌握软件测试工具的使用和测试过程的实施和管理。为什么要进行软件测试?预备知识1软件测试背景软件的质量就是软件的生命,为了保证软件的质量,人们在长期的开发过程中积累了许多经验并形成了许多行之有效的方法。但是借助这些方法,我们只能尽量减少软件中的错误和不足,却不能完全避免所有的错误。软件测试是最有效的排除和防止软件缺陷与故障的手段,并由此促进了软件测试理论与技术实践的快速发展。新的测试理论、测试方法、测试技术手段在不断涌出,软件测试机构和组织也在迅速产生和发展,由此软件测试技术职业也同步完善和健全起来。1.1软件缺陷1.软件错误案例软件是我们目前生活中离不开的。然而软件是由人编写开发的,是一种逻辑思维的产品,尽管现在软件开发者采取了一系列有效措施,不断地提高软件开发质量,但仍然无法完全避免软件(产品)会存在各种各样的缺陷。软件缺陷在航空航天领域中案例(1)2005年4月,电脑故障导致美国宇航局的一艘飞船与一颗军事卫星相撞(2)2003年5月,因飞船导航软件设计错误,俄罗斯“联盟—TMA1”载人飞船返回途中偏离了降落目标地点约460公里(3)2000年11月11日,由于软件错误导致美国飞机鱼鹰MV-22坠毁。软件缺陷在金融、交通领域中案例(2)2006年10月10日,香港机场中央计算机系统故障导致47个航班延误(3)2005年11月1日上午东京股市因系统故障暂停交易(1)2006年2月5日,因是终端设备软件问题,南京地铁全线售检票系统瘫痪,有一万多名乘客受到影响。1994年秋天,迪斯尼公司发布了第一个面向儿童的多媒体光盘游戏——狮子王动画故事书(TheLionKingAnimatedStorybook)。尽管已经有许多其他公司在儿童游戏市场上运作多年,但是这次是迪斯尼公司首次进军这个市场,所以进行了大量促销宣传。结果,销售额非常可观,该游戏成为孩子们那年节假日的“必买游戏”。然而后来却飞来横祸。12月26日,圣诞节的后一天,迪斯尼公司的客户支持电话开始响个不停。很快,电话支持技术员们就淹没在来自于愤怒的家长并伴随着玩不成游戏的孩子们哭叫的电话之中。报纸和电视新闻进行了大量的报道。后来证实,迪斯尼公司未能对市面上投入使用的许多不同类型的PC机型进行广泛的测试。软件在极少数系统中工作正常—-例如在迪斯尼程序员用来开发游戏的系统中——但在大多数公众使用的系统中却不能运行。(1)迪斯尼的狮子王游戏软件缺陷。(2)爱国者导弹防御系统缺陷爱国者导弹防御系统是里根总统提出的战略防御计划(即星球大战计划)的缩略版本,它首次应用在海湾战争中对抗伊拉克飞毛腿导弹的防御战中。尽管对系统赞誉的报道不绝于耳,但是它确实在对抗几枚导弹中失利,包括一次在沙特阿拉伯的多哈击毙了28名美国士兵。分析发现症结在于一个软件缺陷,系统时钟的一个很小的计时错误积累起来到14小时后,跟踪系统不再准确。在多哈的这次袭击中,系统已经运行了100多个小时。(3)千年虫问题20世纪70年代早期的某个时间,某位程序员正在为本公司设计开发工资系统。他使用的计算机存储空间很小,迫使他尽量节省每一个字节。他将自己的程序压缩得比其他任何人都紧凑。使用的其中一个方法是把4位数年份,例如1973年,缩减为2位数,73。因为工资系统相当信赖于日期的处理,所以需要节省大量的存储空间。他简单的认为只有在到达2000年,那时他的程序开始计算00或01这样的年份时问题才会产生。虽然他知道会出这样的问题,但是他认定在25年之内程序肯定会升级或替换,而且眼前的任务比现在计划遥不可及的未来更加重要。然而这一天毕竟到来了。1995年他的程序仍然在使用,而他退休了,谁也不会想到如何深入到程序中检查2000年兼容问题,更不用说去修改了。估计全球各地更换或升级类似的前者程序以解决潜在的2000问题的费用已经达数千亿美元。1999年12月3日,美国航天局的火星极地登陆者号探测器试图在火星表面着陆时失踪。一个故障评估委员会调查了故障,认定出现故障的原因极可能是一个数据位被意外置位。最令人警醒的问题是为什么没有在内部测试时发现呢。美国航天局为了省钱,简化了确定何时关闭着陆推进器的装置。为了替代其他太空船上使用的贵重雷达,他们在探测器的脚部装了一个廉价的触点开关,在计算机中设置一个数据位来控制触点开关关闭燃料。很简单,探测器的发动机需要一直点火工作,直到脚“着地”为止。遗憾的是,故障评估委员会在测试中发现,许多情况下,当探测器的脚迅速撑开准备着陆时,机械震动也会触发着陆触点开关,设置致命的错误数据位。设想探测器开始着陆时,计算机极有可能关闭着陆推进器,这样火星极地登陆者号探测器飞船下坠1800米之后冲向地面,撞成碎片。结果是灾难性的,但背后的原因却很简单。登陆探测器经过了多个小组测试。其中一个小组测试飞船的脚折叠过程,另一个小组测试此后的着陆过程。前一个小组不去注意着地数据是否置位——这不是他们负责的范围;后一个小组总是在开始复位之前复位计算机,清除数据位。双方独立工作都做得很好,但合在一起就不是这样了。(4)美国航天局火星登陆探测器缺陷(5)金山词霸缺陷在国内,“金山词霸”是一个很著名的词典软件,应用范围极大,对使用中文操作的用户帮助很大,但它也存在不少缺陷。例如输入“cube”,词霸会在示例中显示33=9的错误;又如,如果用鼠标取词“dynamically”(力学,动力学),词霸会出现其他不同的单词“dynamiten.炸药”的显示错误。(6)英特尔奔腾浮点除法缺陷在计算机的“计算器”程序中输入以下算式:(4195835/3145727)*3145727-4195835如果答案是0,就说明计算机没问题。如果得出别的结果,就表示计算机使用的是带有浮点除法软件缺陷的老式英特尔奔腾处理器——这个软件缺陷被烧录在一个计算机芯片中,并在制作过程中反复生产。1994年10月30日,弗吉利亚州Lynchburg学院的ThomasR.Nicely博士在他的一个实验中,用奔腾PC机解决一个除法问题时,记录了一个想不到的结果,得出了错误的结论。他把发现的问题放到因特网上,随后引发了一场风暴,成千上万的人发现了同样的问题,并且发现在另外一些情形下也会得出错误的结果。万幸的是,这种情况很少见,仅仅在进行精度要求很高的数学、科学和工程计算中才会导致错误。大多数用来进行税务处理和商务应用的用户根本不会遇到此类问题。计算机软件缺陷问题数据统计1998年4月26日,CIH病毒爆发,全球超过6000万台电脑被破坏,一天之内,国内有几十万台计算机瘫痪或数据丢失,直接经济损失为0.8亿元,间接经济损失超过10亿元。千年虫问题最著名的软件可靠性问题的一个实例。事后的分析认为,千年虫的影响并未象预测的那样严重。但是据报道,全世界用于补救千年虫问题的费用估计已超过1000亿美元美国标准与技术研究院估计,每年由于软件BUG造成的损失为600-750亿美元,超过美国国内生产总值的0.6%。但是美国可持续计算联盟认为这个估计有些保守,他们认为存在缺陷的计算机系统每年会给美国公司造成总额超过2000亿美元的损失。我国典型统计数据表明,在软件开发阶段,平均每千行代码有50~60个故障,交付后平均每千行代码有15~18个故障,有时还留下严重隐患。问题?通过这些“软件错误案例”可以看到,软件由于小小的差错,可能引起巨大的事故。特别是在一些重要应用领域:航天、航空、军事、金融系统等,对软件的质量要求更高,那么,如何提高软件质量?如何避免软件中可能出现的缺陷呢?除了在开发中严格按照软件工程的思想方法开发软件,还必须对软件实行严格的测试------通过软件测试,发现软件中的缺陷或错误。什么是软件缺陷呢?如何进行测试呢?2.软件缺陷的定义软件缺陷一般指如下5种情况:(1)软件未实现产品说明书要求的功能。(2)软件出现了产品说明书指明不会出现的错误。(3)软件超出实现了产品说明书提到的功能。(4)软件实现了产品说明书虽未明确指出但应该实现的目标。(5)软件难以理解,不易使用,运行缓慢或终端用户认为不好。以计算器为例说明每一条规则的意义计算器的产品说明书声称它能够准确无误地进行加、减、乘、除运算。当你拿到计算器后,按下(+)键,结果什么反应也没有,根据第1条规则,这是一个缺陷。假如得到错误答案,根据第1条规则,这同样是一个缺陷。若产品说明书声称计算器永远不会崩溃、锁死或者停止反应。当你任意敲键盘,计算器停止接受输入,根据第2条规则,这是一个缺陷。若用计算器进行测试,发现除了加、减、乘、除之外它还可以求平方根,说明书中从没提到这一功能,根据第3条规则,这是软件缺陷。软件实现了产品说明书未提到的功能。若在测试计算器时,会发现电池没电会导致计算不正确,但产品说明书未指出这个问题。根据第4条规则,这是个缺陷。第5条规则是全面的。如果软件测试员发现某些地方不对劲,无论什么原因,都要认定为缺陷。如“=”键布置的位置使其极其不好按;或在明亮光下显示屏难以看清。根据第5条规则,这些都是缺陷。3.软件缺陷的原因软件缺陷的产生:首先是不可避免的。其次从软件本身,团队工作和技术问题等多个方面分析,造成软件缺陷的原因,主要有3个原因:技术问题团队工作软件本身(1)技术问题算法错误。语法错误。计算和精度问题。系统结构不合理,造成系统性能问题。接口参数不匹配出现问题。(2)团队工作系统分析时对客户的需求不是十分清楚,或者和用户的沟通存在一些困难。不同阶段的开发人员相互理解不一致,软件设计对需求分析结果的理解偏差,编程人员对系统设计规格说明书中某些内容重视不够,或存在着误解。设计或编程上的一些假定或依赖性,没有得到充分的沟通。(3)软件本身文档错误、内容不正确或拼写错误。数据考虑不周全引起强度或负载问题。对边界考虑不够周全,漏掉某几个边界条件造成的错误。对一些实时应用系统,保证精确的时间同步,否则容易引起时间上不协调、不一致性带来的问题。没有考虑系统崩溃后在系统安全性、可靠性的隐患。硬件或系统软件上存在的错误。软件开发标准或过程上的错误。4.软件缺陷的组成软件缺陷是由很多原因造成的,按需求分析结果——规格说明书,系统设计结果,编程的代码等归类起来,比较后发现,规格说明书是软件缺陷出现最多的地方。软件缺陷构成示意图软件产品规格说明书是软件缺陷存在最多的地方,其主要原因:1.用户一般是非计算机专业人员,软件开发人员和用户的沟通存在较大困难,对要开发的产品功能理解不一致。2.由于软件产品还没有设计、开发、完全靠想象去描述系统的实现结果,所以有些特性还不够清晰。3.需求变化的不一致性。用户的需求总是在不断变化的,这些变化如果没有在产品规格说明书中得到正确的描述,容易引起前后文,上下文的矛盾。4.对规格说明书不够重视,在规格说明书的设计和写作上投入的人力,时间不足。5.没有在整个开发队伍中进行充分沟通,有时只有设计师或项目经理得
本文标题:第1章__软件测试概述
链接地址:https://www.777doc.com/doc-3859122 .html