1、IT Education & TrainingIT Education & T2本章目标通过本章的学习,理解并掌握:1. 软件测试基础2. 基本的测试过程3. 测试的基本原理4. 测试的理念 IT Education & TrainingIT Education & T41. 软件测试基础1.1 什么是软件缺陷1.2 缺陷因果链1.3 软件测试的定义1.4 软件质量模型1.5 测试工作量IT Education & T51.1 缺陷及其产生原因先看一下软件在我们生活中的位置及作用:公路上的代码带翼的软件“设计飞机需要数千名专家,加上许多人工智能, 在完成之前,美国和日本的1700个工作站已经运
2、行了专门的CAD软件,一旦飞机飞在空中,有400万条完全没有错误的指令在驱动他。”“当您启动BMW7系列时,您激活了20兆字节的计算能力这比阿波罗11号的登月之旅中所用的还要多。”IT Education & T6由此得出 软件已经成为我们的工作、生活中不可或缺的重要部分。软件质量已经成为决定产品质量或企业成败的最重要的因素。软件不能正常工作所带来的问题对我们的工作和生活带来很多不便,甚至会造成时间、金钱、信誉等方面的重大损失,严重时会危及生命。IT Education & T7先看几个软件问题的例子:IT Education & T8英特尔奔腾浮点除法软件缺陷1995(4195835 / 3
3、145727) * 3145727 4195835 0测试工程师在芯片发布之前的内部测试时已发现了这个问题,但管理层认为没有严重到要修复的程度。用户在1994年10月30日报告了这个缺陷,Intel承诺更换有问题的芯片,但要求用户必须证明自己受到了软件缺陷的影响。最终,Intel公开道歉并花费4亿多美元更换坏芯片。IT Education & T9迪斯尼的狮子王 1994-19951994年秋,迪斯尼发布了第一个面向儿童的多媒体光盘游戏-狮子王,这款游戏很快成为当年夏季孩子们的“必选游戏”。然而,圣诞后的一天,投诉的电话响个不停,电话支持部门很快被淹没在愤怒的家长和孩子们因完不成游戏而哭闹不停
4、的电话狂潮之中。原因是它只能在有限的几款平台上运行,而迪斯尼并没有意识到这点,游戏包装上也没做任何说明。IT Education & T10美国航天局(NASA)火星极地着陆-1999 1999年12月3日,美国航天局的火星基地登陆飞船在试图登录火星表面时失踪。 在设计中,在飞船的脚上装了一个的触点开关,当飞船的脚着地时,触发开关,通过计算机中设置的一个数据位来关掉燃料。然而,在飞船的脚张开时,由于震动,开关被触发,并通过数据位关掉燃料。原因:其中一个小组测试飞船的脚落地过程,并不注意着地数据位是否置位,另一个小组测试此后的着陆过程,他们每次测试前都要重置计算机、清除数据位。他们从未一起工作过
5、!IT Education & T11爱国者导弹防御系统-1991 1991年2月25日在海湾战争中,美国的爱国者导弹在发射时产生了0.33秒的时间误差,这个软件故障扰乱了导弹的雷达跟踪系统,结果拦截失败,被伊拉克发射的飞毛腿导弹击中,造成美军28名士兵死亡、98人受伤。 1991年2月16日, 制造商向美国陆军提供了更新软件。这个软件最终在飞毛腿导弹击中军营后的一天才运抵部队。 IT Education & T12千年虫-大约197420世纪70年代某程序员Dave为了节省宝贵的内存空间,将4位数的年份压缩成两位数,他主要认为只有在到达2000年时程序计算00或01 这样的年份时才会出现问题
6、。他绝对没想到他的程序 会使用到21世纪。IT Education & T13 1963年美国研制的一枚发射火星探测器的火箭,由于程序员将程序中的“,”误写成“.”,导致火箭升空爆炸; 1996年6月4日,欧空局投资67亿美元研制的阿里安5火箭爆炸的悲剧,也是由于软件错误引起的。:IT Education & T14: 2003年3月22日,一个“爱国者”导弹连在伊拉克与科威特接壤的边境地区击落一架英军“旋风”式战斗机,机上两人死亡。经调查,这起事故的原因是用在英军战机上的敌我识别装置发生故障。 两天后,一架美军16型战斗机发射一枚导弹击中一个“爱国者”导弹系统,因为这架战斗机的驾驶员发现“爱
7、国者”导弹的雷达系统已经把自己的飞机锁定。战斗机发射的导弹摧毁了“爱国者”雷达系统,但没有造成人员伤亡。IT Education & T15 2005年11月1日,日本东京证券交易所股票交易系统发生大规模系统故障,导致所有股票交易全面告停,短短2个小时造成了上千亿元的损失。经查明,故障的“元凶”是当年10月为增强系统处理能力而更新的交易程序存在缺陷。 2005年1月16日晚11时30分至1月17日凌晨1时30分,在北京西站购买直达特快列车车票的旅客苦等了两个小时仍然没有买到票,售票员说电脑系统出现故障无法出票。之前,北京直达特快列车车票因电脑系统问题已经在16日下午3时停售了一个小时。 200
8、5年4月,一个软件的小Bug让美国航空集团公司损失了数十万美元,当时一些机票的价格被错误地定为1.86美元; 2003年8月美国东北地区的大停电正是由软件Bug造成的,这次停电让数百万人陷入黑暗。 IT Education & T16IT Education & T171.2 缺陷因果链术语:术语: 人为的、产生不正确结果的动作。 比如程序逻辑错误、代码错误、文档错误等IT Education & T18术语:术语:(DefectDefect)可能会导致软件组件或系统无法执行其定义功能的瑕疵,如错误的语句或数据定义。缺陷可能会导致失效(Failure)。IT Education & T19术语
9、:术语: 指缺陷在软件运行时的表现形式。故障一定是缺陷,但缺陷不一定是故障。术语:术语:(FailureFailure) 组件或系统与预期的交付、服务或结果之间存在的实际偏差。IT Education & T20缺陷因果链“脚垫门”、“踏板门”事件IT Education & T21一个故障可能给不同的用户带来为数不等的失效。IT Education & T22() 有时,一个故障会被应用程序其它部分的某个或某些故障所掩盖,这称为缺陷屏蔽。在这种情况下,只有修复了屏蔽它的故障后,相应的失效才会显现出来。IT Education & T23怎么样去判别软件缺陷?只要符合下列5个规则的,我们称之为
10、软件缺陷:1.软件未达到产品说明书标明的功能。2.软件出现了产品说明书指明不会出现的错误。3.软件功能超出产品说明书指明范围。4.软件未达到产品说明书虽未指出但应达到的目标。5.软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。IT Education & T24缺陷有时也叫做Bug故事发生在1945年9月的一天,一个炎热的下午,机房是一间第一次世界大战时建造的老建筑,没有空调,所有窗户都敞开着。Hopper正领着她的研究小组夜以继日地工作,研制一台称为“MARK II”的计算机,它使用了大量的继电器(电子机械装置,那时还没有使用晶体管),一台不是纯粹的电子计算机。突然
11、,MARK II死机了。研究人员试了很多次还是启动不来,然后就开始用各种方法找问题,看问题究竟出现在哪里,最后定位到板子F第70号继电器出错。Hopper观察这个出错的继电器,惊奇地发现一只飞蛾躺在中间,已经被继电器打死。她小心地用摄子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例”,然后计算机又恢复了正常。从此以后,人们将计算机错误戏称为臭虫(Bug),而把找寻错误的工作称为“找臭虫”(Debug)。Grace Hopper的事件记录本,连同那个飞蛾,现在都陈列在美国历史博物馆中。 IT Education & T25产生缺陷的主要原因是。当然,外界环境也会产生软
12、件缺陷,如辐射、磁场等。为什么会出现软件缺陷IT Education & T26软件缺陷原因分析 产生软件缺陷的原因很多,其中最大的原因是()。Figure 1.1. Bugs are caused for numerous reasons, but, in this sample project analysis, the main cause can be traced to the specification. IT Education & T27为什么软件需求规格是最大的罪魁祸首根本就没有软件需求规格软件需求规格描述不够彻底软件需求规格频繁变化不能及时与整个开发团队沟通 “If you
13、 cant say it, you cant do If you cant say it, you cant do it.”it.”IT Education & T28软件缺陷的第二大来源是设计随意随意易变易变沟通不足沟通不足IT Education & T29软件错误的原因应当强调的是,所有这些错误的原因都是人。IT Education & T30软件缺陷的()费用在软件开发的各个阶段,都有可能发现缺陷,但不同的时间发现缺陷,其消除缺陷的费用却有着非常大的区别。随着时间的推移,缺陷的修复费用呈几何级数增长。IT Education & T31软件缺陷的修复费用Figure 1.2. The
14、cost to fix bugs can increase dramatically over time. IT Education & T321.3 软件测试1979, G. J. Myers在他的软件测试的艺术一书中给出了软件测试的定义:程序测试是为了发现错误而执行程序的过程。狭义的定义,其主要目的是发现缺陷。IT Education & TrainingG. J. Myers三个关于测试的重要观点 测试是为了证明程序有错,而不是证明程序正确。 一个好的测试用例在于它能发现以前未发现的错误。 一个成功的测试是发现了以前未发现的错误的测试。IT Education & T34广义的定义 软件
15、测试是指软件产品生存周期内所有的检查、评审和确认活动,如设计评审和系统测试。 在软件生命周期早期设计测试的思考过程可防止将缺陷引入代码,对文档的审查也同样可防止将缺陷引入代码。IT Education & T35软件测试的目的 尽早发现软件产品中的缺陷并确保其被修复 评估、确认软件的质量 预防缺陷 具体实施软件测试时,要在发现缺陷和保证质量两个目的之间做出平衡。IT Education & T36验证和确认(V&V)软件测试通过验证和确认活动来进行。 :是保证软件符合产品说明书的过程。Are we building the system ?:是保证软件满足用户要求的过程。Are we buil
16、ding the system?IT Education & T37验证和确认验证和确认(V&V)(V&V)是要检查产品是否完成了它应该完成的任务,是否可发挥它预定的作用。强调产品产品的正确性是要检查某个阶段的结果是否满足在该阶段给出的设计文档的要求,强调过程过程的正确性IT Education & T38例:例:Hubble space telescope Hubble space telescope 该例子虽不是一个软件,但验证和确认同样适用于软件测试。绝对不能假定产品说明书是对的。如果验证产品说明书并对最终产品进行确认,就有望Hubble避免天文望远镜的问题。IT Education &
17、 T39测试与调试目的是发现缺陷,通常在受控的条件下(正常的条件和异常的条件)运行程序并评估结果。做测试的可以是开发人员、测试团队、QA团队及最终用户目的是定位并修复故障,属于开发活动。调试是软件开发人员的工作IT Education & T40软件测试的对象软件测试并不等于程序测试。软件测试应该贯穿整个软件产品开发过程,软件产品不仅仅是程序,软件开发过程中的各种工作产品以及最后要打包发布的软件产品等也都是我们要测试的对象。IT Education & T41软件开发过程中的各种工作产品 客户需求:通过对客户需求的研究、提炼、分析以便确定软件产品应该具备哪些功能。 产品规格说明书:产品规格说明
18、书真正地定义了产品是什么、有哪些功能、外观如何。 软件设计文档:它相当于一幢建筑的蓝图,具体包括软件的系统设计和详细设计文档、程序代码及代码注释。 测试文档:测试文档是完整的软件产品的一部分,具体包括:测试计划、测试用例、缺陷报告、测试工具和自动化测试、测试度量、统计和总结。 当软件产品要打包发布时,不仅仅发布的是代码,还包括很多支持内容,这些支持内容包括:帮助文档、用户手册、样表和示例、标签和不干胶、产品支持信息、图标和标志、错误信息、广告和宣传资料、安装、说明文件等。IT Education & Training本次课后任务1以组为单位交叉检查上次任务完成情况,并收集所做的作业,按一下格式报检查结果:42组号组号/ /组名组名学号姓名学号姓名负责题号负责题号完成情况完成情况注:学号只写后三位即可IT Education & Training本次课后任务2以组为单位完成以下任务:(100分)1. 软件质量模型,软件产品有哪些质量属性?2. 尝试举例说明每个软件质量属性3. 思考软件质量保证与测试之间的关系4. 基本的测试过程包括哪几个阶段?假如现在让你们对一个很小的软件如计算器进行测试,你应该怎么做?描述过程5. 你知道哪些软件测试的原理?43