-
【git】强制覆盖本地代码(与git远程仓库保持一致)
2018-04-27 23:53:57git强制覆盖: git fetch --all git reset --hard origin/master git pullgit强制覆盖本地命令(单条执行): git fetch --all &&git reset --hard origin/master &&git pull...git强制覆盖:git fetch --allgit reset --hard origin/mastergit pullgit强制覆盖本地命令(单条执行):git fetch --all && git reset --hard origin/master && git pull第一个是:拉取所有更新,不同步;第二个是:本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件);第三个是:再更新一次(其实也可以不用,第二步命令做过了其实) -
语句覆盖、条件覆盖(分支覆盖)、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖 的区别
2018-11-07 10:11:35更新时间: 2019.10.22 13:06 1语句覆盖 每个可执行语句都走一遍即可,即测试用例要覆盖所有的...2判定覆盖(分支覆盖) 针对判断语句,在设定案例的时候,要设定True和False的两种案例;与语句覆盖不同的是增加...文章转自:https://blog.csdn.net/virus2014/article/details/51217026
更新时间: 2019.10.22 13:06
1语句覆盖
每个可执行语句都走一遍即可,即测试用例要覆盖所有的语句(来源:软件开发的技术基础)
2判定覆盖(分支覆盖)
针对判断语句,在设定案例的时候,要设定True和False的两种案例;与语句覆盖不同的是增加了False的情况
3条件覆盖
针对判断语句里面案例的取值都要去一次,不考虑条件的取值
另注:条件覆盖保证判断中的每个条件都被覆盖(来源:软件开发的技术基础)
4判定/条件覆盖
判定覆盖各条件覆盖交叉,针对于判定中的条件取值
5组合覆盖
判定-条件覆盖的加强版
6路径覆盖
-
powerdesigner 16.5 破解文件dll文件 直接覆盖即可
2013-03-21 12:50:49google上的16.5破解文件竟然是个下载软件的假链接,一怒之下只好自己动手丰衣足食。...powerdesigner 16.5 破解文件下载后覆盖到安装目录即可。试用版版本信息不会变化,但是软件license不会过期。 -
代码覆盖率 语句覆盖 判定覆盖 条件覆盖 路径覆盖
2019-12-10 21:49:46在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量...在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量,有利也有有弊。本文我们就代码覆盖率展开讨论,也欢迎同学们踊跃评论。
首先,让我们先来了解一下所谓的“代码覆盖率”。我找来了所谓的定义:
代码覆盖率 = 代码的覆盖程度,一种度量方式。
上面简短精悍的文字非常准确的描述了代码覆盖率的含义。而代码覆盖程度的度量方式是有很多种的,这里介绍一下最常用的几种:
1. 语句覆盖(StatementCoverage)
又称行覆盖(LineCoverage),段覆盖(SegmentCoverage),基本块覆盖(BasicBlockCoverage),这是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被执行到了。这里说的是“可执行语句”,因此就不会包括像C++的头文件声明,代码注释,空行,等等。非常好理解,只统计能够执行的代码被执行了多少行。需要注意的是,单独一行的花括号{} 也常常被统计进去。语句覆盖常常被人指责为“最弱的覆盖”,它只管覆盖代码中的执行语句,却不考虑各种分支的组合等等。假如你的上司只要求你达到语句覆盖,那么你可以省下很多功夫,但是,换来的确实测试效果的不明显,很难更多地发现代码中的问题。
这里举一个不能再简单的例子,我们看下面的被测试代码:
int foo(int a, int b)
{
return a / b;
}
假如我们的测试人员编写如下测试案例:TeseCase: a = 10, b = 5
测试人员的测试结果会告诉你,他的代码覆盖率达到了100%,并且所有测试案例都通过了。然而遗憾的是,我们的语句覆盖率达到了所谓的100%,但是却没有发现最简单的Bug,比如,当我让b=0时,会抛出一个除零异常。
正因如此,假如上面只要求测试人员语句覆盖率达到多少的话,测试人员只要钻钻空子,专门针对如何覆盖代码行编写测试案例,就很容易达到主管的要求。当然了,这同时说明了几个问题:
1.主管只使用语句覆盖率来考核测试人员本身就有问题。
2.测试人员的目的是为了测好代码,钻如此的空子是缺乏职业道德的。
3.是否应该采用更好的考核方式来考核测试人员的工作?
为了寻求更好的考核标准,我们必须先了解完代码覆盖率到底还有哪些,如果你的主管只知道语句覆盖,行覆盖,那么你应该主动向他介绍还有更多的覆盖方式。比如:
2. 判定覆盖(DecisionCoverage)
又称分支覆盖(BranchCoverage),所有边界覆盖(All-EdgesCoverage),基本路径覆盖(BasicPathCoverage),判定路径覆盖(Decision-Decision-Path)。它度量程序中每一个判定的分支是否都被测试到了。这句话是需要进一步理解的,应该非常容易和下面说到的条件覆盖混淆。因此我们直接介绍第三种覆盖方式,然后和判定覆盖一起来对比,就明白两者是怎么回事了。
3. 条件覆盖(ConditionCoverage)
它度量判定中的每个子表达式结果true和false是否被测试到了。为了说明判定覆盖和条件覆盖的区别,我们来举一个例子,假如我们的被测代码如下:
int foo(int a, int b)
{
if (a < 10 || b < 10) // 判定
{
return 0; // 分支一
}
else
{
return 1; // 分支二
}
}
设计判定覆盖案例时,我们只需要考虑判定结果为true和false两种情况,因此,我们设计如下的案例就能达到判定覆盖率100%:TestCaes1: a = 5, b = 任意数字 覆盖了分支一
TestCaes2: a = 15, b = 15 覆盖了分支二
设计条件覆盖案例时,我们需要考虑判定中的每个条件表达式结果,为了覆盖率达到100%,我们设计了如下的案例:TestCase1: a = 5, b = 5 true, true
TestCase4: a = 15, b = 15 false, false
通过上面的例子,我们应该很清楚了判定覆盖和条件覆盖的区别。需要特别注意的是:条件覆盖不是将判定中的每个条件表达式的结果进行排列组合,而是只要每个条件表达式的结果true和false测试到了就OK了。因此,我们可以这样推论:完全的条件覆盖并不能保证完全的判定覆盖。比如上面的例子,假如我设计的案例为:TestCase1: a = 5, b = 15 true, false 分支一
TestCase1: a = 15, b = 5 false, true 分支一
我们看到,虽然我们完整的做到了条件覆盖,但是我们却没有做到完整的判定覆盖,我们只覆盖了分支一。上面的例子也可以看出,这两种覆盖方式看起来似乎都不咋滴。我们接下来看看第四种覆盖方式。4. 路径覆盖(PathCoverage)
又称断言覆盖(PredicateCoverage)。它度量了是否函数的每一个分支都被执行了。 这句话也非常好理解,就是所有可能的分支都执行一遍,有多个分支嵌套时,需要对多个分支进行排列组合,可想而知,测试路径随着分支的数量指数级别增加。比如下面的测试代码中有两个判定分支:
int foo(int a, int b)
{
int nReturn = 0;
if (a < 10)
{// 分支一
nReturn += 1;
}
if (b < 10)
{// 分支二
nReturn += 10;
}
return nReturn;
}
对上面的代码,我们分别针对我们前三种覆盖方式来设计测试案例:a. 语句覆盖
TestCase a = 5, b = 5 nReturn = 11
语句覆盖率100%
b. 判定覆盖
TestCase1 a = 5, b = 5 nReturn = 11
TestCase2 a = 15, b = 15 nReturn = 0
判定覆盖率100%
c. 条件覆盖
TestCase1 a = 5, b = 15 nReturn = 1
TestCase2 a = 15, b = 5 nReturn = 10
条件覆盖率100%
我们看到,上面三种覆盖率结果看起来都很酷!都达到了100%!主管可能会非常的开心,但是,让我们再去仔细的看看,上面被测代码中,nReturn的结果一共有四种可能的返回值:0,1,10,11,而我们上面的针对每种覆盖率设计的测试案例只覆盖了部分返回值,因此,可以说使用上面任一覆盖方式,虽然覆盖率达到了100%,但是并没有测试完全。接下来我们来看看针对路径覆盖设计出来的测试案例:
TestCase1 a = 5, b = 5 nReturn = 0
TestCase2 a = 15, b = 5 nReturn = 1
TestCase3 a = 5, b = 15 nReturn = 10
TestCase4 a = 15, b = 15 nReturn = 11
路径覆盖率100%
太棒了!路径覆盖将所有可能的返回值都测试到了。这也正是它被很多人认为是“最强的覆盖”的原因了。还有一些其他的覆盖方式,如:循环覆盖(LoopCoverage),它度量是否对循环体执行了零次,一次和多余一次循环。剩下一些其他覆盖方式就不介绍了。
总结
通过上面的学习,我们再回头想想,覆盖率数据到底有多大意义。我总结了如下几个观点,欢迎大家讨论:
a. 覆盖率数据只能代表你测试过哪些代码,不能代表你是否测试好这些代码。(比如上面第一个除零Bug)
b. 不要过于相信覆盖率数据。
c. 不要只拿语句覆盖率(行覆盖率)来考核你的测试人员。
d. 路径覆盖率 > 判定覆盖 > 语句覆盖
e. 测试人员不能盲目追求代码覆盖率,而应该想办法设计更多更好的案例,哪怕多设计出来的案例对覆盖率一点影响也没有。
-
白盒测试的几种覆盖方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖详解
2018-09-10 17:07:26白盒测试用例设计的一个很重要的评估标准就是对代码的覆盖度。一说到覆盖,大家都感觉非常熟悉,但是常见的覆盖都有哪些?各自有什么优缺点?...白盒测试中常见的覆盖有六种:语句覆盖、判定覆盖、条...文章转自:http://www.51testing.com/html/44/n-3713444.html
白盒测试用例设计的一个很重要的评估标准就是对代码的覆盖度。一说到覆盖,大家都感觉非常熟悉,但是常见的覆盖都有哪些?各自有什么优缺点?在白盒测试的用例设计中我们应该如何自如地运用呢?今天小编就为大家总结了一下几种常见的覆盖以及各自的优缺点。
白盒测试中常见的覆盖有六种:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。下面我们就分别看看这几种不同的覆盖究竟是什么鬼。
一、语句覆盖(Statement Coverage)
语句覆盖,顾名思义就是针对代码语句的嘛。它的含义是我们设计出来的测试用例要保证程序中的每一个语句至少被执行一次。通常语句覆盖被认为是“最弱的覆盖”,原因是它仅仅考虑对代码中的执行语句进行覆盖而没有考虑各种条件和分支,因此在实际运用中语句覆盖很难发现代码中的问题。举个非常简单的例子:
public int foo(int a,int b)
{
return a/b;
}
这是一个求两数之商的函数。如果我们设计如下的测试用例:
TestCase: a = 2, b = 1
这时候我们会发现,该函数的代码覆盖率达到了100%,并且设计的case可以顺利通过测试。但是显然该函数有一个很明显的bug:当 b=0 时,会抛出异常。
二、判定覆盖(Decision Coverage)
判定覆盖也被成为分支覆盖(Branch Coverage),也就是说设计的测试用例要保证让被测试程序中的每一个分支都至少执行一次。举个例子,有如下流程图:
针对该图我们想要做到判定覆盖,可以设计如下case:
TestCase1: a=1, b=1 (路径:ab)
TestCase2: a=-1, b=-1 (路径:acd)
TestCase3: a=2, b=-1 (路径:ace)
判定覆盖比语句覆盖强一些,能发现一些语句覆盖无法发现的问题。但是往往一些判定条件都是由多个逻辑条件组合而成的,进行分支判断时相当于对整个组合的最终结果进行判断,这样就会忽略每个条件的取值情况,导致遗漏部分测试路径。
三、条件覆盖(Condition Coverage)
条件覆盖于分支覆盖不同,条件覆盖要求所设计的测试用例能使每个判定中的每一个条件都获得可能的取值,即每个条件至少有一次真值、有一次假值。
仍然以上面流程图作为例子来说明。上图中涉及到的条件一共有4个:
a>0, a<0, b>0, b<0
为了达到条件覆盖的目的,我们设计的用例需要在 a 点有:
a>0, a≤0, b>0, b≤0,
这些情况出现,并且在 c 点有:
a<0, a≥0, b<0, b≥0
这些情况出现。现在可以设计如下用例:
TestCase1: a=1, b=1 (路径:ab)
TestCase1: a=-1, b=-1 (路径:acd)
TestCase1: a=-1, b=0 (路径:ace)
TestCase1: a=1, b=-1 (路径:ace)
通常而言条件覆盖比判定覆盖强,因为条件覆盖使得判定中的每一个条件都取到了不同的结果,这一点判定覆盖则无法保证。但条件覆盖也有缺陷,因为它只能保证每个条件都取到了不同结果,但没有考虑到判定结果,因此有时候条件覆盖并不能保证判定覆盖。
四、判定条件覆盖(Decision/Condition Coverage)
判定条件覆盖,说白了就是我们设计的测试用例可以使得判断中每个条件所有的可能取值至少执行一次(条件覆盖),同时每个判断本身所有的结果也要至少执行一次(判定覆盖)。不难发现判定条件覆盖同时满足判定覆盖和条件覆盖,弥补了两者各自的不足,但是判定条件覆盖并未考虑条件的组合情况。
五、组合覆盖(Branch Condition Combination Coverage)
组合覆盖也叫做条件组合覆盖。意思是说我们设计的测试用例应该使得每个判定中的各个条件的各种可能组合都至少出现一次。显然,满足条件组合覆盖的测试用例一定是满足判定覆盖、条件覆盖和判定条件覆盖的。
针对前文提到的流程图,做条件组合覆盖时我们可以设计如下用例:
TestCase1: a=1, b=1 (路径:ab)
TestCase1: a=-1, b=-1 (路径:acd)
TestCase1: a=-1, b=0 (路径:ace)
TestCase1: a=1, b=-1 (路径:ace)
条件组合覆盖能够同时满足判定、条件和判定条件覆盖,覆盖度较高,但是组合覆盖的测试用例数量相对来说也是比较多的。
六、路径覆盖
路径覆盖,意思是说我们设计的测试用例可以覆盖程序中所有可能的执行路径。这种覆盖方法可以对程序进行彻底的测试用例覆盖,比前面讲的五种方法覆盖度都要高。那么这种方法是不是就一定最好呢?当然不能讲得这么绝对,它的缺点也是显而易见的:由于需要对所有可能的路径全部进行覆盖,那么我们需要设计数量非常巨大的而且较为复杂的测试用例,用例数量将呈现指数级的增长。所以理论上来讲路径覆盖是最彻底的测试用例覆盖,但实际上很多时候路径覆盖的可操作性不强。
总结
以上简单描述了几种不用的逻辑覆盖方法的原则和优劣。在实际的操作中,要正确使用白盒测试的代码覆盖方法,就要从代码分析和代码调研入手,根据调研的结果,可以选择上述方法中的某一种,或者好几种方法的结合,设计出高效的测试用例,尽可能全面地覆盖到代码中的每一个逻辑路径。
-
语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖
2019-05-25 14:44:16文章目录语句覆盖判定覆盖条件覆盖条件--判定覆盖组合覆盖 逻辑覆盖率:语句覆盖<条件覆盖<判定覆盖<条件-判定覆盖<组合覆盖<路径覆盖 语句覆盖 基本思想:设计用例,使程序中的每个可执行语句至少... -
覆盖率验证——代码覆盖率+功能覆盖率
2020-04-25 14:52:32文章目录一、基于覆盖率驱动的验证技术二、代码覆盖率功能覆盖率三、功能覆盖率建模3.1.功能覆盖率模型——covergroup3.2.覆盖点——coverpoint3.3.覆盖点的——bins四、代码code 一、基于覆盖率驱动的验证技术 采用... -
逻辑覆盖:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖
2020-05-24 12:04:46为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。 语句覆盖:每条语句至少执行一次,即每个可执行语句都执行一次。 判定覆盖:每个... -
语句覆盖,判定覆盖,条件覆盖,条件/判定覆盖,条件组合覆盖,路径覆盖
2019-01-07 11:00:05最近在复习软件测试的考试,每次...根据覆盖目标的不同和覆盖源程序语句的详尽程度,逻辑覆盖又可分为:语句覆盖,判定覆盖,条件覆盖,条件/判定覆盖,条件组合覆盖,路径覆盖 这里以一个题目引入: if (a>... -
白盒测试:语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖
2018-05-16 19:04:20语句覆盖:所有的“语句”都要覆盖一遍判定覆盖:包含语句覆盖,每个判断T、F各一次条件覆盖:包含语句覆盖,每个条件T、F各一次判定条件覆盖:包含判定覆盖、条件覆盖条件组合覆盖:每个条件的每种组合路径:所有... -
判定覆盖与条件覆盖的区别
2016-08-17 11:35:50判定覆盖只关心判定表达式的值(真/假),而条件覆盖涉及到判定表达式的每个条件的值(真/假)。 举个最简单的例子,方便理解: 判定表达式:a>1 or b>1 用判定覆盖设计的测试数据: a=5 (判定表达式的值为“真... -
测试覆盖:语句覆盖 判定覆盖(即分支覆盖) 条件覆盖 判定-条件覆盖 条件组合覆盖 路径覆盖
2017-04-04 17:23:57Testing coverage(测试覆盖),指测试系统覆盖被测试系统的程度,一项给定测试或一组测试对某个给定系统或构件的所有指定测试用例进行处理所达到的程度。 逻辑覆盖方法有以下6种: 语句覆盖 判定覆盖(即... -
(软件测试)代码覆盖(语句覆盖,分支覆盖,条件覆盖,条件组合覆盖,路径覆盖)
2018-05-03 19:45:34一、概念语句覆盖/代码行覆盖:目标☞保证程序中每一条语句最少执行一次,其覆盖标准无法发现判定中逻辑运算的错误;判定覆盖/分支覆盖:是指选择足够的测试用例,使得运行这些测试用例时,每个判定的所有可能结果... -
条件覆盖,路径覆盖,语句覆盖,分支覆盖解释
2017-11-19 21:47:12举个例子吧 if A and B then Action1 ... 分支覆盖又称判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。上例需要设计测试用例使其分别满足下列条件即可(1)A=true -
【测试】语句覆盖,判定覆盖,条件覆盖,路径覆盖
2016-11-06 20:00:38白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化: -
白盒测试:语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖...
2019-09-24 09:23:221语句覆盖 使所有的判断语句都能执行一次的条件案例,例如当判断语句事组合语句的时候,并且用or连接,只满足一个案例即可 2判定覆盖(分支覆盖) 针对判断语句,在设定案例的时候,要设定True和False的两种... -
语句覆盖、判定覆盖、条件覆盖 - 白盒笔试题解析
2019-09-23 20:16:28语句覆盖 - 设计一套测试 让被测对象中所有语句得到测试覆盖 判定覆盖 - 设计一套测试 让被测对象中所有判定得到测试覆盖 条件覆盖 - 设计一套测试 让被测对象中所有条件得到测试覆盖 路... -
覆盖——染色技巧
2016-09-23 01:25:47覆盖 -
如何用一个例子彻底解释白盒测试中语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖?
2020-01-11 11:28:46语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。 判断覆盖:使设计的测试用例保证程序中每个判断的每个取值分支至少经历一次。 条件覆盖:是指选择足够的测试用例,使得运行... -
SV之覆盖率
2019-05-22 21:01:29Coverage 覆盖率 Functional Coverage 功能覆盖率 Cross Coverage 交叉覆盖 Coverage Options 覆盖率选项 Coverage methods 覆盖率方法 Coverage system task 覆盖率系统任务 Coverage 覆盖率 覆盖率用来衡量... -
scp不覆盖同名文件,覆盖同名文件,彻底覆盖(个人实践所得)
2020-01-28 16:44:39为什么SCP传输没有覆盖 以下的SCP操作不会对同名文件覆盖 scp -r /usr/local/soft/spark-2.1.0-bin-without-hadoop root@192.168.0.12:/usr/local/soft/spark-2.1.0-bin-without-hadoop scp -r /usr/local/soft/... -
集合覆盖
2017-12-24 20:40:20介绍了集合覆盖问题,用python实现了近似求解 -
棋盘覆盖
2017-10-14 01:32:57显然,特殊方格在棋盘中可能出现的位置有4^k种,因而有4^k种不同的棋盘,棋盘覆盖问题(chess cover problem)要求用4种不同形状的L型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖 -
最小路径覆盖
2018-08-24 10:37:48花了好长时间,用于找了几篇能看懂的最小路径覆盖。 定义:通俗点将,就是在一个有向图中,找出最少的路径,使得这些路径经过了所有的点。 最小路径覆盖分为最小不相交路径覆盖和最小可相交路径覆盖。 最小不... -
覆盖索引
2018-07-03 16:31:50来源:...如果索引的叶子节点包含了要查询的数据,那么就不用回表查询了,也就是说这种索引包含(亦称覆盖)所有需要查询的字段的值,我们称这种索引为覆盖索引。注:引入数据表t... -
逻辑覆盖测试
2019-02-28 21:49:041.语句覆盖测试 2.判定覆盖测试 3.条件覆盖测试 4.判定-条件覆盖测试 5.路径覆盖测试 1.语句覆盖测试 核心:程序中的每个可执行语句至少执行一次 可执行语句:即程序中可以执行的语句,如下图,x >= ... -
功能覆盖率与代码覆盖率区别
2019-10-10 01:25:50功能覆盖率与代码覆盖率区别 Functional coverage vs Code coverage Code coverageas the name implies measure the coverage across the code . This gives an indication of how well the code is tested by ...
-
grbl 源代码 配置部分翻译中文
-
QT 学生通讯录
-
前端性能优化
-
"万年历" C语言 新手
-
React17 系统精讲 结合TS打造旅游电商平台
-
阿里巴巴Java开发手册(详尽版).rar
-
【Leetcode】974. Subarray Sums Divisible by K
-
2021.1.17寒假打卡Day13
-
【2021】Python3+Selenium3自动化测试(不含框架)
-
uni-app实战专题
-
JDBC连接数据库,并实现对数据库的增删改操作
-
数据结构算法实现(严蔚敏版配套实现程序)
-
Redis数据库入门与使用
-
【2021】UI自动化测试框架(Selenium3)
-
visual c++ vc内存池源代码,用于分配固定大小的内存,速度超快又方便.zip
-
【Leetcode】1496. Path Crossing
-
在windows环境中部署SSM项目到阿里云服务器
-
Duet Display windows版 version 1.9.2.7
-
ArcGIS Pro2.6和ArcGIS Enterprise学习
-
23种设计模式(适配器模式)