软件测试技术——白盒测试的覆盖方法介绍
1.语句覆盖——SC(Statement Coverage)
也称作:行覆盖——LC(Line Coverage)
设计足够的测试样例,使得被测程序中的每条语句至少执行一次即可。
注意它与基本路径覆盖的区别,基本路径覆盖是将程序流程图中的所有路径覆盖,而语句覆盖仅仅是将每条语句执行即可,比如:当出现if语句时,基本路径覆盖需要设计true和false两种测试样例,但是语句覆盖只需设计一个true样例去执行if语句中的判断语句即可。
语句覆盖的衍生:基本块覆盖——BBC(Basic Block Coverage)
它是语句覆盖的一个衍生,它把没有一个分支的代码区域作为一个计量单位,而不是简单的代码行。用于一个if-else分支代码行数远远大于另一个的情 况,在这种情况下,语句覆盖的指标并不适用。
2.判定覆盖——DC(Decision Coverage)
也称作:分支覆盖——BC(Branch Coverage)
设计足够的测试样例,使得被测程序中的每个判断的取真分支和取假分支至少经历一次即可。
3.条件覆盖——CC(Condition Coverage)
设计足够的测试样例,使得被测程序中的每个判断中的每个条件的可能取值至少满足一次即可。
注意区分条件和分支的区别,比如对于:if(a>0 && b>0) 这个判断语句来说,a>0 , b>0是两个条件,它们各自有true和false两种取值,true:a>0,false:a0,false:b0 && b>0)这个判断有两个分支true和false,由a和b的取值来决定。
条件覆盖的衍生:简单条件覆盖——SCC(Simple Condition Coverage)
可以自动生成CPP格式的测试用例,测试用例可以加入到源代码控制系统(如CVS)。
4.条件—判定覆盖——CDC(Condition—Decision Coverage)
设计足够的测试样例,使得被测程序中每个判断的取真分支和取假分支至少经历一次,且每个条件的可能取值至少满足一次即可。
说白了,条件—判定覆盖就是判定覆盖和条件覆盖的交集。
5.条件组合覆盖——CCC(Condition Combination Coverage)
也称作:多条件覆盖——MCC(Multiple Condition Coverage)
它在条件—判定覆盖的基础上,要求每个条件的true和false两种结果不仅要出现,还要将条件的结果进行排列组合式地出现。
比如说:我们对一个判断语句if(a>0 && b>0),原本只需要设计出Ta , Tb;Fa , Fb这样的两组测试用例即可满足条件—判定覆盖了,但是条件组合覆盖还要求我们写出Ta , Fb ;Fa , Tb这样的另外两组测试用例(也难怪它叫做条件组合覆盖了=.=,如果还有第二个判断语句的话,那么也有类似上面的四个组合条件,但是注意它并不是要你写出4*4=16个测试样例,而是要根据分支结果来进行条件组合,还记得我们要满足“每个判断的取真分支和取假分支至少经历一次”这个条件么写出4个测试用例基本就能满足条件组合覆盖的两项要求了,记得要把两个判断语句的各个条件组合全部用上,使其所得到的分支要有真有假。
6.修正条件/判定覆盖——MC/DC(Modified Condition /Decision Coverage)
使用条件组合覆盖基本会出现冗余的现象,因为一些条件组合得到的分支结果是一样的,他们可以看作是一组同样结果的条件组合集合,完全可以从中选择一个代表来替换掉这个集合。
7.路径覆盖——PC(Path Coverage)
路径覆盖是基本路径覆盖的前身,基本路径覆盖就是在路径覆盖的基础上将路径数压缩后得到的。
8.基本路径覆盖——BPC(Basis Path Coverage)
设计足够的测试用例,来覆盖程序中的所有可能的、独立的执行路径。
注意区分路径和语句的关系,直观点说:程序流程图里面,各种方框是语句,线条是路径
路径覆盖与基本路径覆盖参考 址
覆盖率介绍
后面想说的话
自己写的不对的地方还请大家指出来,一起学习交流~ ~ ̄▽ ̄ !
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!