C#中的变异测试工具

时间:2016-09-14 10:50:06

标签: c# visual-studio-extensions mutation-testing

我正在c#中开始一个新项目,我正在寻找一种可以帮助我进行突变测试的工具。我之前使用pitest在java中进行了突变测试,非常喜欢它。 现在我正在为C#寻找这样一个工具,我能找到的唯一工具要么在过去几年没有更新,要么仍在alpha / beta中 (creamninjaTurtlesNester)。

是否有任何可靠的工具可以与2010年后出现的工具一起使用?

编辑: 有人可能会说这个问题与What mutation-testing frameworks exist? [closed]重复。只有这个问题目前已有8年历史,而且大多数讨论的工具都无法使用,因为大多数工具在过去6到8年内都没有更新过。

1 个答案:

答案 0 :(得分:6)

我成功使用了以下Visual Studio 2013扩展:VisualMutator.Net。那是因为其他突变工具需要Visual Studio 2005或其他超级过时的软件/框架/等。

更多信息:http://visualmutator.github.io/web/

您基本上会得到如下所示的用户界面:

Tests that can be runned

TestingExample.Tests将会发生变异。您可能已经将项目结构化Project & Project.Tests 您可以访问以下变体列表:

ISD(ISK) - 超级/基本关键字删除

运算符在属于继承方法的重载方法中删除对基类方法的调用。

DMC - 委派方法更改

运算符将处理委派的方法更改为具有类似签名的另一方法。

DEH - 为事件处理更改委派的方法

操作员更改从错误处理添加或删除方法的调用。 EAM,

EMM - 访问者,修改方法更改

运算符将对类属性的调用更改为调用另一个相同类型的属性。 EHR -

异常处理程序删除

如果存在另一个catch或最后一个catch,则运算符将删除catch块。

EHC - 异常处理更改

运算符将catch块的主体更改为抛出捕获的异常。

EXS - 吞咽异常

运算符添加空块捕获(异常e),以便没有异常可以保留当前方法。

JTI,JTD - 此关键字插入,删除

如果存在具有相同名称的局部变量,则运算符添加或删除此关键字。

JID - 成员变量初始化删除(字段初始化删除)运算符删除

使用适当的值初始化类的字段。

MCI - 来自另一个继承类的成员调用

运算符将对方法的调用更改为在另一个对象上调用相同的方法。

PRV - 具有其他兼容类型的参考分配

操作员更改将某些对象分配给引用以分配另一个兼容对象。

标准运营商:

AOR - 算术运算符替换

操作员将算术运算(+, - ,*,/,%)更改为该组中的另一个。

LOR - 逻辑运算符替换

操作员将逻辑操作(&,|,)更改为该组中的另一个操作。

LCR - 更换逻辑连接器

运算符将逻辑表达式中的连接符(,||)更改为另一个。

ROR - 关系运算符替换

运算符将每个关系运算符(>,<,< =,> =,==,!=)更改为来自同一组的另一个运算符。

SOR - 移位操作员更换

操作员将逻辑移位(»,«)更改为相反的移位。

OODL - 操作员删除

操作员从每个操作创建两个突变体,例如+, - ,>,< =,%等。在一个操作中删除操作

并且左侧是什么,在另一个中它移除了操作,右侧是什么(例如从y = a + b;将有以下突变体:y = a;和y = b;)

SSDL - 声明阻止删除

运算符删除语句和赋值,但不删除声明(例如,从int y = 15;将有以下mutter:int y;)。

结果如下:

突变得分 Mutation score

未杀死突变体 Not killed mutant

被杀死的突变体 Killed mutant

通过以下测试

Killed mutant by the following