突变测试
突变测试(Mutation Testing)是一种软件测试评估技术,用于检验测试用例的有效性和质量。
它通过对程序源代码进行微小的修改(突变),生成一些称为“突变体(Mutants)”的新程序,然后运行原有的测试用例集,看是否能检测到这些突变。
核心思想
突变测试的基本假设是:
1.程序中存在的小的错误可能导致行为改变;
2.有效的测试应该能检测到这些错误。
如果测试用例不能区分原程序和突变程序(即测试都通过),说明测试集可能不够好。
基本过程
生成突变体
在原始代码中,引入一个微小的语法变化(例如修改运算符、常量、条件表达式等),生成新的版本称为突变体。
执行测试集
使用原有的测试用例对每个突变体进行测试。
判断结果
对每个测试体有三种情况:
- 杀死:测试用例检测到行为不同,说明测试有效
- 幸存:测试未检测出差异,说明测试集不足
- 等价突变:逻辑改变但结果始终相同,不可检测(需人工分析)
计算突变得分
衡量测试集质量的指标:
突变测试优点
可量化测试质量
提高测试集的有效性
较覆盖率更精细
突变测试缺点
计算成本高
需要自动化工具
存在等价突变体问题
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 JasmineRain's blog!
评论
