testing - 如何在 I/O 行为不佳的情况下测试应用程序的可靠性

标签 testing io usability reliability

几乎 那里的每个应用程序都执行 i/o 操作,无论是使用磁盘还是通过网络。

由于我的应用程序在开发时环境下运行良好,我想确保它们在 Internet 连接缓慢或不稳定时,或者当用户尝试从写入错误的 CD 中读取数据时仍能正常运行。

你会推荐什么工具来模拟:

  • 慢速输入/输出(打开文件、关闭文件、读写、目录项枚举)
  • 偶尔的输入输出错误
  • 偶尔的“访问被拒绝”响应
  • tcp/ip丢包
  • 等...

编辑:

window :
完成所描述工作的最接近解决方案似乎是全息甲板商业软件(>900 美元)。

Linux:
目前没有找到开放的解决方案,但效果相同 可以按照 smcameron 和 krosenvold 的规定实现。


装饰器模式是个好主意。 它需要包装我的 I/O 类,但会产生一个测试框架。 唯一剩下的未经测试的代码将在第 3 方库中。

但我决定不走这条路,而是让我的代码保持原样并从外部模拟 i/o 错误。


我现在知道我需要的是所谓的“故障注入(inject)”。 我认为这是一个常见的生产线部分,有很多我不知道的解决方案。 (顺便说一句,另一个类似的好主意是“模糊测试”,感谢 Lennart)

在我看来,这个问题仍然不值 900 美元。 我将基于钩子(Hook)(针对 win32)实现我自己的开源工具。 完成后我会更新这篇文章。大约 3 或 4 周后回来...

最佳答案

您需要的是故障注入(inject)测试系统。詹姆斯惠特克的 'How to break software'是一本关于这个主题的好读物,包括一张包含许多所需工具的 CD。

关于testing - 如何在 I/O 行为不佳的情况下测试应用程序的可靠性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/560975/

相关文章:

interface - 为各种屏幕尺寸设计软件界面

usability - 人为因素和可用性的 1 小时

react-native - 如何模拟包含 React Native 模块功能的全局变量

c++ - 我怎样才能在后台运行一个软件而不显示任何窗口使用 C++

c - 使用 fwrite() 写入某些字节时出错

java - 为什么是 "Multiplexed, non-blocking I/O, [..] much more scalable than thread-oriented, blocking I/O"?

user-interface - 用户界面 - 颜色和布局

ruby-on-rails - rails 中的密码格式

testing - ActiveMQ Artemis 读取消息而不在 JMeter 中使用它

python - 为什么文本 I/O 必须在 python 3 中缓冲?