几乎每个应用程序都执行 i/o 操作,无论是使用磁盘还是通过网络。
由于我的应用程序在开发时环境下运行良好,我想确保它们在 Internet 连接缓慢或不稳定,或者当用户试图从写得不好的 CD 中读取数据时仍然可以正常工作。
你会推荐什么工具来模拟:
- 慢速 i/o(打开文件、关闭文件、读写、目录项枚举)
- 偶尔的 i/o 错误
- 偶尔的“拒绝访问”响应
- tcp/ip 丢包
- ETC...
编辑:
Windows:
完成上述工作的最接近的解决方案似乎是 holodeck,商业软件(>900 美元)。
Linux:
目前还没有找到开放的解决方案,但可以达到smcameron和krosenvold指定的相同效果。
装饰器模式是个好主意。它需要包装我的 i/o 类,但会产生一个测试框架。唯一剩下的未经测试的代码将在 3rd 方库中。
然而我决定不走这条路,而是让我的代码保持原样并从外部模拟 i/o 错误。
我现在知道我需要的是所谓的“故障注入”。我认为这是一个常见的生产线部件,有很多我不知道的解决方案。(顺便说一句,另一个类似的好主意是“模糊测试”,感谢 Lennart)
在我看来,这个问题仍然不值 900 美元。我将实现我自己的基于 hooks 的开源工具(针对 win32)。完成后我会更新这篇文章。三四个星期后回来...