覆盖率 86% 的测试集一定可靠吗?变异测试把代码改坏,看测试能不能发现。这篇用 PIT 在同一个类上跑三套测试,看每个存活的变异说明测试漏了什么、哪些其实杀不死。
[弱] 耗时 1.0 秒
>> Generated 29 mutations Killed 10 (34%)
>> Line Coverage (for mutated classes only): 6/7 (86%)
各状态的变异数: {'SURVIVED': 13, 'KILLED': 10, 'NO_COVERAGE': 6}
存活 / 未覆盖的变异(类 方法 行 变异器 → 状态):
行 4 方法 clamp ConditionalsBoundaryMutator SURVIVED
行 4 方法 clamp ConditionalsBoundaryMutator SURVIVED
行 4 方法 clamp PrimitiveReturnsMutator NO_COVERAGE
行 4 方法 clamp PrimitiveReturnsMutator NO_COVERAGE
行 2 方法 discount ConditionalsBoundaryMutator SURVIVED
行 2 方法 discount ConditionalsBoundaryMutator SURVIVED
行 2 方法 discount IncrementsMutator SURVIVED
行 2 方法 discount NegateConditionalsMutator SURVIVED
行 2 方法 discount NegateConditionalsMutator SURVIVED
行 2 方法 discount NegateConditionalsMutator SURVIVED
行 2 方法 discount PrimitiveReturnsMutator SURVIVED
行 5 方法 grade ConditionalsBoundaryMutator SURVIVED
行 5 方法 grade ConditionalsBoundaryMutator NO_COVERAGE
行 5 方法 grade NegateConditionalsMutator NO_COVERAGE
行 5 方法 grade EmptyObjectReturnValsMutator NO_COVERAGE
行 5 方法 grade EmptyObjectReturnValsMutator NO_COVERAGE
行 3 方法 isAdult ConditionalsBoundaryMutator SURVIVED
行 7 方法 log VoidMethodCallMutator SURVIVED
行 6 方法 sumPositive ConditionalsBoundaryMutator SURVIVED [强] 耗时 1.0 秒
>> Generated 29 mutations Killed 24 (83%)
>> Line Coverage (for mutated classes only): 5/7 (71%)
各状态的变异数: {'SURVIVED': 4, 'KILLED': 24, 'NO_COVERAGE': 1}
行 4 方法 clamp ConditionalsBoundaryMutator SURVIVED
行 4 方法 clamp ConditionalsBoundaryMutator SURVIVED
行 4 方法 clamp PrimitiveReturnsMutator SURVIVED
行 7 方法 log VoidMethodCallMutator NO_COVERAGE
行 6 方法 sumPositive ConditionalsBoundaryMutator SURVIVED BooleanTrueReturnValsMutator {'KILLED': 1}
ConditionalsBoundaryMutator {'SURVIVED': 7, 'NO_COVERAGE': 1}
EmptyObjectReturnValsMutator {'KILLED': 1, 'NO_COVERAGE': 2}
IncrementsMutator {'SURVIVED': 1}
MathMutator {'KILLED': 1}
NegateConditionalsMutator {'KILLED': 5, 'SURVIVED': 3, 'NO_COVERAGE': 1}
PrimitiveReturnsMutator {'NO_COVERAGE': 2, 'KILLED': 2, 'SURVIVED': 1}
VoidMethodCallMutator {'SURVIVED': 1} [更强] 耗时 1.0 秒
>> Generated 29 mutations Killed 26 (90%)
>> Line Coverage (for mutated classes only): 6/7 (86%)
各状态的变异数: {'SURVIVED': 3, 'KILLED': 26}
行 4 方法 clamp ConditionalsBoundaryMutator SURVIVED
行 4 方法 clamp ConditionalsBoundaryMutator SURVIVED
行 6 方法 sumPositive ConditionalsBoundaryMutator SURVIVED