网站专栏的作用,咨询行业网站开发,福州最好的网站建设服务商,如何通过网络推广产品一、覆盖率概念 覆盖率是用来度量测试完整性的一个手段#xff0c;是测试技术有效性的一个度量。分为#xff1a;白盒覆盖、灰盒覆盖和黑盒覆盖#xff1b;测试用例设计不能一味追求覆盖率#xff0c;因为测试成本随覆盖率的增加而增加。
覆盖率#xff08;至少被执行一次…
一、覆盖率概念 覆盖率是用来度量测试完整性的一个手段是测试技术有效性的一个度量。分为白盒覆盖、灰盒覆盖和黑盒覆盖测试用例设计不能一味追求覆盖率因为测试成本随覆盖率的增加而增加。
覆盖率至少被执行一次的item数/item的总数
二、白盒覆盖率*** 白盒测试时基于程序结构的逻辑驱动测试白盒覆盖中最常见的是逻辑覆盖也叫代码覆盖或结构化覆盖逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。 1.语句覆盖(Statement Coverage) 指在测试时运行被测程序后程序中被执行到的可执行语句的比率
语句覆盖率至少被执行一次的语句数量/可执行的语句总数
例
case1203 语句覆盖率 case2213 语句覆盖率
分析案例中可执行的语句总数有2条XX/A和XX1; case1走ace路线2条语句都被执行了所以语句覆盖率为2/2即100% case1走abe路线只执行了1条语句所以语句覆盖率为1/2即50%
总结case1中语句覆盖率达到了100%看似很完美但是并不能百分百的发现bug若上例中两个被测程序段逻辑有问题条件语句写成: 会发现语句覆盖率依然为100%但是发现不了逻辑运算中出现的错误即使语句覆盖率达到百分百也有缺陷发现不了所以覆盖率只是我们度量的手段。 2.判定覆盖率Decision Coverage
判定覆盖也叫分支覆盖(Branch Coverage),是指在测试时运行被测试程序后程序中所有判断语句的取真和取假分支被执行到的比率
判定覆盖率判定结果被评价的次数/判定结果的总数
例
case1203 判定覆盖率 case2101 判定覆盖率
分析案例中判断语句的取真和取假分支共有4个T1\F1\T2\F2 case1走T1-T2路线2个判断分支被执行所以判定覆盖率为2/4即50% case1走F1-F2路线2个判断分支被执行所以判定覆盖率为2/4即50%
总结case1和case2加起来刚好可以达到判定覆盖率100%但是同样地依然会有缺陷发现不了例如将源程序改为 3.条件覆盖Condition Coverage 指在测试时运行被测程序后所有判断语句中每个条件的可能取值真值和假值出现过的比率
条件覆盖率条件操作数值至少被评价一次的数量/条件操作数值的总数
分析案例中有两条判断语句每个语句有两个条件即4个条件每个条件有两个取值所以条件操作数值的总数为8个测试用例如下 总结 每个case的覆盖率为4/850%三个用例加起来刚好实现条件覆盖率100%。但是下面两条用例也可以实现100%覆盖但是却没有覆盖所有分支所以说条件覆盖也会有缺陷发现不了。 4.判定-条件覆盖Decision Condition Coverage 是指设计足够的测试用例使得判断中每个条件的所有可能取值至少执行一次同时每个判断本身的所有可能判断结果至少执行一次也即要求各个判断的所有可能的条件取值组合至少执行一次也叫分支条件覆盖实际上就是判定覆盖率和条件覆盖率的组合。 判定条件覆盖率条件操作数值或判定结果至少被评价一次的数量/条件操作数值总数判定结果总数
分析从表面上看判定条件覆盖测试了所有的条件的取值但是事实并非如此。因为往往某些条件掩盖了另一些条件对于条件表达式A1andB0来说若A1的测试结果为真则还要测试B0才能决定表达式的值而若条件表达式A1的测试结过果为假时可以立刻确定表达式的结果为假。这是往往不再测试条件表达式B0的取值了这样的话条件B就没有检查对于A2orX1来说也是同样的道理。因此词用判定-条件覆盖逻辑表达式中的错误不一定能够查出来。
总结 为了能够防止某些条件掩盖另一些条件必须将逻辑表达式分解为单个条件转换成如下图所示的单一条件的嵌套条件结构这样可以针对每一条件和判定设计测试用例防止测试中队某些条件的侧漏。 5.条件组合覆盖Multiple Condition Coverage 基本思想是设计足够的测试用例使得每个判定中条件的各种可能组合都至少出现一次。
条件组合覆盖率条件组合至少被评价一次的数量/条件组合总数
分析每个判定中条件的各种可能组合如下条件组合总数为8中。 总结上面测试用例达到了100%的条件组合覆盖但是它所走的路径只有3条没有达到100%的路径覆盖所以条件组合覆盖也不是十全十美的。 6.路径覆盖 Path Coverage 指在测试时运行被测程序后程序中所有可能的路径被执行过的比率
路径覆盖率至少被执行一次的路径数/总的路径数
分析案例中总的路径为4条分别为aceabdabcacd,下面4条例子实现了100%的路径覆盖。
case1:(2,0,3) 覆盖路径ace case2:(1,0,1) 覆盖路径abd case3:(1,0,3) 覆盖路径abc case4:(3,0,1) 覆盖路径acd
总结对于这组测试用例路径覆盖达到了100%但是很明显没有达到100%条件覆盖B!0未取到 所以说路径覆盖也不是零缺陷的进一步说明了覆盖率只是我们度量的手段。 7.其他覆盖
a.指令块覆盖Instruction Blocks Coverage,IB Coverage 是语句覆盖的一个变体其唯一的区别是计算方式的不同在这里指令块表示函数内部的一个序列语句在这一个序列语句中不存在控制语句会引起分支
指令块覆盖至少被执行一次的指令块数量/系统中指令块总数 例一次测试中在第一个控制点走了3条指令的分支在第二个控制点走了空指令分支那么其指令块覆盖式2/4即50%其语句覆盖式53/15即53.33%
b.判定路径覆盖Decision-to-Decision paths Coverage,DDP Coverage 是判定覆盖的一个变体这里的判定指的是一个序列语句其起始位置是函数入口或一个判定如If,while,switch等的开始结束位置是下一个判定的开始。具体如下图 通过计算哪些判定路径已经走过哪些没走过我们就可以得到DDP覆盖率了公式如下
DDP 覆盖至少被执行到一次的判定路径数量/系统中判定路径总数 三、灰盒覆盖率
1.接口覆盖(Interface Coverage) 接口覆盖又称入口点覆盖要求通过设计一定的用例使得系统的每个接口被测试到。
接口覆盖至少被执行一次的接口数量/系统中接口的总数
2.函数覆盖(True Coverage) 函数覆盖是针对系统或一个子系统的测试的它表示在该测试中有哪些函数被测试到了其被测试到的频率有多大这些函数在系统所有函数中占的比例有多大函数覆盖是一个比较容易自动化的技术同时也易于理解。其公式如下
函数覆盖至少被执行一次的函数数量/系统中函数的总数 四、黑盒覆盖率 在实际测试中与黑盒相关的覆盖率比较少主要是功能覆盖率Functional Coverage功能覆盖中最常见的是需求覆盖Requirement Coverage,其含义是通过设计一定的测试用例要求每个需求点都被测试到。
需求覆盖被验证到的需求数量/总的需求数量 五、面向对象的覆盖率
1.继承上下文覆盖
2.基于状态的上下文覆盖
3.基于线程的上下文覆盖 六、案例 为以下所示的程序段设计一组测试用例要求分别满足语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖并画出相应的程序流程图。 思路 首先根据程序代码画出程序流程图 然后根据程序流程图分别列出各种覆盖率的条件然后设计测试用例设计完一个用例标记下覆盖了多少条件依次往下直到覆盖了所有的条件。 用例 七、重点
1.需要掌握一个测试用例的各种覆盖率为多少? 覆盖率100%的情况下需要设计多少用例?
2.各种测试覆盖率之间的关系 如果你想学习自动化测试那么下面这套视频应该会帮到你很多 如何逼自己1个月学完自动化测试学完即就业小白也能信手拈来拿走不谢允许白嫖.... 最后我这里给你们分享一下我所积累和整理的一些文档和学习资料有需要直接领取就可以了 以上内容对于软件测试的朋友来说应该是最全面最完整的备战仓库了为了更好地整理每个模块我也参考了很多网上的优质博文和项目力求不漏掉每一个知识点很多朋友靠着这些内容进行复习拿到了BATJ等大厂的offer这个仓库也已经帮助了很多的软件测试的学习者希望也能帮助到你。