现在的位置: 首页 > 综合 > 正文

C/C++单元测理论精要(十一)

2014年04月05日 ⁄ 综合 ⁄ 共 747字 ⁄ 字号 评论关闭

第4章 怎样才能保证测试效果?

 

4.1 衡量测试效果的基本指标:白盒覆盖

    衡量测试效果的基本指标是白盒覆盖率,即统计测试对代码逻辑单位的覆盖状况。代码的逻辑单位主要有:语句(块),条件、判定、分支、路径。常用的白盒覆盖有六种:语句覆盖、条件覆盖、分支覆盖、判定条件覆盖、修正判定条件覆盖、和路径覆盖。每种覆盖都有它的局限性,因此,实践中要多种覆盖组合应用。

 

    除MC/DC外,其他覆盖率的计算公式很简单:
    覆盖率 = 已覆盖逻辑单位数 / 全部逻辑单位数 * 100%,如:
    语句覆盖率 = 已覆盖语句块数 / 全部语句块数 * 100%;
    C/DC = (已覆盖判定数 + 已覆盖条件数)  /  (全部判定数 + 全部条件数) * 100%,这里的判定数和条件数是指条件和判定计算结果,即判定值和条件值。

 

    修正判定条件覆盖,即MC/DC是欧美航空标准。MC/DC主要用于检测判定内的条件之间的关系是否正确,对逻辑操作符&&和||是相当敏感的,但是并不检查从函数入口到出口的代码组合的覆盖,缺陷还是相当明显的。路径覆盖检查入口到出口的各种代码组合的覆盖,显然,MC/DC和路径覆盖的组合,才是最强的覆盖指标。

 

    统计覆盖率的一般方法是插装,即在被测代码中插入监视代码,监视执行状况。监视代码必须不影响被测代码本身的功能逻辑。

 

   

 

    工具可以将覆盖状况清晰标示出来,语句覆盖、条件覆盖、MC/DC覆盖可以在代码中标示,分支覆盖和路径覆盖可以在代码的逻辑结构图中标示。如上图,红色背景的是未覆盖的语句。条件前面的T,表示条件的真值未覆盖。条件前面的F,表示条件的假值未覆盖。条件前面的M,表示MC/DC未覆盖,也就是说,这个条件没有独立影响判定结果。红色背景的是未覆盖的分支。未覆盖的路径用红色画出。

抱歉!评论已关闭.