通过翻转位进行测试没有意义吗?

时间:2012-02-28 05:37:35

标签: testing complexity-theory

在阅读this时,它说

  

请记住,所有硬件,所有固件和所有软件都有故障   并引入错误。不要相信任何人或任何东西。有考试   有点翻转和破坏并确保生产系统的系统   可以通过这些故障来操作 - 在规模上,罕见的事件是令人惊讶的   常见的。

我不明白。如果翻转位,是否可以运行任何类型的软件?指针将是不正确的,如果你在开关案例(或甚至函数调用)上读取地址,你可以开始在没有勒芒的地方执行。哎呀,堆栈可能会被覆盖。如果你的筹码消失了,你怎么可能恢复。你不能,你必须终止并重新启动。终止+重启几乎无法恢复。

您如何'测试'生产系统但迫使零件终止?这实际上是说系统是多个CPU /系统拔出一个系统并查看它是否未拔出系统损坏或崩溃?否则我不明白这是什么意思。

1 个答案:

答案 0 :(得分:0)

我认为这一点的主要内容是提高系统的稳健性 - 请参阅Jeff Atwood的Coding Horror帖子,了解随机关闭服务器的Netflix Chaos Monkey。如果您知道服务器在某个时间点(以及大多数情况下)将会停止运行,那么您就开始计划这种情况了。你可以在需要的地方添加冗余,你强化代码来处理这样的情况,你现在就做,而不是把它推下来,当你没有直接感受到痛苦时这很容易做到。

与此相关的是,并非所有的位更改都会导致系统崩溃。它可能只是做损坏的数据或进程间通信。在这种情况下,系统中的每个组件都需要进行自己的错误检查,并且不相信它总能从其他组件获得良好的数据。

通过建立导致这类故障的测试系统,您有机会在客户成为巨大问题之前将其妥善修复。