问题标签 [ninja-turtles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
989 浏览

c# - Off By One 错误和变异测试

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

现在这看起来很简单,我并没有想到尝试改变 IL 中的所有文字整数常量会出现问题。毕竟,只有 3 个(the 0、the1和 the ++)。

错误的!

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

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

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

我很容易使突变失败,因为从其中的任何一个常数中加或减 1 都会导致错误。(鉴于max >= 0

因此,针对这种特殊情况解决了问题。虽然它没有做我想要的突变测试,即检查当我丢失时会发生什么++- 实际上是一个无限循环。但这是另一个问题。

所以 - 我的问题: 是否有任何琐碎或非琐碎的情况,其中从 0 或 1 开始的循环可能会导致无法以类似方式重构(被测代码或测试代码)的“一个突变”测试失败?(请举例)

注意:当测试套件在应用突变后通过时,突变测试失败。

更新:一个不那么琐碎的例子,但仍然可以重构测试以使其失败的例子如下

var i=0如果您给它的测试var i=1输入是new[] {0,1,2,3,4,5,6,7,8,9}. 但是,将测试输入更改为new[] {9,8,7,6,5,4,3,2,1,0},变异测试将失败。因此,成功的重构证明了测试。

0 投票
0 回答
88 浏览

unit-testing - 如何使用 Ninja Turtles 在 F# 中编写测试突变?

如何使用 Ninja Turtles 在 F# 中编写测试突变?

这是我的测试突变(C#):

这是我的单元测试:

这是我的 SUT:

0 投票
1 回答
129 浏览

python - 在python中改变海龟的颜色

试图在一只乌龟与另一只碰撞时改变它的颜色。我想要什么:Nidas(一只乌龟)与绿色相撞变成红色。红色|绿色碰撞>>绿色变为红色。红色|红色或绿色|绿色无动作。发生的事情是 Nidas|Green 碰撞变为红色(如预期),但 Red|Green 碰撞变为红色变为绿色。我怎么弄乱了if语句,