标签: ninja-turtles

关闭一个错误和变异测试

在为我最喜欢的突变测试框架(NinjaTurtles)编写"Off By One"变异测试程序的过程中,我编写了以下代码,以便提供检查我的实现的正确性的机会:

public int SumTo(int max)
{
    int sum = 0;
    for (var i = 1; i <= max; i++)
    {
        sum += i;
    }
    return sum;
}
Run Code Online (Sandbox Code Playgroud)

现在这看起来很简单了,并没有让我觉得尝试改变IL中的所有文字整数常量会有问题.毕竟,只有3(the 0,the 1,and ++).

错误!

在第一次运行中它变得非常明显,它在这个特定的实例中永远不会起作用.为什么?因为将代码更改为

public int SumTo(int max)
{
    int sum = 0;
    for (var i = 0; i <= max; i++)
    {
        sum += i;
    }
    return sum;
}
Run Code Online (Sandbox Code Playgroud)

只在总和上加0(零),这显然没有效果.不同的故事,如果它是多组,但在这种情况下,它不是.

现在有一个相当简单的算法来计算整数之和

sum = max * (max + 1) / 2;
Run Code Online (Sandbox Code Playgroud)

我可以轻易地使突变失败,因为从任一常数中加1或减1会导致错误.(鉴于此max >= …

c# algorithm il mutation-testing ninja-turtles

7
推荐指数
1
解决办法
932
查看次数

标签 统计

algorithm ×1

c# ×1

il ×1

mutation-testing ×1

ninja-turtles ×1