坑突变问题:“用减法代替长加法”

Problem with pit mutation: "Replaced long addition with subtraction"

提问人:Ella 提问时间:8/30/2023 最后编辑:Ella 更新时间:9/2/2023 访问量:61

问:

我是突变测试的新手。我正在使用 Pit,在下面的代码行中,有 4 个相同类型的突变: 用减法代替长加法 但我不明白为什么他给我 4 个突变而不是 3 个:long newsize = position + START_OF_DATA + total;

1 mutation:long newsize = position - START_OF_DATA + total;
2 mutation:long newsize = position + START_OF_DATA - total;
3 mutation:long newsize = position - START_OF_DATA - total;
4 mutation: ???

这是该行的上下文:

try {
    fc.position(position + START_OF_DATA);
    while (buffs[buffs.length - 1].remaining() > 0) {
        long rc = fc.write(buffs);
        if (rc <= 0) {
            throw new IOException("Short write");
        }
        total += rc;
    }
} finally {
    fc.force(true);
    long newsize = position + START_OF_DATA + total;
    if (newsize > size) {
        size = newsize;
    }
}

我还尝试使用这三个假定的突变手动修改源代码,但我的测试套件失败了。 哪一个可能是第四个突变?有没有办法清楚地看到突变,而不仅仅是坑报告中报告的原始代码列表?

谢谢大家

Java JUnit 突变测试 pittesting

评论

0赞 Valerij Dobler 8/30/2023
添加括号怎么样?加法和减法从左到右计算。使用括号,您可以强制从右到左进行评估。
0赞 Valerij Dobler 8/30/2023
由于加法的可交换性,应该没有任何区别。但是通过减法,考虑到边缘情况,您可能会得出不同的结果。
0赞 Ella 8/30/2023
我已经尝试过了,但无论如何,我的测试套件似乎都失败了:(long newsize = position - (START_OF_DATA + total);long newsize = position - START_OF_DATA - total;
0赞 henry 8/31/2023
你能在上下文中显示这行代码吗?它是否在最后的区块中?
0赞 Ella 9/2/2023
我添加了行上下文...是的,我的行在最后一个块中,这是我问题的原因吗?

答: 暂无答案