变异测试(mutation testing):一种评估测试用例集错误检测能力的方法
Posted CSU迦叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变异测试(mutation testing):一种评估测试用例集错误检测能力的方法相关的知识,希望对你有一定的参考价值。
目录
动机
开发者测试的测试脚本的评价指标中,最关键的两点是测试代码覆盖率以及测试脚本的错误检测能力,错误检测能力如何衡量?一个朴素的想法是,对源程序做一些微小的改动,改动后的程序被称作变异程序/变异体。理想的测试脚本会让源程序通过,而拦截住所有的变异程序。
概念
变异类型
针对Java分为6类(貌似开发者测试只面向Java?)
变异测试实例
上图有源程序和3个变异体,对于测试用例x=1,y=1,只杀死了前两个,却让最后一个顺利通过。
变异测试的强与弱
变异测试的过程中,源程序和变异程序的执行差异主要分为以下两种类型:
执行同一测试用例,源程序和变异程序产生了
(1)不同的运行时状态 [情形1]
(2)不同的执行结果 [情形2]
所谓强弱变异测试,体现了认定变异程序被杀死的标准严格程度上,如果是弱变异测试, [情形1]出现就认为变异体被杀死了,而在强变异测试中,则需要 [情形2]也出现。
变异测试的流程图
变异得分
变异测试是评估方法,对应的评估指标是变异得分(mutation score)。在介绍变异得分之前,还要先介绍最后一个概念——等价变异体。
所谓等价变异体,也就是(语法上)变异了,但是(语义上)依然和源程序等价的变异体。
等价变异体在变异测试中,不希望被测试用例集杀死。
综上,变异得分的定义如下
参考
以上是关于变异测试(mutation testing):一种评估测试用例集错误检测能力的方法的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript数组方法: 变异方法 (mutation method)和非变异 (non-mutating method)
如何在dplyr中基于ntile()-groups应用变异?
如何使用 Apollo Angular 测试查询、变异、订阅服务?
transcription-coupled repair|Germ|HK|TS|Mutation|四类变异