收藏 分销(赏)

软件工程教案10(第六章-软件测试)??.ppt

上传人:天**** 文档编号:14655780 上传时间:2026-10-26 格式:PPT 页数:66 大小:733KB 下载积分:10 金币
下载 相关
软件工程教案10(第六章-软件测试)??.ppt_第1页
第1页 / 共66页
软件工程教案10(第六章-软件测试)??.ppt_第2页
第2页 / 共66页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件测试技术概论,第六章,为什么要对软件进行测试(生命损失的事故),2005年年初,巴拿马国家癌症研究中心,自2001年3月起,有27个病人接受了超量伽马射线的照射。在之后的个月里,有个病人相继去世,而其中有人的死因与接受了超量伽马射线的照射有直接的关系;另外人因受到伽马射线的照射而引发了严重的并发症。这台放射仪器是由软件来控制的;经研究,这起医疗事故是由,控制软件的缺陷,引起的。放射量的计算有的误差。,2003年,软件问题造成美国东北部及加拿大停电,导致5000万人受影响,3人丧生。,2000年美国海军飞机坠落,导致4人丧生(控制软件问题);,1997年韩国空难,导致225人丧生(雷达控制软件问题);,1995年美国航空公司一架客机在哥伦比亚利机场降落时撞向一座山,调查认为是源于导航软件的问题。该事件导致159人丧生。,为什么要对软件进行测试,2004年,媒体报道过北美银行由于一个新安装的软件的缺陷,使得数以万计的客户受到影响,该缺陷的修复花费了整整两个星期的时间,造成数亿元损失;,2003年10月,美国的一个主要零售企业被政府重罚,原因是其网站软件的缺陷使得客户相互间可以查看他人在该网站的订单;,2003年4月,美国一个专门为学生提供贷款的公司由于软件出错,错误计算80万名学生贷款利率,导致了800万美元的利率损失;,为什么要对软件进行测试(经济损失的事故),6.1 基本概念,软件质量保证、最终检查,主要研究内容是什么?,需要什么样的专业基础?,软件质量到底是什么?,测试的目标是什么?,开发一个测试系统之前你是否明白:,可以测试什么?,应该测试什么?,最终能够测试什么?,测试的目标是什么?,有关测试的思考题,质量控制技术,质量控制活动分类,开发方法学,配置管理,验证技术,评 审,正确性验证,性能调试,组件测试,集成测试,系统测试,原子事务,模块冗余性,检 错,质量控制,避免错误,容 错,调 试,测 试,6.1.1 测试的目的与地位,G.J.Myers在经典著作软件测试之艺术,(The Art of Software Testing),中认为:,程序测试是为了发现错误而执行程序的过程”。,1.测试是为了寻找错误而运行程序的过程。,2.一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试。,3.一个成功的测试是揭示了迄今为止尚未发现的错误的测试。,E.W.Dijkstra 指出:,“,程序测试能证明错误的存在,但不能证明错误不存在,.”,测试的目的是发现程序中的错误,是为了,证明程序有错,而不是证明程序无错.,测试的,“,成功,”与“,失败,”,“,测试的目的是说明程序正确地执行它应有的功能,”这种说法正确吗?,例:程序Triangle,输入三个整数,表示一个三角形的三个边长,该程序产生一个结果,指出该三角形是等边三角形、等腰三角形还是不等边三角形。,为说明其能正确执行它的功能,可使用“测试用例”(3,4,5),(5,5,6),(6,6,6),程序都能给出正确结果,是否就可认为程序是正确的?,难以说清的软件缺陷,古谚:“一片树叶飘落在森林中没有人听见,,谁能说它发出了声音?”,由于不能报告没有看见的问题,因此,,没有看见就不能说存在软件缺陷,如果软件中的问题没有人发现,那么它算不算软件缺陷?”,只有看到了,才能断言软件缺陷,尚未,发现的软件缺陷只能说是未知软件缺陷。,眼,见,为,实,6.1.2 测试原则,(1),所有的测试都应追溯到用户,需求,最严重的错误(从用户角度),(2)概要设计时应完成,测试计划,设计模型确定后 ,测试用例定义,软件测试,程序测试,据美国一家公司统计,查出的软件错误中:,属于需求分析和软件设计的错误(64%),属于程序编写的错误(36%),故,程序编写的许多错误是“先天的”。,测试与开发前期工作的关系,决定软件与系统的配合关系,需求,分析,概要设计,详细设计,编 码,单元测试,集成测试,确认测试,系统测试,模块,接口,需求,综合,开发前期出现错误的扩展,计划,需求,分析,设,计,编,码,测,试,A,A,B,软件生存期各阶段间需保持的正确性,用户要求,用户:,我要什么?,运行结果,计算机:,程序运行得,到的结果,源程序,程序员:,我要让计算,机什么做?,设计说明书,设计员:,我要让软件,做什么?,需求说明书,分析员:,我可以提,供什么?,1,2,3,4,5,理解正确性,表达正确性,理解正确性,设计正确性,表达正确性,理解正确性,编码正确性,运行正确性,输入正确性,相符吗?,(3)pareto原则:,测试发现的错误中,80%,很可能起源于,20%,的模块中。(孤立疑点模块重点测试),(4)穷举测试是不可能的。,(5)应由独立的第三方来构造测试。,(测试队伍),(6)测试用例:,输入数据 预期的结果,(7)合理的输入 不合理的输入,(8)程序修改后要,回归测试,(9)长期保留测试用例,直至系统废弃。,6.1.3 可,测试性,“好”测试的属性:,发现错误的可能性高,不冗余,在目的相似的测试中,应使用最可能找到错误的测试,每一个测试应独立执行,错误,(,fault,)、,误差,(,error,)和,故障,(,failure,),出轨(出故障)?,图中不表示故障,因为既没有指定期望行为也没有任何观察的行为,它也不表示误差,因为这不意味着系统正处在进一步处理将导致故障的状态.,错误,(,fault,)、,误差,(,error,)和,故障,(,failure,),用例名称 DriveTrain,参与执行者 火车司机,入口条件 司机按下控制面板上的StrartTrain,事件流 1.列车开始在轨道1上运行,2.列车平移到轨道2,退出条件 列车运行在轨道2上,特殊条件 没有,用例DriveTrain指定了列车的期望行为:,测试(test)调试(debug),以已知条件开始,使用预先定义的程序,有预知的结果,以不可知内部条件开始,结果一般不可预见,有计划,被动的,由独立的测试组,在,不了解软件设计的条,件下完成,由程序作者进行,发现错误,找出错误位置,排除,测试与调试(排错),6.1.4,测试用例设计,软件测试员最重要的一项工作,例:,三角形问题,输入三个整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为,等边三角形,、,等腰三角形,、,一般三角形,(特殊的还有直角三角形),以及,构不成三角形,。,现在要求输入三个整数a、b、c,必须满足以下条件:,条件1 1a100 条件4 ab+c,条件2 1b100 条件5 ba+c,条件3 1c100 条件6 ca+b,不满足条件1、条件2和条件3:给出“边的取值超出允许范围”的信息。,满足条件1、条件2和条件3:输出下列四种情况之一:,(1)不满足条件4、条件5和条件6中的一个,则程序输出为“非三角形”,(2)三条边相等,则程序输出为“等边三角形”,(3)恰好有两条边相等,则程序输出为“等腰三角形”。,(4)三条边都不相等,则程序输出为“一般三角形”。,结论:三角形问题的复杂之处在于输入与输出之间的关系比较复杂。,讨论:对输入与输入关系复杂的程序,怎样才能达到完全测试?,例:三角形问题(续),条件1 1a100 条件4 ab+c,条件2 1b100 条件5 ba+c,条件3 1c100 条件6 c1)AND(B=0),THEN X:=X/A,IF(A=2)OR(X1),THEN X:=X+1,END;,开始,(A1)AND(B=0),(A=2)OR(X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,(1)语句覆盖,使程序中每个语句至少执行一次,开始,(A1)AND(B=0),(A=2)OR(X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,A=2,B=0,X=40,最弱的逻辑覆盖,(2)判定覆盖(分支覆盖),使每个判定的真假分支都至少执行一次,开始,(A1)AND(B=0),(A=2)OR(X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,A=3,B=0,X=-3 可覆盖c、d分支,A=2,B=1,X=1 可覆盖b、e分支,弱的逻辑覆盖,(3)条件覆盖,每个判定的每个条件的可能取值至少执行一次,满足条件:,T1,T1,T2,T2,T3,T3,T4,T4,开始,(A1)AND(B=0),(A=2)OR(X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,测试用例,通过 满足的 覆盖,A B X,路径 条件 分支,1 0 3 abe,T1,T2,T3,T4,b,e,2 1 1 abe,T1,T2,T3,T4,b,e,两个测试用例,覆盖了四个条件八种可能,取值,。,未覆盖c、d分支,,不满足判定覆盖的要,求.,条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖,(4)判定/条件覆盖,(5)条件组合覆盖,(6)路径覆盖,6.4黑盒测试的测试用例设计,6.4.1 等价类划分法,输入数据,有效的,无效的,等价的子集,等价类,等价类中的一个典型值在测试中的作用与类中所有其它值的作用相同,如何划分等价类?,划分标准?,覆盖,不相交,代表性,例:,某报表处理系统要求用户输入处理,报表的日期,日期限制在,2001年1,月,至,2005年12月,,即系统只能对该,段期间内的报表进行处理,如日期,不在此范围内,则显示输入错误信,息。,系统日期规定由,年、月的6位,数字,字符组成,前四位代表年,后两位,代表月。,如何用等价类划分法设计测试用例,来测试程序的日期检查功能?,第一步:等价类划分,输入等价类 有效等价类 无效等价类,报表日期的,类型及长度,6位数字字符(1),有非数字字符 (4),少于6个数字字符(5),多于6个数字字符(6),年份范围,在20012005,之间(2),小于2001(7),大于2005(8),月份范围,在112之间(3),“报表日期”输入条件的等价类表,小于1(9),大于12(10),第二步:,为有效等价类设计测试用例,对表中编号为1,2,3的3个有效等价类,用一个测试用例覆盖:,测试数据 期望结果 覆盖范围,200105,等价类(1)(2)(3),输入有效,第三步:为每一个无效等价类至少设,计一个测试用例,测试数据 期望结果 覆盖范围,001,MAY,等价类(4),输入无效,20015,等价类(5),输入无效,2001005,等价类(6),输入无效,2000,05,等价类(7),输入无效,2008,05,等价类(8),输入无效,2001,00,等价类(9),输入无效,2001,13,等价类(10),输入无效,不能出现相同,的测试用例,本例的10个等价类至,少需要8个测试用例,6.4.2 边界值分析法,(1),边界值分析使该等价类的每个,边界都要作为测试条件。,(2),边界值分析不仅考虑输入条件,,还要考虑输出空间产生的测试,情况,被测试,子 域,测试内点,测试外点,软件边界与悬崖很类似,6.4.3 错误推测法(error guessing),根据,经验,来设计测试用例的方法,例如,数据测试中的:,缺省值,空白,空值,零值,软件测试的过程,被测,模块,单元,测试,设计,信息,集成,测试,被测,模块,单元,测试,被测,模块,单元,测试,测试过,的模块,确认,测试,系统,测试,软件,需求,其它系,统元素,装配好的软件,确认,的软件,可运,行的,软件,6.5软件测试的步骤,软件测试策略,单元测试,U,C,D,R,S,I,V,ST,集成测试,确认测试,系统测试,系统工程,软件需求分析,软件设计,代码编写,6.5.1 单元测试,一.,单元测试的内容,主要对模块的,五个基本特性,进行评价,模块,错误处理,模块接口,局部数,据结构,重要的,执行路径,边界条件,二.单元测试的方法,单元测试一般为编码步骤的附属部分.,(1)驱动模块(驱动程序),:,相当于主模块,(2)桩模块(测试存根、连接程序),:,代替所测模块调用的子模块,B,A,C,D,E,待测试模块,单元测试的测试环境举例:,被测模块,B,驱动模块,(模拟模块,A,),桩模块(测试存根),(模拟模块,E,),测试用例,测试结果,单元测试的测试环境举例:,实际软件,华氏到摄氏,转换模块,温度数据,实际配置,测试用例数据,结果,测试驱动软件,华氏到慑氏,转换模块,结果,测试驱动配置,单元测试的测试环境举例,温度显示模块,温度接口,模块,实际配置,测试驱动配置,温度显示模块,程序员编写的桩模块,(测试存根),温度值的测试文件,6.5.2 集成测试(组装测试),集成测试方法:,(黑盒测试),非渐增式测试(莽撞测试),渐增式测试,深度优先,广度优先,自顶向下结合,自底向上结合,混合集成测试方法,上层:自顶向下,下层:自底向上,自顶向下结合方式举例:,A,D,B,E,模块测试,结合顺序,C,F,深度优先:,A,、,B,、,E,、,C,、,D,、,F,广度优先:,A,、,B,、,C,、,D,、,E,、,F,自顶向下结合方式举例:,(,深度优先),A,测试,A,S2,S1,S3,A,加入,B,S2,B,S3,S4,A,加入,E,S2,B,S3,E,A,加入,C,C,B,S3,E,加入,D,C,B,D,E,加入,F,C,B,D,E,A,A,F,S5,自底向上结合方式举例:,A,C,B,D,F,E,E,d,1,C,d,3,F,d,4,B,d,2,E,D,d,5,F,自底向上结合方式举例:,M,c,D,1,M,a,M,b,D,2,D,3,簇1,簇2,簇3,6.6 自动测试和测试工具,6.6.1 测试工具,静态分析工具,动态测试工具,测试数据自动生成工具,集成化测试环境,其它工具类型:,施压工具和增负工具,干扰发生器和噪声发生器,分析工具,工具,Junit:Java,Dunit:Delphi,HP-QTP,本 章 作 业,写一篇有关软件测试的报告,题目自拟。,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服