|
覆盖率是指覆盖遍了整个系统的多少内容。覆盖率的典型测试方法有线性覆盖,分支覆盖,或路径覆盖。
在线性覆盖中,如果测试用例有到过某行代码的任何一个部分,那么这行代码即被认为覆盖了。比如,如果你有一个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:
|