编程突变测试介绍
1. DNF分区策略与故障检测
在软件测试中,我们常使用不同的策略来生成测试用例。以一个函数 Ttype(a: int,b: int,c: int): String 为例,它有特定的前置条件和后置条件:
context Ttype(a: int,b: int,c: int): String
pre:
a >= 1 and b >= 1 and c >= 1 and
a < (b+c) and b < (a+c) and c < (a+b)
post: if((a = b) and (b = c))
then result = "equilateral"
else
if((a = b) or (a = c) or (b = 2))
then result = "isosceles"
else result = "scalene"
endif
endif
分析由 DNF 分区策略生成的测试用例,发现这五个测试用例能检测图 2 和图 3 中的故障。但一般来说,DNF 分区可能无法检测所有可能的故障。对于图 4 和图 5 中的变异规范,这五个 DNF 测试用例就无法揭示故障,而基于故障的策略能生成揭示这些故障所需的测试用例:
- a = 2, b = 2, c = 2, result = “equilateral′′ 覆盖图 4 中的变异。
- a = 3, b = 2, c = 4, result = “scalene′′ 覆盖图 5 中的
超级会员免费看
订阅专栏 解锁全文
2351

被折叠的 条评论
为什么被折叠?



