javascript - 软件故障注入(inject)的真正用途是什么?

标签 javascript debugging testing fault

我对软件故障注入(inject)的基本理解是这样的:

无法运行所有可能的测试来测试软件。因此,人们求助于对代码进行修改并分析由此产生的错误程度。

但这有什么用呢?

比如说我们有:

function foo(a, b) {
   return a/b;
}

我们把它改成了

function foo(a, b) {
  return Math.floor(a/b);
}

那又怎样呢?

这到底有什么用?

编辑

@狮子座, 假设我写了一个软件来查找斐波那契数列。 我写的测试看起来像这样: 断言(fib(1) == 1);

assert(fib(0) == 0);

assert(fib(3) == 2);

我声称 100% 的覆盖率,因为所有代码行都在这里执行。

我的客户运行这些测试并且全部通过。 所以他想,“也许测试本身是错误的。让我介绍一下它们的一些变化”。

所以他把其中一个改成了 断言(fib(1) == 5);

测试失败。 他能从中得出什么结论?

最佳答案

假设您聘请了一家公司来向您交付一些软件,他们 promise 会以 90% 的覆盖率对他们的代码进行单元测试,这看起来很划算。

所以你决定在这些测试中插入错误,所以你希望看到通过测试的覆盖率要低得多,但是,在插入错误之后,你发现它仍然有 90% 的覆盖率:-)

这些测试有多大用处?

比如这个测试对不对?

@Test
public void testAdd() {
    int result = 0;
    Claszz c = new Claszz();
    int result2 = c.add(-1, 1);
    assertEquals(result,0);
}

关于javascript - 软件故障注入(inject)的真正用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21364626/

相关文章:

visual-studio - 任何 ICollection 和 ICollection<T> 类型的调试器可视化工具

html - 如何在 Chrome 中禁用 HTML5 功能以测试回退?

php - 在一页上测试两个表单 `press` 指令总是提交第二个表单

javascript - 为什么我的ajax不发送在 Controller 端上传的图像?

javascript - YouTube iFrame API不会控制播放器

c - 在 HP-UX 上使用 libunwind 并获取堆栈跟踪

用 Jest 测试 axios 拦截器

javascript - 从 Javascript 在 MVC 中为 Post 方法创建 ViewModel

JavaScript 正则表达式仅在特定字符后才替换值?

c++ - 如何在 Visual Studio 6.0 调试器中观察 std::wstring var