2009-08-14 24 views
3

私は意図的にファイルを破損したいと思うのはばかばかしいかもしれませんが、私はあなたに正当な理由でそれを保証します。ファイルを破損するプログラムですか?

私のアプリでは、多くのXMLシリアル化が行われています。これは、順番に、私は多くの脱直列化を意味します。

今日私はいくつかの災害シナリオを試みました。シリアル化操作中にサーバーをリセットしましたが、XMLファイルが破損していると考えられます。

問題は、正確にファイルを破損させるために適切なタイミングでサーバーをシャットダウンしようとすると、まず.0001 msの書き込み時間中に操作をキャッチすることがその運びであり、リブートする必要があります。また、他の理由でサーバからプラグを抜くのは間違いです。

ファイルを効果的に破損させる可能性のあるアプリがあるので、このファイルをアプリでテストするために使用できますか?

答えて

20

hex editorで開き、楽しいツイリングビットを持っていますか?

+1

これは考えていませんでした。これは "ファイルを中断する"方法の1つになります。 –

+0

さらに簡単に、テストに必要な名前の空のファイルを作成してください。 – EBGreen

+1

「腐敗」の意味にかかっています。 – EBGreen

2

部分的に劣化したファイルをテストしようとしていますか?

プログラムが悪いデータにどのように反応するかをテストしたい場合は、ランダムなテキストファイルを入力として使用するだけではどうですか?これは、ファイルにテキスト以外の値を導入することを可能にするよう

+0

完了していない実際の書き込み操作中に発生するのと同じ破損を試してエミュレートします。できるだけ本物のように。 –

+1

* nixを使用している場合は、ddと "/ dev/urandom"を調べてください。それ以上のランダム化はできません。 ddもし=/my/random/fileの=/dev/urandom = 1024のカウント= 1024 - > 1メガの全くランダムなファイル – Matt

+0

Linuxのための良い解決策ですが、これはWindowsベースです:) –

0

など、すなわち紹介などヌル($ 00)、

+5

ちょうどあなたを助けるために、StackOverflowこの入力を提供する方法は、実際には別個の答えではないので、他の回答にコメントとして追加することです。 – EBGreen

+0

しかし、ちょうどコメントで代理人を得るのは難しい。 – Robert

+0

しかし、あなたは農業経営のためにダウン投票になっているときに、代理人を得るのは難しい。 ;) – WCWedin

5

これはFuzz Testing背後アプローチの一種であるとして、バイナリエディタオプションに同意あなたのアプリケーションがどのように対処するかを見てください。引用されたリンクに記載されているいくつかのファズテストフレームワークを見ることができます。しかし、あなたのケースでは、ランダムジェネレータを使用して、それらの位置にビットを挿入して破損させるのと同じように簡単です。既知のケースがある場合は、もちろん既存の破損ファイルを使用することができます。

0

中断された書き込みをシミュレートしようとしている場合は、シリアル化されたデータを表す文字列を切り捨てるだけです。単体テストを使用していても、メモ帳ではかなり実行可能であれば、これは特に簡単です。

これは単なる1種類の悪いデータですが、何らかの形で不正な形式のXMLはもはやXMLではなく、ほとんどのパーサーは構文の最初の兆候でそれを拒否しますエラー。

2

XMLファイルをいくつかの方法で中断することができます。いくつか考えてみましょう: - 不完全なXMLタグ(切り捨てられたXML)。 - 予期しない内容のデータ(バイナリ/複数のテキスト)。 まず、「正しい/完全な」XMLファイルをコピーし、手作業で修正します。 2つ目は、ファイルシステム上のバイナリファイルと部分的なXMLファイルを連結することです。

進エディタは私のために少しあまりにも多くのようです;)

1

私は非常にあなたがは、テストのために「ランダムバイト」腐敗を行ういけないをお勧めします。あなたが行っているテストの状態を正確に把握するだけでなく、バ​​グが見つかった場合は、次のテストで修正が確定することを保証するのが難しいでしょう。

私は、手動で(またはプログラムによって)予測可能な方法でファイルを破損させて、あなたが何をテストしているか知っているか、必要であればテストを再現するかをお勧めします。(もちろん、ファイル内のどこからでも破損から確実に保護するために、複数の予測可能な方法が必要な場合があります)

+0

ランダムなデータで最もよくテストされる特定のクラスの問題があります。たとえば、操作の性質上、有効な入力がコンビナトリアルに展開されるなどです。これらのケースの1つではありません。 +1。なぜこれがダウン投票されたのか分かりません。 – WCWedin

関連する問題