我对软件故障注入(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/