条件覆盖,路径覆盖,语句覆盖,分支覆盖

转自http://hi.baidu.com/%D2%D7%B1%D8%BA%C6/blog/item/f016729f4fbeaebbc9eaf4df.html

语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每一个语句至少执行一次,其覆盖标准无法发现判定中逻辑运算的错误;判定覆盖是指选择足够的测试用例,使得运行这些测试用例时,每个判定的所有可能结果至少出现一次,但若程序中的判定是有几个条件联合构成时,它未必能发现每个条件的错误; 条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支;判定/条件覆盖是使判定中每个条件的所有可能结果至少出现一次,并且每个判定本身的所有可能结果也至少出现一次;条件组合覆盖是使每个判定中条件结果的所有可能组合至少出现一次,因此判定本身的所有可能解说也至少出现一次,同时也是每个条件的所有可能结果至少出现一次;路径覆盖是每条可能执行到的路径至少执行一次;其中语句覆盖是一种最弱的覆盖,判定覆盖和条件覆盖比语句覆盖强,满足判定/条件覆盖标准的测试用例一定也满足判定覆盖、条件覆盖和语句覆盖,条件组合覆盖是除路径覆盖外最强的,路径覆盖也是一种比较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。

举个例子吧 
if A and B then Action1 
if C or D then Action2

语句覆盖最弱,只需要让程序中的语句都执行一遍即可 。上例中只需设计测试用例使得A=true B=true C=true 即可。

分支覆盖又称判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。上例需要设计测试用例使其分别满足下列条件即可(1)A=true,B=true,C=true,D=false(2)A=true,B=false,C=false,D=false。

条件覆盖:要使得每个判断中的每个条件的可能取值至少满足一次。上例中第一个判断应考虑到A=true,A=false,B=true,B=false第二个判断应考虑到C=true,C=false,D=true,D=false,所以上例中可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false。

路径覆盖:要求覆盖程序中所有可能的路径。所以可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false(3)A=true,B=true,C=false,D=false(4)A=false,B=false,C=true,D=true。

不论那种覆盖方法,都不能保证程序的正确性。 
一般测试书中讲白盒测试的逻辑覆盖部分时都会对这几种覆盖作比较,而且都给出了例子。

原文地址:https://www.cnblogs.com/qiumingcheng/p/11437937.html

时间: 2024-10-17 04:56:22

条件覆盖,路径覆盖,语句覆盖,分支覆盖的相关文章

软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别

举个例子吧     if   A   and   B   then   Action1     if   C   or   D   then   Action2         语句覆盖最弱,只需要让程序中的语句都执行一遍即可   .上例中只需设计测试用例使得A=true   B=true   C=true   即可.         分支覆盖又称判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足.上例需要设计测试用例使其分别满足下列条件即可(1)A=true,

白盒测试 语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖(转)

转自:http://wenda.tianya.cn/wenda/thread?tid=758a1e447e62b7df&hl=ja 白盒测试作为测试人员常用的一种测试方法,越来越受到测试工程师的重视.白盒测试并不是简单的按照代码设计用例,而是需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试.因为对于不同复杂度的代码逻辑,可以衍生出许多种执行路径,只有适当的测试方法,才能帮助我们从代码的迷雾森林中找到正确的方向.本文介绍六种白盒子测试方法:语句覆盖.判定覆盖.条件覆盖.判定条件覆

按照所给的程序流程图,分别写出语句覆盖、分支覆盖的测试用例,以及它所覆盖的路径,根据程序流程图,写出代码,用JUnit生成单元测试,并利用前面设计的测试用例进行测试。

语句覆盖:路径:abc ,测试用例:x=3,y=2 分支覆盖:路径:aeg ,测试用例:x=4,y=-1 /** * 2016-04-09 * @author 吴思婷 * DoWork类用来根据程序流程图,写出代码(定义一个类和方法来实现) */ public class DoWork { public void doWork(int x,int y){ int k=0,j=0; if((x<4 || y>0)&&(y>1)){ y=y+1; } else { if(x&

最新版dlx模板(精确覆盖+重复覆盖)

以前的代码太挫了,重新整理dlx,学习HH把精确覆盖,重复覆盖整合在一起. 代码: struct DLX{ const static int maxn=20010; #define FF(i,A,s) for(int i = A[s];i != s;i = A[i]) int L[maxn],R[maxn],U[maxn],D[maxn]; int size,col[maxn],row[maxn],s[maxn],H[maxn]; bool vis[70]; int ans[maxn],cnt;

多线段覆盖 求覆盖区间的总和

/* 本算法的缺点 在于开的空间太大 分三类情况 线段  (-10,-1)在负区间 (-10,10)双区间 (1,10)正区间 一下给出正区间的代码,已考虑小数 思路是 绝对正区间,覆盖到数轴 sz[]数组上    小数部分 用sum1 累计 */ //#include "header.h" //AnycodeX includes the header.h by default, needn't cancle the notation. #include <bits/stdc++

HDU 3957 Street Fighter(搜索、DLX、重复覆盖+精确覆盖)

很久以前就看到的一个经典题,一直没做,今天拿来练手.街霸 给n<=25个角色,每个角色有 1 or 2 个版本(可以理解为普通版以及爆发版),每个角色版本可以KO掉若干人. 问最少选多少个角色(每个角色只能选一次),使得可以KO掉其他所有人(包括所有版本). 典型的DLX.前∑mode[i]列表示被KO的人版本,重复覆盖.后n列表示选了的人,精确覆盖. 即,在精确覆盖满足的前提下,完成重复覆盖,且使所选行最少. 据说这题可以转化成只用一种覆盖,或者是dfs+剪枝.这里就先这样吧. 加了好多注释,

索引覆盖与覆盖索引的深入探究

[1]索引覆盖 [1.1]索引覆盖的概念 在我的理解中,什么是索引覆盖?就是说,你的所有查询条件中,每个条件CBO都愿意去扫描索引来查询数据(无论是单列索引还是复合索引均可),然后根据索引扫描/查找的结果可以获取到我们要的结果集. 然后最后非聚集索引会根据不同where条件走的索引获取到叶子节点数据(也就是聚集索引键值),这个时候就获取到了 聚集索引值+本身索引列的值. 最后再拿不同where条件获取到的聚集索引值做等值比较匹配,均相等的就是我们想要的数据.这个也避免了回表去从实际存储数据的数据

浅谈代码覆盖

在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%.于是乎,测试人员费尽心思设计案例覆盖代码.用代码覆盖率来衡量,有利也有有弊.本文我们就代码覆盖率展开讨论,也欢迎同学们踊跃评论. 首先,让我们先来了解一下所谓的"代码覆盖率".我找来了所谓的定义: 代码覆盖率 = 代码的覆盖程度,一种度量方式. 上面简短精悍的文字非常准确的描述了代码覆盖率的含义.而代码覆盖程度的度量方式是有很多种的,这里介绍一

白盒测试之逻辑覆盖法

白盒测试之逻辑覆盖法 白盒测试又叫逻辑驱动测试或结构测试. 与黑盒测试区别:关注代码内部结构 白盒测试的前提:已知代码内部逻辑 测试方法:逻辑覆盖法 逻辑覆盖法包括六种,从弱到强依次是:语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖,路径覆盖. 逻辑覆盖法 语句覆盖 将要测试的代码块中的每个语句都至少执行一遍.不关心语句的执行结果,只要执行了某个语句,就说该语句被覆盖了. 判定覆盖 判定可以看做是一个if语句,在程序流程图中用一个菱形表示,这个if语句只有两种结果:真.假.所以判定覆