6

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

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

编辑:有人可能会说这个问题与存在哪些突变测试框架?[关闭]。只有那个问题目前已有 8 年的历史,并且那里讨论的大多数工具都无法使用,因为它们中的大多数在过去 6 到 8 年没有更新。

4

1 回答 1

7

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

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

你基本上会得到一个像下面这样的用户界面:

可以运行的测试

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

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

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

DMC – 委托方法变更

操作员将处理委托的方法更改为具有类似签名的另一种方法。

DEH – 为事件处理变更委派的方法

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

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

运算符将对类属性的调用更改为对同一类型的另一个属性的调用。电子病历 -

异常处理程序删除

如果存在另一个 catch 或 finally,操作员将删除 catch 块。

EHC – 异常处理变更

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

EXS——异常吞咽

运算符添加空块 catch(Exception e) 以便没有异常可以离开当前方法。

JTI, JTD – 这个关键字插入、删除

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

JID——成员变量初始化删除(Field Initialization Deletion)操作符删除

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

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

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

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

运算符将分配某个对象到引用更改为分配另一个兼容对象。

标准运算符:

AOR – 算术运算符替换

运算符将算术运算(+、-、*、/、%)更改为该组中的另一个。

LOR – 逻辑运算符替换

运算符将逻辑运算(&、|、^)更改为该组中的另一个。

LCR – 逻辑连接器更换

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

ROR – 关系运算符替换

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

SOR – 移位运算符替换

运算符将逻辑移位 (», «) 更改为相反的移位。

OODL – 运算符删除

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

左边是什么,另一个是删除操作,右边是什么(例如,从 y=a+b;将有以下突变体:y=a;和 y=b;)。

SSDL – 语句块删除

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

结果如下所示:

突变评分 突变评分

未杀变种人 未杀变种人

杀死变种人 杀死变种人

通过以下测试

被以下杀死的变种人

于 2016-09-14T10:59:35.987 回答