华唐产品 | 解决方案 | 技术支持 | 成功案例 | 下载中心 | 培训中心 | AEP理论中心
 首页 >
AEP技术与方法论
  什么是AEP
  可达性
  自动化基础平台
  代码走查
  编码标准
  置信因素
  连通性确认
  覆盖率分析
  团队文化
  数据污染
  防御性编程
  配置管理
  负载测试
  监控系统
  性能测试
  任务分配
  回归测试
  压力测试
  单元测试
     
AEP实现与解决方案
  Java解决方案
  C/C++解决方案
  .NET解决方案
  Web解决方案
  WEB服务解决方案
  企业解决方案

覆盖率分析

 

覆盖率是指覆盖遍了整个系统的多少内容。覆盖率的典型测试方法有线性覆盖,分支覆盖,或路径覆盖。

在线性覆盖中,如果测试用例有到过某行代码的任何一个部分,那么这行代码即被认为覆盖了。比如,如果你有一个IF条件语句,且有一个通过这个IF条件的路径被执行了,那么受作用行即被认为是覆盖到了,尽管有时候并不是所有的条件都执行过了。

分支覆盖可以得出比线性覆盖更精确的结果,但还是不如路径覆盖精确。 使用分支覆盖,仅当一个IF语句的每一个分支至少被执行过一次之后,这段代码才被认为是100%被覆盖过了。比如说,你在对如下结构的代码进行操作:

if (a)
...
if (b)
...
if (c)

你可以使用两个测试用例来达到100%的分支覆盖率,即:测试用例一,a= true, b= true and c=true, 为,测试用例二,a= false, b=false, and c=false。很明显,你只需要两倍于分支数的测试用例即可达到完全的分支覆盖率。

路径覆盖率是按照一条语句的不同路径是否被执行来进行统计的。按照路径覆盖率,一个有多条分支的IF条件语句只有直到所有可能的路径都被执行过了之后才会被认为是覆盖过了。需要多少个测试用例才能达到完全的路径覆盖的原则是:你需要2倍于分支数的测试用例。于是,要对诸如上面一段代码结构达到100%路径覆盖率,我们需要23或8个测试用例。

覆盖率数据可以用于如下两个方面:

  • 监视现有的测试平台是否对代码进行了比较好的覆盖
  • 通过查明哪行代码,哪个分支,或哪个路径需要执行来获得期望的覆盖水平


See also:



阅读下列的Parasoft技术白皮书:

 
  • Automated Java Unit Testing, Coding Standard Compliance, and Team-Wide Error Prevention - 312 KB PDF
  •  

     

    版权所有 深圳市华唐软件技术有限公司   粤ICP备06057501号