软件测试方法与实践讲义-第四章课件

上传人:我*** 文档编号:137994048 上传时间:2020-07-13 格式:PPT 页数:52 大小:258.50KB
返回 下载 相关 举报
软件测试方法与实践讲义-第四章课件_第1页
第1页 / 共52页
软件测试方法与实践讲义-第四章课件_第2页
第2页 / 共52页
软件测试方法与实践讲义-第四章课件_第3页
第3页 / 共52页
软件测试方法与实践讲义-第四章课件_第4页
第4页 / 共52页
软件测试方法与实践讲义-第四章课件_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《软件测试方法与实践讲义-第四章课件》由会员分享,可在线阅读,更多相关《软件测试方法与实践讲义-第四章课件(52页珍藏版)》请在金锄头文库上搜索。

1、2020年7月13日,软件测试讲义,1,第四章 软件测试覆盖分析,2020年7月13日,第四章 软件测试覆盖分析,2,主要内容,4.1 代码覆盖分析 4.2 控制流覆盖 4.2.1 语句覆盖 4.2.2 判定覆盖 4.2.3 条件覆盖 4.2.4 条件判定组合覆盖 4.2.5 条件组合(多条件)覆盖 4.2.6 路径覆盖 4.3 数据流覆盖 4.4 其他覆盖标准,2020年7月13日,第四章 软件测试覆盖分析,3,软件测试覆盖分析概述,测试覆盖分析可以在测试计划阶段与测试执行阶段进行。在测试计划阶段,须确定用何种测试覆盖分析及相应的覆盖率。覆盖率通常表示为百分比,但是百分比的意义取决于使用的测

2、试覆盖分析方法。 测试覆盖分析的测试过程: 生成一组测试用例; 用测试用例执行测试; 收集测试结果; 进行测试覆盖分析; 如果测试结果达到既定的覆盖率,停止测试,否则重复上面第1-4步。,2020年7月13日,第四章 软件测试覆盖分析,4,4.1 代码覆盖分析,1. 代码覆盖的概念,代码覆盖是测试软件的一种度量标准,它描述程序源代码被测试了的程度。代码覆盖是一种直接观测代码而进行的测试,所以归于白盒测试。代码覆盖的测试两个主要步骤是识别满足覆盖标准的一组实体,然后选择一组覆盖该组实体的有限路径。其中主要有下面两种方法: 控制流覆盖:是选择一组实体以满足覆盖标准,主要包括语句覆盖、判定覆盖、条件

3、覆盖、多条件覆盖、条件判定组合覆盖、修正条件/判定覆盖及路径覆盖; 数据流覆盖:是选择一组满足变量定义与引用间某种关联关系实体,然后选择一组覆盖该组实体的有限路径。,2020年7月13日,第四章 软件测试覆盖分析,5,4.1 代码覆盖分析,2. 代码覆盖的测试过程,(1)由被测程序的源代码,构造程序图(数据流图或使用关联图); (2)根据程序图,生成测试用例; (3)编译被测源程序,生成可执行的代码; (4)生成的可执行代码,用测试用例输入条件驱动,以执行程序测试; (5)计算测试结果的实际覆盖率,如果达不到覆盖率,则返回第(2)步,否则结束测试; (6)对于测试结果,除了进行代码覆盖分析外,

4、还可以进行其他方面的分析,如测试通过率,失败率,可靠性等。,2020年7月13日,第四章 软件测试覆盖分析,6,4.1 代码覆盖分析,2. 代码覆盖的测试过程,生成测试用例,构造程序图,Procedure purge(var L:list) Var p,q: /any type Begin q:=first(L) While qENDL do If Aq=Ap then Delete(Aq,L) Else q:=next(q,L); P:=next(p,L) End End,编译程序,分析执行结果,可执行代码,达到覆盖率?,1,2,3,4,6,5,停,否,是,2020年7月13日,第四章 软件

