我正在c#中开始一个新的项目,我正在寻找一个工具来帮助我进行突变测试。我以前用最可怜在java中做过变异测试,并且非常喜欢它。现在,我正在为C#寻找这样一个工具,我能找到的唯一工具要么是在过去几年没有更新,要么仍然处于alpha/beta版本( 乳膏、ninjaTurtles、内斯特)。
是否有任何工具是可靠的,并可与2010年后推出的工具一起使用?
编辑:有些人可能会说这个问题是存在哪些突变测试框架?[封闭]的翻版。只有这个问题目前已有8年历史,讨论过的大多数工具都无法使用,因为大多数工具在过去6-8年中都没有更新过。
发布于 2016-09-14 10:59:35
我成功地使用了以下Visual 2013扩展: VisualMutator.Net。这是因为其他的变异工具需要Visual 2005到位,或者其他过时的软件/框架/等等。
这里有更多信息:http://visualmutator.github.io/web/
基本上,您将得到如下所示的UI:
TestingExample.Tests
将发生突变。您可能已经有了项目结构的Project & Project.Tests
,您可以访问以下变体列表:
ISD (ISK) -超级/基本关键字删除
运算符在属于继承方法的重载方法中删除对基类方法的调用。
DMC -委托方法更改
运算符将处理委托的方法更改为另一种具有类似签名的方法。
委托用于事件处理更改的方法
运算符更改从错误处理中添加或删除方法的调用。EAM,
访问器、修饰符方法更改
运算符将对类属性的调用更改为对同一类型的另一个属性的调用。EHR -
异常处理程序删除
运算符删除catch块,如果存在另一个catch或最后一个catch。
EHC -异常处理更改
运算符将catch块的主体更改为抛出捕获异常。
EXS -异常吞咽
运算符添加空块捕获(异常e),以便任何异常都不能离开当前方法。
JTI,JTD -此关键字插入、删除
运算符添加或删除此关键字(如果存在同名局部变量)。
成员变量初始化删除(字段初始化删除)操作符删除
用适当的值初始化类的字段。
来自另一个继承类的MCI成员调用
运算符将对对象的方法调用更改为对另一个对象调用相同的方法。
PRV -其他兼容类型的参考分配
运算符将将特定对象分配给引用更改为分配另一个兼容对象。
标准操作员:
算术算子替换
运算符将算术运算(+、-、*、/、%)更改为该组中的另一个操作。
逻辑算子替换
运算符将逻辑操作(&、AC.26、ˆ)更改为该组中的另一个操作。
逻辑连接器替换
运算符将逻辑表达式中的连接器(,区)更改为另一个连接器。
ROR -关系算子替换
运算符将每个关系运算符(>,<,<=,>=,==,!=)更改为来自同一组的另一个关系运算符。
Shift算子替换
运算符将逻辑移位(,)改为相反的。
OODL -操作符删除
运算符从每个操作中创建两个变体,如+、-、>、<=、%等。
左边的是什么,另一边是移除操作,右边的是什么(例如从y=a+b;会有以下的变种人: y=a;和y=b;)
SSDL -语句块删除
运算符移除语句和赋值,但不删除声明(例如,从int y=15中删除;将有以下突变体: int;)。
结果如下:
突变评分
未杀死突变体
杀灭突变体
通过以下测试
https://stackoverflow.com/questions/39488572
复制相似问题