我举一个简单的例子来解释一下语句覆盖,分支覆盖,条件覆盖以及路径覆盖的相关知识,如果有不对的地方,恳请各位同行指正:
举例说明:
if A=true and B=true then Action1
if C=true or D=true then Action2
这是一个很简单的例子,也就是,当A和B都为真的情况下,执行Action1,Action1执行好以后再次判断,只要A或者B有一个为真,那么就执行Action2,当Action2执行完成后,整个程序算是执行完成了:分析见图
(pic 01)
语句覆盖:顾名思义,让程序中的每个语句都cover到。在这个例子中,也就是要符合两个Positive条件:
1. A = true and B = true
2. C = true or B = true
根据上图所示,符合有两个条件的,都可以实现语句覆盖:
比如:A = true, B = true, C = true, D =true就可以实现最大的语句覆盖了
看到图,我们可以知道,实际上A和B有一种情况,C和D有三种情况,1*3=3,所以,语句覆盖的例子除了有上面提示的一个例子外还可以有以下两个,罗列如下:
2. A = true, B = true, C = true, D = false
3. A = true, B = true, C = false, D = true
这个例子中,选择任何一个(比如1),都可以覆盖整个语句,实现最大的语句覆盖率
分支覆盖(判定覆盖):把程序中所有判定的分支尽可能得到体验。这句话说白了,就是两个条件的真真假假都得考虑到,