5、测试覆盖分析,7,4.2 控制流覆盖,入口,s,(A1) and (B=0),a,(A=2) or (x 1),c,返回,e,b,x = x / A,F,T,d,x = x + 1,F,T,2020年7月13日,第四章 软件测试覆盖分析,8,4.2 控制流覆盖,1. 语句覆盖,语句覆盖报告每个可执行语句是否被执行,即每行源代码是否被执行了并且被测试了。语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个可执行语句都至少执行一次。 欲使每个语句都执行一次,只需执行路径L1(sabcde)即可。测试用例如下:,a: (A1) and (B=0) c: (A=2) or (x1),

6、2020年7月13日,第四章 软件测试覆盖分析,9,4.2 控制流覆盖,1. 语句覆盖,【优点】 :可以很直观地从源代码得到测试用例,无须细分每条判定表达式。 【缺点】 :由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。,2020年7月13日,第四章 软件测试覆盖分析,10,4.2 控制流覆盖,2. 判定覆盖,判定覆盖(也称分支覆盖)是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定的所有可能结果都至少执行一次(即判定的每个分支至少经过一次) 判定覆盖将每个判定的所有可能结果都至少执

7、行一次,所以,程序中的所有语句也必定都至少执行一次。因此,满足判定覆盖标准的测试用例也一定满足语句覆盖标准。,2020年7月13日,第四章 软件测试覆盖分析,11,4.2 控制流覆盖,2. 判定覆盖,欲使每个分支都执行一次,只需执行路径L3(sacde)和L4(sabce) 即可。 或者,执行路径L1(sabcde)和L2(sace).,a: (A1) and (B=0) c: (A=2) or (x1),2020年7月13日,第四章 软件测试覆盖分析,12,4.2 控制流覆盖,2. 判定覆盖,【优点】:判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每

8、个判定就可以得到测试用例。 【缺点】:往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。,2020年7月13日,第四章 软件测试覆盖分析,13,4.2 控制流覆盖,3. 条件覆盖,条件覆盖报告每个布尔型子表达式的结果是真还是假,是否都被执行和测试过了。 条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中的每个条件的所有可能结果都至少出现一次。,2020年7月13日,第四章 软件测试覆盖分析,14,4.2 控制流覆盖,3. 条件覆盖,判定a中各种条件的所有可能结果:A1,

9、A 1 ,B=0, B 0。 判定c中各种条件的所有可能结果:A=2, A 2 ,x1, x 1 。,a: (A1) and (B=0) c: (A=2) or (x1),2020年7月13日,第四章 软件测试覆盖分析,15,4.2 控制流覆盖,3. 条件覆盖,条件覆盖通常比判定覆盖强,但有时虽然每个条件的所有可能结果都出现过,但判定表达式的某些可能结果并未出现。上面的二个测试用例满足了条件覆盖标准,但判定c为“假”的结果并未出现。,2020年7月13日,第四章 软件测试覆盖分析,16,4.2 控制流覆盖,3. 条件覆盖,【优点】:增加了对条件判定情况的测试,增加了测试路径。 【缺点】:条件覆

10、盖不一定包含判定覆盖。例如,我们刚才设计的用例就没有覆盖判断M的Y分支和判断Q的N分支。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。,2020年7月13日,第四章 软件测试覆盖分析,17,4.2 控制流覆盖,4. 判定/条件覆盖,判定/条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定的所有可能结果都至少执行一次,并且,每个判定中的每个条件的所有可能结果都至少出现一次。 显然,满足判定/条件覆盖标准的测试用例一定也满足判定覆盖、条件覆盖、语句覆盖标准。,2020年7月13日,第四章 软件测试覆盖分析,18,4.2 控制流覆盖,4. 判定/条件覆盖,a

11、: (A1) and (B=0) c: (A=2) or (x1),2020年7月13日,第四章 软件测试覆盖分析,19,4.2 控制流覆盖,4. 判定/条件覆盖,【优点】 :能同时满足判定、条件两种覆盖标准。 【缺点】 :判定/条件覆盖准则的缺点是未考虑条件的组合情况。,2020年7月13日,第四章 软件测试覆盖分析,20,4.2 控制流覆盖,5. 条件组合覆盖,条件组合覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中条件结果的所有可能组合都至少出现一次 显然,满足条件组合覆盖标准的测试用例一定也满足判定覆盖、条件覆盖、判定/条件覆盖、语句覆盖标准。,2020年7月1

