Debugging 除了现有测试的测试覆盖范围外,是否还使用了软件故障注入?

Debugging 除了现有测试的测试覆盖范围外,是否还使用了软件故障注入?,debugging,testing,automated-tests,code-injection,Debugging,Testing,Automated Tests,Code Injection,假设我发布了一个包含函数的项目: int sum(int a, int b) { return a + b; } 我编写了以下测试: assert(1==1); assert(2==2); 所有的测试都通过了,所以我声称我的项目是100%好的,测试有100%的覆盖率 我的客户很聪明,知道错误注入。因此,他在我的项目中插入了一个错误,并使之: int sum(int a, int b) { return -1; } 我的测试仍然通过,所以他说我的测试没用。太好了 但是软件故障注入还有

假设我发布了一个包含函数的项目:

int sum(int a, int b) {
  return a + b;
}
我编写了以下测试:

assert(1==1);
assert(2==2);
所有的测试都通过了,所以我声称我的项目是100%好的,测试有100%的覆盖率

我的客户很聪明,知道错误注入。因此,他在我的项目中插入了一个错误,并使之:

int sum(int a, int b) {
  return -1;
}
我的测试仍然通过,所以他说我的测试没用。太好了

但是软件故障注入还有其他用途吗

我读到它被用来断言软件的健壮性?怎么用?你能用这个例子说明这是可能的吗

此外,我还阅读了一些文章,这些文章展示了如何在web上传递的SOAP消息中注入故障(*基本上意味着在web上从一台机器发送到另一台机器的消息中注入了故障,并且观察到了结果))。这将如何有用?显然这会出错,你能从中得出什么结论


请引用简单的例子。

关于将故障注入SOAP消息(或通过网络发送的其他数据):这可以被视为一种“压力测试”,以确定应用程序在面对网络问题、数据损坏、恶意客户端等时的健壮性

正如你所说,“显然这会出错”。但是压力测试的目的并不是查看您的应用程序是否按预期工作(在正常条件下)。当您向应用程序提供垃圾数据/大量数据、故意损坏配置文件或突然断开正在使用的硬件连接等时,预计您的程序将无法“工作”。但您希望确保它不会做一些坏事,比如崩溃、破坏有价值的数据、向未经授权的人透露机密数据等等。如果是同时为多个用户提供服务的应用程序,您还需要确保来自一个用户的非法输入不会导致其他用户失去服务

如果您从未对应用程序进行过压力测试,结果可能会让您大吃一惊