语句覆盖测试用例课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《语句覆盖测试用例课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语句 覆盖 测试 课件
- 资源描述:
-
1、第第 四四 章章白盒测试基本概念白盒测试基本概念1逻辑覆盖逻辑覆盖2基本路径测试基本路径测试3循环测试循环测试4面向对象的白盒测试面向对象的白盒测试5其他白盒测试方法简介其他白盒测试方法简介6主主要要内内容容第四章第四章 白盒测试方法白盒测试方法白盒测试的基本概念白盒测试的基本概念白盒测试:把程序看成装在白盒测试:把程序看成装在一个透明的盒子里,程序的一个透明的盒子里,程序的结构和处理过程完全可见,结构和处理过程完全可见,按照程序的内部逻辑测试程按照程序的内部逻辑测试程序,以检查程序中的每条通序,以检查程序中的每条通路是否都能按照预先要求正路是否都能按照预先要求正确工作。确工作。白盒测试针对被
2、测单元的内白盒测试针对被测单元的内部进行,它的突出特点是基部进行,它的突出特点是基于被测程序的于被测程序的源代码源代码,而不,而不是基于软件的规格说明书。是基于软件的规格说明书。白盒测试方法的分类白盒测试方法的分类静态测试静态测试:着重在于纠正软件系统在描述、表示和规:着重在于纠正软件系统在描述、表示和规格上的错误,是进一步测试的格上的错误,是进一步测试的前提,方法包括:前提,方法包括: 桌面检查(桌面检查(Desk checking) 代码评审(代码评审(Code reading/review) 走查走查(Walkthroughs)动态测试动态测试:根据程序的控制结构设计:根据程序的控制结构
3、设计测试用例,要求:测试用例,要求: 保证一个模块中的所有独立路径至少执行一次保证一个模块中的所有独立路径至少执行一次 对所有逻辑值均需测试对所有逻辑值均需测试True和和False 在上下边界及可操作范围内运行所有循环在上下边界及可操作范围内运行所有循环 检查内部数据结构以确保其有效性检查内部数据结构以确保其有效性白盒测试的常用方法白盒测试的常用方法逻辑覆盖逻辑覆盖基本路基本路径测试径测试 程序结程序结构分析构分析 插桩插桩WHILE 循环结构 顺序结构 UNTIL循环结构 IF选择结构 CASE 多分支结构选择结构 控制流图的图形符号控制流图的图形符号 R3 R2 R1 区域 (a)程序流
4、程图 ) 7 1 2 3 4 5 6 8 1(b)控制流图 1 2 6 4 7 8 9 10 11 边 结点 R4 白盒测试基本概念白盒测试基本概念1逻辑覆盖逻辑覆盖2基本路径测试基本路径测试3循环测试循环测试4面向对象的白盒测试面向对象的白盒测试5其他白盒测试方法简介其他白盒测试方法简介6主主要要内内容容第四章第四章 白盒测试方法白盒测试方法逻辑覆盖以程序的内部逻辑结构逻辑覆盖以程序的内部逻辑结构为基础,主要分以下几种方式:为基础,主要分以下几种方式:逻逻 辑辑 覆覆 盖盖语句覆盖语句覆盖判定覆盖判定覆盖条件覆盖条件覆盖判定条件覆盖判定条件覆盖条件组合覆盖条件组合覆盖路径覆盖路径覆盖1 语语
5、 句句 覆覆 盖盖Statement Coverage设计足够多的测试用例,设计足够多的测试用例,使得程序中的每个语句至使得程序中的每个语句至少执行一次。少执行一次。1 语语 句句 覆覆 盖盖入口入口A 1AND B=0TA=2OR X 1TX = X / AX = X + 1返回返回FF用例用例ABX1204语句覆盖对程语句覆盖对程序的逻辑覆盖很序的逻辑覆盖很少,只能测试部少,只能测试部分语句,是很弱分语句,是很弱的逻辑判断标准。的逻辑判断标准。语语 句句 覆覆 盖盖测试用例测试用例:a = 10, b = 5int foo(int a, int b)return a / b; 尽管语句覆盖
6、率达到了所谓的尽管语句覆盖率达到了所谓的100%,但是却没有发现最简单的但是却没有发现最简单的Bug,如:,如:b=0时会出现一个除零异常。时会出现一个除零异常。2 判判 定定 覆覆 盖盖Dicision Coverage 不仅每个语句都必须至少不仅每个语句都必须至少执行一次,而且每个判定表达式执行一次,而且每个判定表达式的每种可能的结果都应该至少执的每种可能的结果都应该至少执行一次,即每个判定的行一次,即每个判定的“真真”分分支支和和“假假”分支至少都执行一分支至少都执行一次次。判定。判定覆盖又称分支覆盖。覆盖又称分支覆盖。2 判定覆盖判定覆盖(分支覆盖分支覆盖)用例用例ABX12042 1
7、 1 1判定覆盖比语判定覆盖比语句覆盖强,但是句覆盖强,但是对程序逻辑的覆对程序逻辑的覆盖程度仍然不高。盖程度仍然不高。入口入口A 1AND B=0TA=2OR X 1TX = X / AX = X + 1返回返回FF123 条条 件件 覆覆 盖盖Condition Coverage 不仅每个语句都必须至少执不仅每个语句都必须至少执行一次,而且每个判定表达式中行一次,而且每个判定表达式中的每个条件都取到各种可能的结的每个条件都取到各种可能的结果,即每个条件的果,即每个条件的“真真”条件条件和和“假假”条件条件至少至少都执行一都执行一次。次。3 条条 件件 覆覆 盖盖用例用例ABX12042 1
8、 1 1A1, B!=0, A=2, X=1A1条件覆盖条件覆盖1:用例用例ABX12112 1 0 3入口入口A 1AND B=0TA=2OR X 1TX = X / AX = X + 1返回返回FF12程序中共有程序中共有4个条件个条件8个结果个结果A1, B=0,A=2, X1 (全真全真)A=1, B!=0, A!=2, X=1(全假全假)条件覆盖条件覆盖2:请思考:这个条请思考:这个条件覆盖的测试用件覆盖的测试用例是否完全?例是否完全?真假真假混搭混搭 条件覆盖通常比判定覆盖强,因为它使判条件覆盖通常比判定覆盖强,因为它使判定表达式中每个条件都取到了两个不同的结果,定表达式中每个条件
9、都取到了两个不同的结果,而判定覆盖只关心整个判断表达式的值。在上而判定覆盖只关心整个判断表达式的值。在上页的测试用例中,页的测试用例中,条件覆盖条件覆盖1不但覆盖了所有判不但覆盖了所有判定表达式中各条件的所有可能结果,而且覆盖定表达式中各条件的所有可能结果,而且覆盖了所有判定的真、假分支,覆盖性很强。但并了所有判定的真、假分支,覆盖性很强。但并不是所有满足条件覆盖的要求的测试数据都能不是所有满足条件覆盖的要求的测试数据都能满足判定覆盖的要求,如满足判定覆盖的要求,如条件覆盖条件覆盖2.条件覆盖特点条件覆盖特点判定覆盖判定覆盖 vs 条件覆盖条件覆盖判定覆盖:判定覆盖: (1)a = 5, b
10、= 5 覆盖了覆盖了分支分支一一 (2)a = 15, b = 15 覆盖了覆盖了分支二分支二int foo(int a, int b)if (a 10 | b 1AND B=0TA=2OR X 1TX = X / AX = X + 1返回返回FF125 条条 件件 组组 合合 覆覆 盖盖Condition Combination Coverage 设计设计足够多的测试用例,足够多的测试用例,使得每个使得每个判定表达式中条件判定表达式中条件的各种可能组合都至少出现的各种可能组合都至少出现一次。一次。5 条件组合覆盖条件组合覆盖a点的所有条件组合:点的所有条件组合:(1)A1, B0 ; (2)
11、A1, B0(3)A 1, B0 ; (4)A 1, B0b点的所有条件组合:点的所有条件组合:(5)A2, x1 ; (6)A2, x1(7)A 2, x1 ; (8)A 2, x1入口入口A 1AND B=0TA=2OR X 1TX = X / AX = X + 1返回返回FFab一组测试用例一组测试用例:满足满足(1)和和(5): A2, B0, x4满足满足(2)和和(6): A2, B1, x1满足满足(3)和和(7): A1, B0, x2满足满足(4)和和(8): A1, B1, x1第二组测试用例第二组测试用例:满足满足(1)和和(8): A3, B0, x1满足满足(2)和和
12、(7): A3, B1, x2满足满足(3)和和(6): A无取值无取值, B0, x1满足满足(4)和和(5): A无取值无取值, B1, x2满足条件组合覆盖标准的满足条件组合覆盖标准的测试数据,也一定满足判定测试数据,也一定满足判定覆盖、条件覆盖和判定覆盖、条件覆盖和判定/条件条件覆盖标准,是这几种覆盖标覆盖标准,是这几种覆盖标准中最强的。不过它不一定准中最强的。不过它不一定使程序中每条路径都执行到。使程序中每条路径都执行到。条件覆盖条件覆盖 vs 条件组合覆盖条件组合覆盖条件覆盖条件覆盖 (3个条件个条件6个结果个结果): (1) a = 5, b = 7, c = 6(全真)(全真)
13、(2) a = 7, b = 9, c = 4(全假)(全假)int foo(int a, int b)if (a 6 | b 5) ) /判定判定h return 1; 条件组合覆盖条件组合覆盖:k条件条件h条件条件: (1) c 5; (2) c = 5测试用例测试用例(1) a 6, b 8(2) a = 8(3) a = 6, b =6, b = 8(1) a = 7, b = 7, c = 6(2) a = 5, b = 7, c = 6(3) a = 5, b = 7, c = 6(4) a = 5, b = 7, c = 61. 语句覆盖语句覆盖 a = 5, b = 5, nR
14、eturn = 11语句覆盖率语句覆盖率100%2. 判定覆盖判定覆盖 a = 5, b = 5, nReturn = 11 a = 15, b = 15 nReturn = 0 判定覆盖率判定覆盖率100%3. 条件覆盖条件覆盖 a = 5, b = 15 nReturn = 1 a = 15, b = 5 nReturn = 10条件覆盖率条件覆盖率100% 上面三种覆盖率都达到了上面三种覆盖率都达到了100%,很好!但是,仔细分析可,很好!但是,仔细分析可以看出,以看出,nReturn的结果一共有四种可能的返回值:的结果一共有四种可能的返回值:0、1、 10、11, 而上面每种测试方式只
15、覆盖了部分返回值,可见而上面每种测试方式只覆盖了部分返回值,可见以上任一覆盖方式虽然覆盖率很高,但是并没有测试完全。以上任一覆盖方式虽然覆盖率很高,但是并没有测试完全。 int foo(int a, int b)int nReturn = 0;if (a 10)nReturn += 1; / 分支一分支一if (b 10) nReturn += 10; / 分支二分支二return nReturn;6 路路 径径 覆覆 盖盖Path Coverage 设计设计足够多的测试用足够多的测试用例,使程序的每一条可能例,使程序的每一条可能路径都至少执行一次。路径都至少执行一次。路路 径径 覆覆 盖盖路
16、径路径覆盖将所有可能的返回值都测试到覆盖将所有可能的返回值都测试到了,这正了,这正是是它被很多人认为是它被很多人认为是“最强的覆盖最强的覆盖”的的原因。原因。 int foo(int a, int b)int nReturn = 0;if (a 10)nReturn += 1; / 分支一分支一if (b 1AND B=0TA=2OR X 1TX = X / AX = X + 1返回返回FF1423六种形式的六种形式的逻辑覆盖逻辑覆盖 各种测试方法都不能保证程序的正确性,各种测试方法都不能保证程序的正确性,但测试的目的但测试的目的并不是为了保证并不是为了保证其其正确,而是正确,而是为了尽可能为
展开阅读全文