12、3日,第四章 软件测试覆盖分析,21,4.2 控制流覆盖,5. 条件组合覆盖,a: (A1) and (B=0) c: (A=2) or (x1),判定a中条件结果的所有可能组合: A1,B=0 ; A1,B 0; A 1,B=0 ; A 1,B 0 判定c中条件结果的所有可能组合: A=2, x1; A=2,x 1 ; A 2 ,x1; A 2 ,x 1,2020年7月13日,第四章 软件测试覆盖分析,22,4.2 控制流覆盖,5. 条件组合覆盖,a: (A1) and (B=0) c: (A=2) or (x1),2020年7月13日,第四章 软件测试覆盖分析,23,4.2 控制流覆盖,5

13、. 条件组合覆盖,条件组合覆盖是上述五种覆盖标准中最强的一种,然而,条件组合覆盖仍不能保证程序中所有可能的路径都被覆盖。本例中,满足条件组合覆盖标准的测试用例就没有经过sabce路径。,2020年7月13日,第四章 软件测试覆盖分析,24,4.2 控制流覆盖,5. 条件组合覆盖,【优点】 :条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。 【缺点】 :线性地增加了测试用例的数量。,2020年7月13日,第四章 软件测试覆盖分析,25,4.2 控制流覆盖,6. 路径覆盖,路径覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每条可能执行到的路径都至少经过一次(如果程序中包

14、含环路,则要求每条环路至少经过一次)。,2020年7月13日,第四章 软件测试覆盖分析,26,4.2 控制流覆盖,6. 路径覆盖,本例中所有可能执行的路径有: L1 ( sabcde , a为“T”且c为“T”) L2 ( sace , a为“F”且c为“F”) L3 ( sacde , a为“F”且c为“T”) L4 ( sabce , a为“T”且c为“F”),a: (A1) and (B=0) c: (A=2) or (x1),2020年7月13日,第四章 软件测试覆盖分析,27,4.2 控制流覆盖,6. 路径覆盖,路径覆盖实际上考虑了程序中各种判定结果的所有可能组合,但它未必能覆盖判定

15、中条件结果的各种可能情况。因此,它是一种比较强的覆盖标准,但不能替代条件覆盖和条件组合覆盖标准。,2020年7月13日,第四章 软件测试覆盖分析,28,4.2 控制流覆盖,6. 路径覆盖,【优点】 :这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。 【缺点】 :需要设计大量、复杂的测试用例,使得工作量呈指数级增长,不见得把所有的条件组合都覆盖。,2020年7月13日,第四章 软件测试覆盖分析,29,4.2 控制流覆盖,7. 六种控制流覆盖的比较,2020年7月13日,第四章 软件测试覆盖分析,30,4.2 控制流覆盖,7. 六种控制流覆盖的比较,语句覆盖发现错误能力最弱。判定覆盖

16、包含了语句覆盖, 但它可能会使一些条件得不到测试。条件覆盖对每一条件进行单独检查,一般情况它的检错能力较判定覆盖强,但有时达不到判定覆盖的要求。判定/条件覆盖包含了判定覆盖和条件覆盖的要求,但由于计算机系统软件实现方式的限制,实际上不一定达到条件覆盖的标准。条件组合覆盖发现错误能力较强, 凡满足其标准的测试用例,也必然满足前 4 种覆盖标准。 前 5 种覆盖标准把注意力集中在单个判定或判定的各个条件上,可能会使程序某些路径没有执行到。路径测试根据各判定表达式取值的组合,使程序沿着不同的路径执行,查错能力强。,2020年7月13日,第四章 软件测试覆盖分析,31,4.3 数据流覆盖,控制流覆盖出现的问题:当语句或分支覆盖被用作测试数据的主要依据时,经过所选的路径并不能保证所有错误都被查出。而且,当路径覆盖标准被用作测试数据的主要依据时,带有循环的程序将有无穷多条路径。一个实用路径的选择必须是依据所用路径标准,选择一个仅有有限数量的路径,发现错误的可能性很大。 数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号