判定覆盖

发布日期:2023-08-05 11:00:00   来源 : bal    作者 :乐小管    浏览量 :17
乐小管 bal 发布日期:2023-08-05 11:00:00  
17

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

判定覆盖(Decision Coverage)

什么是判定覆盖

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

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

  判定覆盖是设计足够多的测试用例,使得程序中的每一个判断至少获得一次“真”和一次“假”,即使得程序流程图中的每一个真假分支至少被执行一次。

概念

  使设计的测试用例保证程序中每个判断的每个取值分支(ture or false)至少经历一次

  【优点】:分支(判定)覆盖具有比语句覆盖更强的测试能力。同样分支(判定)覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。

  【缺点】:往往大部分的分支(判定)语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。

判定覆盖的判断过程

  判定覆盖

  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:

  true  false  false

  true  false  true

  true  true  false

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

  false  false  false

  false  false  true

  false  true  false

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

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

  false  true  true

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

  false  false  true

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

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

  false  true  true

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

  false  true  false

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

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

    statements...;

  }

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

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



上一篇 : QQ
下一篇 : Native App
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部