ほとんどすべてのアプリケーションは、ディスクまたはネットワークを介して I/O 操作を実行します。
私のアプリケーションは開発時の環境で正常に動作するため、インターネット接続が低速または不安定な場合、またはユーザーが書き込みが不十分な CD からデータを読み取ろうとした場合でも動作することを確認したいと考えています。
シミュレートするためにどのツールをお勧めしますか:
- 遅い I/O (ファイルを開く、ファイルを閉じる、読み取りと書き込み、ディレクトリ項目の列挙)
- 時折の入出力エラー
- 時折の「アクセス拒否」応答
- TCP/IP でのパケット損失
- 等...
編集:
Windows:
説明されている作業を実行するための最も近いソリューションは、holodeck、商用ソフトウェア (>900 ドル) のようです。
Linux:
オープン ソリューションは今のところ見つかりませんでしたが、smcameron と krosenvold で指定されているのと同じ効果が得られます。
デコレータ パターンは良い考えです。I/O クラスをラップする必要がありますが、テスト フレームワークになります。テストされていない唯一のコードは、サードパーティのライブラリにあります。
しかし、私はこの方法をとらず、コードをそのままにして、外部からの i/o エラーをシミュレートすることにしました。
私が必要としているのは「フォールトインジェクション」と呼ばれるものであることがわかりました。知らなかったソリューションがたくさんある一般的な生産ラインの部品だと思いました。(ちなみに、もう 1 つの同様の良いアイデアは、「ファズ テスト」です。Lennart のおかげです)
私の考えでは、この問題はまだ 900 ドルの価値はありません。フックに基づいて独自のオープンソース ツールを実装します (win32 を対象としています)。作業が完了したら、この投稿を更新します。3~4週間くらいで戻ってきて…