软件测试工程ppt课件.ppt
《软件测试工程ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件测试工程ppt课件.ppt(192页珍藏版)》请在三一办公上搜索。
1、第五章 软件测试工程,概述 软件开发过程必须伴有质量保证活动。软件测试是软件质量保证的关键元素,代表了规约、设计和编码的最终检查。,软件产品最大的成本是检测软 件错误、修正软件错误的成本。在整个软件开发中,测试工作量 一般占30%40%,甚至50%。在人命关天的软件(如飞机控制、核反应堆等)测试所花费的时间往往是其它软件工程活动时间之和的三到五倍,软件测试是为了发现错误而执行程序的过程,或者说,软件测试是根据软件的规格说明(例如软件的功能、性能、运行环境等要求)以及程序内部结构而设计一批测试用例,并利用这些测试用例去运行程序,以发现软件错误的过程。,测试用例是为了测试软件而设计的一组数据,它应
2、该包括输入的数据和预期输出的结果两部分。测试用例=输入数据+预期结果,软件测试背景,软件是人编的所以不完美实例:Intel的pentium处理器1994年浮点除法缺陷2000年8月28日,1.13MHZ处理器一个可能导致运行程序被挂起的执行指令问题1999年12月3日,美国航天局火星极地登陆飞船失踪1991年爱国者导弹防御系统系统时钟错误积累造成跟踪系统失去精确度千年虫:世界各地解决2000年错误超过数亿美元,质量管理领域权威人物将质量定义为“决定产品性能和满意程度的特征”,测试注重于产品的满意度。测试应针对这样一种情况:软件产品在一些特定的范围内不能满足客户的合理要求。通过测试过程可以评定质
3、量风险(可能的错误),了解被测试系统中存在的错误模式(观察到的错误症状)。,软件测试是一个查找错误的过程,所以软件测试只能证明错误的存在,而不是证明程序无错,不能保证经过测试的程序一定没有错误。软件测试仅仅是一个手段,根本的目的是为了纠错,即纠正软件中的错误,从而提高软件的质量。测试不可能发现所有错误,只能在有限的时间和经济条件下,尽可能地发现错误。,质量控制技术,质量控制活动分类,开发方法学,配置管理,验证技术,评 审,正确性验证,性能调试,组件测试,集成测试,系统测试,原子事务,模块冗余性,检 错,质量控制,避免错误,容 错,调 试,测 试,测试的目的与地位 在软件测试技巧中认为:1.测试
4、是为了寻找错误而运行程序的过程。2.一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试。3.一个成功的测试是揭示了迄今为止尚未发现的错误的测试。,指出:“程序测试能证明错误的存在,但不能证明错误不存在。”测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。,把证明程序无错当作测试目的不仅是不正确的,完全做不到的,而且对做好测试没有任何益处,甚至是十分有害的。软件测试要设法使软件发生故障,暴露软件错误。测试的“成功”与“失败”:能够发现错误的测试是成功的测试,否则是失败的测试。,“测试的目的是说明程序正确地执行它应有的功能”这种说法正确吗?例:程序Triangle,输入
5、三个整数,表示一个三角形的三个边长,该程序产生一个结果,指出该三角形是等边三角形、等腰三角形还是不等边三角形。为说明其能正确执行它的功能,可使用“测试用例”(3,4,5),(5,5,6),(6,6,6),程序都能给出正确结果,是否就可认为程序是正确的?(两边之和必须大于第三边),难以说清的软件缺陷,古谚:“一片树叶飘落在森林中没有人听见,谁能说它发出了声音?”,由于不能报告没有看见的问题,因此,没有看见就不能说存在软件缺陷。,如果软件中的问题没有人发现,那么它算不算软件缺陷?”,只有看到了,才能断言软件缺陷,尚未发现的软件缺陷只能说是未知软件缺陷。,眼见为实,测试原则(1)所有的测试都应追溯到
6、用户需求最严重的错误(从用户角度)是那些导致软件无法满足需求的错误。程序中的问题根源可能出现在开发前期的各阶段,纠正错误也必须追溯到前期工作。,测试与开发前期工作的关系,决定软件与系统的配合关系,需求分析,概要设计,详细设计,编 码,单元测试,集成测试,确认测试,系统测试,开发前期出现错误的扩展,计划,需求分析,设计,编码,测试,A,A,B,软件生存期各阶段间需保持的正确性,用户要求,用户:我要什么?,运行结果,计算机:程序运行得到的结果,源程序,程序员:我要让计算机什么做?,设计说明书,设计员:我要让软件做什么?,需求说明书,分析员:我可以提供什么?,1,2,3,4,5,理解正确性表达正确性
7、,理解正确性设计正确性表达正确性,理解正确性编码正确性,运行正确性输入正确性,相符吗?,测试原则(2)应该尽早制定测试计划。概要设计时应完成测试计划,详细的测试用例定义可在设计模型确定后开始,所有测试可在任何代码被产生之前进行计划和设计。,测试原则(3)应该由第三方进行测试工作。一个软件项目的开发人员不应该同时是该软件的测试人员,基于心理因素,人们往往不愿意否定自己的工作。,测试原则(4)穷举测试是不可能的。测试的最高目标是指发现错误的可能性最高的测试,所以,测试的关键技术是设计一组高产的测试用例,好的测试方案是尽可能发现至今为止仍未发现的错误。从某种意义上说,测试是否成功,取决测试用例的选择
8、。,测试原则(5)充分注意到错误的群集现象 经验表明,测试发现的错误中有80%的错误很可能是由20%的程序模块造成的,这是一种错误群集性现象。也就是说,在程序段中,发现错误数目多的地方,则残存错误的数目也比较多,这一现象已为许多程序测试实践所证明。,测试原则(6)测试应该从“小规模”到“大规模”通常,最初的测试重点往往是放在单个的程序模块中,然后,进一步的测试重点放在集成的模块族,最后是对整个系统进行测试。随着测试的逐步深入展开,要集中测试容易出错的地方。,软件测试流程,软件配置,测试,测试配置,测试工具,结果分析,排错,可靠性 分析,测试结果,错误,预期结果,出错率,改正的软件,预测的可靠性
9、,需求规格说明书软件设计说明书 被测源程序,测试计划 测试用例(测试数据)测试驱动程序,软件配置:需求规格说明、设计说明书、源程序等。软件配置中还应包含测试配置。测试工具:为软件测试提供的某种服务程序。评价:测试结果与期望结果比较,如果有差异则往往程序有错,需要改正。可靠性预测有3种情况可以考虑:A.如果测试发现严重错误,则软件的质量和可靠性一定不高;B.如果测试结果是软件功能完成正常,发现的问题不是严重错误,也容易修改,则可能:(1)软件质量和可靠性可以接受;(2)所进行的测试还不足以发现严重错误,错误被潜伏下来。C.测试没有发现任何错误,则极有可能是测试配置选择不当(测试用例没有选好),错
10、误被深深地潜伏下来,这是极危险。,软件测试对象,软件测试的对象应包括需求分析与设计以及编码等所获得一切的文档和程序。,软件测试方法,软件测试方法一般可以分成静态测试和动态测试等。静态测试实际上是确认在给定的外部环境中软件的逻辑正确性,它应该包括需求规格说明和程序等的确认。动态测试也称为机器测试,动态测试主要是通过动态分析以及程序测试来检查程序的执行状态,以确认程序的正确性。,测试的方法与技术,软件测试的策略和方法,静态测试方法,动态测试方法,人工测试方法,计算机辅助静态分析方法,白盒测试方法,黑盒测试方法,静态和动态测试,汽车的检查过程:踩油门看车漆打开前盖检查发动汽车听听发动机声音上路行使,
11、静态测试,动态测试,静态测试:基本特征是对软件进行 分析、检查和审阅,不实 际运行被测试的软件。静态测试约可找出3070%的逻辑设计错误.对需求规格说明书、软件设计说明书、源程序做检查和审阅,包括:是否符合标准和规范;通过结构分析、流图分析、符号执行指出软件缺陷;,静态测试方法(1)人工测试方法。人工测试就是通过人工阅读分析以及评审软件的文档、程序资料等等,以发现程序中的错误,尤其是一些设计上的逻辑错误在机器上不易发现,需要人工复查。根据统计,好的人工评审,可以发现30%到70%的编码或逻辑设计错误。(2)计算机辅助静态分析。为了提高测试的效率,人们可以设计一些分析工具对被测试的程序进行静态分
12、析,从中提取一些信息。例如,检查程序中的局部变量和全局变量、参数的匹配、判断与循环的嵌套匹配、潜在的死循环、不执行的代码、过程调用层次等等。(3)程序正确性说明。程序正确性证明是试图找到某种方法,确切地证明程序是没有错误的。所谓证明,就是确信一个断言真实性的论证。这种证明可以形式化的或非形式化。,动态测试:通过运行软件来检验软件的动态行为和运行结果的正确性。动态测试的两个基本要素:被测试程序 测试数据(测试用例),动态测试方法(1)选取定义域有效值,或定义域 外无效值.(2)对已选取值决定预期的结果(3)用选取值执行程序(4)执行结果 与(2)结果相比,不吻和则程序有错.,动态黑盒测试 闭着眼
13、睛测试软件,软件,输入,不深入代码细节的测试方法称为动态黑盒测试。软件测试员充当客户来使用它。,输出,动态白盒测试 带上X光眼镜测试软件,?,250*(1+0.015)*(1+0.015)360-1)/0.015,250*(1+0.015)*(1+0.015)360-1)/0.015,假如知道一个盒子包含一台计算机,而另一个盒子是人用纸笔计算,就会选择不同的测试用例,了解软件的运作方式会影响测试手段,穷举测试例:输入 三条边长 黑盒测试可采用的测试用例数(设字长16位)执行时间:设测试一次需1ms 共需一万年.,=2 X2 X2 3X10,16,16,16,14,穷举测试 白盒测试例:含4个分
14、支,循环次数20,从A到B的可能路径执行时间:设测试一次需2ms 穷举测试需5亿年.,=5+5+.+5+5 10,20,1,2,19,14,A,B,第一次为5,第二次为5*5,不论黑盒还是白盒测试都不能进行穷尽测试,所以软件测试不可能发现程序中存在的所有错误,因此需精心设计测试方案,力争尽可能少的次数,测出尽可能多的错误.,两种类型的测试黑盒测试 又称:功能测试 数据驱动测试 基于规格说明书的测试,白盒测试 又称:开盒测试 结构测试 玻璃盒测试 基于覆盖的测试.根据被测程序的逻辑结构设计测试用例;力求提高测试覆盖率;,黑盒测试与白盒测试比较 黑盒测试是从用户观点,按规格说明书要求的输入数据与输
15、出数据的对应关系设计测试用例,是根据程序外部特征进行测试。白盒测试是根据程序内部逻辑结构进行测试。,黑盒测试与白盒测试优缺点比较,黑盒测试 白盒测试,优点,缺点,性质,适用于各阶段测试从产品功能角度测试容易入手生成测试数 据,可构成测试数据使特定程 序部分得到测试有一定的充分性度量手段较多工具支持,某些代码得不到测试如果规格说明有误,则无法发现不易进行充分性测试,不易生成测试数据(通常)无法对未实现规格说明的 部分进行测试工作量大,通常只用于单 元测试,有应用局限,是一种确认技术,回答:“我们在构造一个正确 的系统吗?”,是一种验证技术,回答:“我们在正确地构造一个系 统吗?”,黑盒测试与白盒
16、测试能发现的错误,C,B,A,D,-只能用黑盒测试发现的错误,A,-只能用白盒测试发现的错误,-两种方法都能发现的错误,-两种方法都不能发现的错误,B,C,D,测试用例设计 选择测试用例是软件测试员最重要 的一项工作。测试用例的属性:属性 描述name 测试用例的名称 location 可执行的完全路径名 input 输入数据或命令oracle 与测试输入相比较的期待测试结果log 测试生产的输出,程序测试举例例:程序 Triangle,输入三个整 数,表示一个三角形的三个边 长,该程序产生一个结果,指 出该三角形是等边三角形、等 腰三角形还是不等边三角形。,判断三角型的测试用例设计:输入数据
17、 预期结果(1)6;6;6 等边(2)8;8;4 等腰(3)4;5;6 一般 还应输入非法数据:0;7;9-7;3;5 a;2;7 等,白盒测试的测试用例设计 逻辑覆盖法(1)语句覆盖(2)判定覆盖(3)条件覆盖(4)判定/条件覆盖(5)条件组合覆盖(6)路径覆盖(7)点覆盖(8)边覆盖,例:PROCEDURE SAMPAL(A,B:REAL;VAR X:REAL);BEGIN IF(A1)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,
18、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=4则覆盖ace,可以执行程序中的每一条语句,即达到了语句覆盖;语句覆盖是最弱的逻辑覆盖,(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,
19、B=1,X=1 可覆盖b、e分支 两组测试用例可覆盖所有判定的真假分支。语句覆盖仍是弱的逻辑覆盖。,(3)条件覆盖 使每个判定的每个条件的可能取值至少执行一次,第一判定表达式:设条件 A1 取真 记为 T1 假 T1 条件 B=1 取真 记为 T2 假 T2第二判定表达式:设条件 A=2 取真 记为 T3 假 T3 条件 X1 取真 记为 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,满足条件:T1,T1,T2,T2 T3,T3 T4,T4,测试用例 通过 满足的 覆盖A B X 路径 条件
20、分支1 0 3 abe T1,T2,T3,T4 b,e2 1 1 abe T1,T2,T3,T4 b,e 两个测试用例覆盖了四个条件八种可能取值。未覆盖c、d分支,不满足判定覆盖的要求.条件覆盖不一定包含判定覆盖判定覆盖也不一定包含条件覆盖,(4)判定/条件覆盖 选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.,判定/条件 覆盖,开始,(A1)AND(B=0),(A=2)OR(X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,满足条件:T1,T1,T2,T2 T3,T3 T4,T4,测试用例 通过 满足
21、的 覆盖A B X 路径 条件 分支2 0 4 ace T1,T2,T3,T4 c,e2 1 1 abd T1,T2,T3,T4 b,d 能同时满足判定、条件两种覆盖标准取值。,测试用例 通过 满足的 覆盖A B X 路径 条件 分支2 0 3 ace T1,T2,T3,T4 c,e2 1 1 abe T1,T2,T3,T4 b,e1 0 3 abe T1,T2,T3,T4 b,e1 1 1 abd T1,T2,T3,T4 b,d,(5)条件组合覆盖 所有可能的条件取值组合至少执行一次 A1,B=0 A1,B0 A1,B=0 A1,B0 A=2,X1 A=2,X1 A2,X1 A2,X1,测试
22、用例 通过 满足的 覆盖ABX 路径 条件 分支204 ace T1,T2,T3,T4 c,e211 abe T1,T2,T3,T4 b,e102 abd T1,T2,T3,T4 b,d111 abd T1,T2,T3,T4 b,d 它是这几种覆盖标准中最强的,(6)路径覆盖 覆盖每一个可能的路径测试用例 通过 满足的 覆盖A B X 路径 条件 分支1 1 1 abd T1,T2,T3,T4 b,d1 1 2 abe T1,T2,T3,T4 b,e3 0 1 acd T1,T2,T3,T4 c,d2 0 4 ace T1,T2,T3,T4 c,e,循环测试,(1)简单循环测试假设n是允许通过
23、循环的最大次数,应该进行下列的测试:跳过整个循环;只执行循环一次;执行循环两次;执行循环m次,其中,mn-1;执行循环n-1,n,n+1次。,(2)嵌套循环测试如果把简单循环的方法直接用于嵌套循环,可能的测试次数会随着嵌套循环的层数的增加按几何级数增加,导致不现实的测试数目,可以进行下列的测试:从最内层循环开始测试,把其他循环都设置为最小值;对最内层循环使用简单测试方法,使外层循环的迭代参数取最小值(例如,循环计算器等),并且,为越界或非法值增加一些额外的测试;由内向外,对下一个循环进行测试,保持它的所有外层循环为最小值,其他的嵌套循环取“典型”值。如此继续进行,直到测试完所有循环。,(3)串
24、接循环测试如果串接循环的各个循环都彼此独立,则可以使用简单循环测试的方法来进行。但是,如果在两个串接循环中,第一个循环的循环计算器的值是第二个循环的初始值,则这两个循环并不是独立的。这时,建议使用嵌套循环测试方法来进行。,基本路径测试法 通过分析由控制构造的环路的复杂性,导出基本路径集合,从而设计测试用例,保证这些路径至少通过一次。基本路径测试步骤:导出程序流程图的拓扑结构-流图(程序图)计算流图G的环路复杂度V(G)确定只包含独立路径的基本路径集 设计测试用例,导出程序流程图的拓扑结构-流图,1,2,3,6,4,5,7,10,11,a,节点,边,R4,区域,1,2,3,4,5,8,7,6,9
25、,10,11,程序流程图,8,9,R1,R2,R3,计算流图G的环路复杂度V(G)V(G)=区域个数=4 V(G)=边的条数-节点个数+2=4 V(G)=判定节点个数+1=4,确定只包含独立路径的基本路径集path1:1-11path2:1-2-3-4-5-10-1-11path3:1-2-3-6-8-9-10-1-11path4:1-2-3-6-7-9-10-1-11 一条新路径必须包含一条新边。这4条路径组成了一个基本路径集。4(环路复杂度V(G)是构成这个基本路径集的独立路径数的上界,也是设计测试用例的数目。设计测试用例,保证基本路径集中每条路径的执行。,黑盒测试的测试用例设计等价类划分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 工程 ppt 课件
链接地址:https://www.31ppt.com/p-6434307.html