判定覆盖

判定覆盖(DecISIon Coverage)

目录

  • 1什么是判定覆盖
  • 2判定覆盖的判断过程

什么是判定覆盖

判定覆盖是指设计若干个测试用例,运行被测程序,使得程序中每个判定条件的取真分支和取假分支至少评价一次。

判定覆盖具有比语句覆盖更强的测试能力,而且具有和语句覆盖一样的简单性,无需细分每个判定就可以得到测试用例。但是大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。

判定覆盖的判断过程

判定覆盖

CASE让判断1和2都分别能出现 true, faLSE .

CASE1:

A=TRUE, B=TRUE——判断1= True;

C=TRUE,D=TRUE——判断2=TRUE;

CASE2:

A=TRUE,B=TRUE——判断1=TRUE

C=FALSE,D=FALSE——判断2=FALSE

CASE3:

A=FALSE,B=TRUE——判断1=FALSE

判断2不执行,

这里B=FALSE情况就没覆盖到。

修订的条件/判定覆盖(Modified Condition/DecISIon Coverage)

MC/DC(修订的条件/判定覆盖,Modified Condition/Decision Coverage)准则是一种实用的软件结构覆盖率测试准则, 已被广泛地应用于软件验证和测试过程中

下举例来详细说明MC/DC下测试用例的设计准则:

if(A( ) || B ( ) && C( )){

do action1();

}else{

do action2( );

}

A( ),B( ),C( )都是一个条件,而(A( ) || B( ) && C( ))叫一个Decision,如果是判定覆盖的话只需两个case就能覆盖,就是让这个decision为true和false各一次

如果是MC/DC的话就得四个case,而且只比条件数目多一个而已,怎么计算的呢?

定义: 在每个判定中的每个条件都曾独立的影响判定的结果至少一次, (独立影响意思是在其他的条件不变的情况下,改变一个条件)

那么就有如下测试用例(true和false的顺序就按照A( )、B( )、C( )来):

A( )对结果独立影响,那么就要求"B( )"和"C( )"中至少一个为false,于是有:

A( )独立影响且decision为true:

truefalsefalse

truefalsetrue

truetruefalse

A( )独立影响且decision为false:

falsefalsefalse

falsefalsetrue

falsetruefalse

B( )对结果独立影响,那么就要求"A( )"为false,"C( )"为true,于是有:

B( )独立影响且decision为true:

falsetruetrue

B( )独立影响且decision为false:

falsefalsetrue

C( )对结果独立影响,那么就要求"A( )"为false,"B( )"为true,于是有:

C( )独立影响且decision为true:

falsetruetrue

C( )独立影响且decision为false:

falsetruefalse

需要进一步补充说明的是,MC/DC测试的主要目的是为了防止在组合条件表达式中包含边际效应(side effect),如以下语句:

if (A( )||B( )||C()){

statements...;

}

当B( )函数或C( )函数具备边际效应时,MC/DC测试存在非常大的必要性;

原则上不应在组合条件表达式中调用包含边际效应的函数。

联系管理员
15775053793

作者头像
经济百科创始人

经济百科

上一篇:意会知识
下一篇:申请执行

发表评论