白盒测试逻辑覆盖之谓词覆盖、子句覆盖、三类有效字句覆盖等知识点

本篇笔记会简化书本上的概念,用容易理解的方式来说明,有些例子打字麻烦,我会直接放图片!

目录

基础知识:

谓词覆盖predicate coverage

子句覆盖 clause coverage

组合覆盖 combinatorial coverage

有效字句覆盖Active Clause Coverage

广义有效子句覆盖(General Active Clause Coverage)

相关性有效子句覆盖(Correlated Active Clause Coverage)

限制性有效子句覆盖(Restricted Active Clause Coverage)


基础知识:

谓词predicate:结果为布尔值的表达式,内部用逻辑操作符(V、^ 、—> 等等)连接。

eg:(a>b) v (C) ^P(x)

子句clause:不包含任何逻辑操作符的谓词

eg:谓词((a = b) V C) ^ P(x) 中包含了三个子句:(a = b) 、C 、P(x)

谓词覆盖predicate coverage

又称判定覆盖,要求对于一组谓词中,TR(Test request测试需求)包括每个谓词的结果为真和为假。

eg:

子句覆盖 clause coverage

又称条件覆盖,要求对于每个谓词中的每个子句,TR包括该子句的结果为真和为假。

eg:对于谓词((a = b) V C) ^ P(x),满足CC,需要(a=b)分别取到T和F,C分别取到T和F,P(x)分别取到T和F。这个两组测试用例就可以满足,具体不在细说。

组合覆盖 combinatorial coverage

又称判定条件覆盖,要求对于每个谓词中的每个子句,TR包括该子句的结果为真和为假的每种可能组合。(也就是在字句覆盖的基础上,需要不同的组合都存在)

eg:已知谓词 (a V b) ^ c

满足子句覆盖:

a b c
1 T T T
2 F F F

满足组合覆盖:

a b c
1 T T T
2 F T T
3 T F T
4 T T F
5 F F T
6 T F F
7 F T F
8 F F F

有效字句覆盖(Active Clause Coverage)

分别对于谓词组中的每个谓词,在该谓词中的子句中选出主子句Ci,其余为次子句Cj,TR包括Ci为真和Ci为假。(不太好理解,建议用心领会!)

注:主子句是什么?举个例子:比如谓词a ^ b ,b取T,那么剩下如果a取T,整个表达式值为T,如果a取F,整个表达式值为F,那么 a就是主子句,因为它的取值决定了整个谓词的TF,b就是次子句。

再比如谓词a V b,如果 b取F,那么剩下如果a取T,整个表达式值为T,如果a取F,整个表达式值为F, a就是主子句,因为它的取值决定了整个谓词的TF,b就是次子句。

以上是选择a为主子句的情况,对于有效子句覆盖,要让每条子句都分别称为为主子句,而要让它称为主子句,就要求先确定次子句的取值

对于有效字句覆盖,延伸出了以下三种不同形式(例子在最下面):

广义有效子句覆盖(General Active Clause Coverage)

要求每条主子句为真和假,而且次子句的取值必须保证主子句决定谓词的结果(但并不是要求相同哦),次子句取值不必相同。

相关性有效子句覆盖(Correlated Active Clause Coverage)

在广义有效子句覆盖的基础上,还要求谓词必须包含真和假的结果。(很多情况下,对于谓词p来说,GACC和CACC是一样的,他们使用相同的测试输入对,都包括T和F,但不是代表GACC=CACC,如谓词p=a<->b,不管b取的真值是什么,a都决定p,而p的结果总是真。)

限制性有效子句覆盖(Restricted Active Clause Coverage)

在相关性有效字句覆盖的基础上,对主子句取T和F时,要求次子句取值相同。

eg1:对于谓词 (a V b) ^ c,求GACC、CACC、RACC

TR(GACC)={ (a=真 ^ Pa,a=假 ^ Pa) ,(b=真 ^ Pb,b=假 ^ Pb),(b=真 ^ Pb,b=假 ^ Pb)}

列出的真值表为:

编号 a b c (a V b) ^ c
a为主子句 1 T f t t
2 F f t f
b为主子句 3 f T t t
4 f F t f
c为主子句 5 t f T t
6 f t F f
7 t f F f
8 f t T t
9 t t T t
10 t t F f

显然1-6可以满足abc分别为主子句的时候GACC,去除重复的情况:1和5重复,2和4重复,只保留一个,因此,最终得到的满足GACC的测试用例有四个:1,2,3,6。

经过分析,可以看出来,上面满足GACC的每个测试用例对p都包含了T和F的取值,所以以上满足GACC的测试用例也恰好满足了CACC。

对于RACC,当a为主子句,1,2满足;当b为主子句,3,4满足;当c为主子句,,满足的有三组:6和8,5和7,9和10。

制作不易,如果对你有帮助的话欢迎点赞收藏呢,有疑惑可以留言哦~

猜你喜欢

转载自blog.csdn.net/weixin_46019681/article/details/125013689
今日推荐