C#中的变异测试工具

zir*_*aak 3 c# mutation-testing visual-studio-extensions

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

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

编辑:有人可能会说这个问题与存在哪些突变测试框架是重复的[关闭].只有那个问题目前已经有8年的历史了,所讨论的大部分工具都无法使用,因为大多数工具在过去的6到8年里都没有更新过.

Raz*_*tru 6

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

更多这里:http://visualmutator.github.io/web/

您将基本上获得如下所示的UI:

可以运行的测试

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

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

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

DMC - 委派方法更改

运营商将处理委派的方法更改为具有类似签名的另一方法.

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

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

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

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

异常处理程序删除

如果存在另一个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;将有以下突变:int y;).

结果如下:

变异得分 变异得分

没杀死突变体 没杀死突变体

被杀死的突变体 被杀死的突变体

通过以下测试

通过以下方式杀死突变体