6

私は昨日、正式なテストを行って品質管理を行っていました。彼らの手順では、テスト マシン上のすべてのファイルがリリースからプルされたことを確認していました。これらのファイルが同じであることを確認する方法は、Windows エクスプローラーでファイルのサイズと日時スタンプ ウィンドウをチェックすることでした。これらはたまたま別の理由でオフになっていましたが、その理由を突き止めることができました。

これは、ファイルが同じであることを確認する有効な方法ですか? 私はそうは思いませんでしたが、議論を始めましたが、私はここで若いので、あまり無理をするべきではないと考えました. ファイルの内容が正確であることを確認するために、ファイルのバイナリ比較を行うべきだと主張したかったのです。私の経験では、時刻/日付スタンプとサイズ属性が常に期待どおりに機能するとは限りません。何かご意見は???

4

5 に答える 5

3

ハッシュはとても良いです。しかし、もう 1 つのやや低技術の代替手段は、WinMerge や TextWrangler などの差分ツールを実行して、各ファイルの 2 つのバージョンを比較することです。退屈で、ヒューマンエラーの余地があります。

何よりも、バージョン管理を使用して、テストしているファイルが編集したファイルであり、起動しようとしているファイルであることを確認してください。ステージング サイトとライブ サイトとしてレポからチェックアウト フォルダーがあるため、作業コピーから変更をコミットしたら、テストし、ステージングにプッシュしてからライブするファイルが同じであることを 100% 確信できます。各ボックスで「svn update」を実行し、リビジョン番号を確認するだけです。

ああ、急いでロールバックする必要がある場合 (それは誰にでも起こることです)、-r スイッチを付けて svn update を再度実行するだけで、事実上即座に以前のリビジョンに戻ります。

于 2008-08-07T13:17:45.673 に答える
3

2 つのファイルが等しいかどうかを 100% 把握する唯一の方法は、2 つのファイルをバイナリ比較することです。

誤検知のリスクを許容できる場合 (つまり、2 つのファイルが 100% 同一ではないが、コードでは同一であると示されている場合)、特にファイルが存続している場合は、ダイジェストおよびチェックサム アルゴリズムを使用して作業を軽減できます。 2 つの異なるマシンの帯域幅が最適ではないため、バイナリ比較は実行できません。

ダイジェスト アルゴリズムとチェックサム アルゴリズムはすべて誤検知の可能性がありますが、正確な可能性はアルゴリズムによって異なります。一般的なルールは、暗号化されているほど、出力するビット数が多いほど、誤検知の可能性が低くなります。

CRC-32 アルゴリズムでさえかなり使いやすく、それを実装するコード例をインターネットで簡単に見つけることができます。

サイズ/タイムスタンプの比較のみを行う場合、これは簡単に回避でき、ファイルが同じか異なるかについて実際にはあまり確実ではないと言って申し訳ありません。

ただし、あなたの世界ではタイムスタンプが保持され、ファイルが変更されたときにのみ変更されることがわかっている場合は、それを使用できますが、それ以外の場合は保証されません。

于 2008-08-07T13:07:12.747 に答える
1

ファイルに対して md5sum ハッシュのようなものを実行し、それをリリースの既知のハッシュと比較します。それらは単なる日付/時刻の比較よりも正確であり、より自動化できるはずです。

于 2008-08-07T12:59:49.033 に答える
1

通常の方法は、2 つのファイルのハッシュを計算して比較することです。MD5 と SHA1 は典型的なハッシュ アルゴリズムです。md5sum は、ほとんどの UNIX タイプのマシンにデフォルトでインストールする必要があります。ウィキペディアのmd5sumの記事には、いくつかの Windows 実装へのリンクがあります。

于 2008-08-07T13:00:17.940 に答える
0

各ファイルでCRCチェックを行う必要があります... wikiから:

巡回冗長検査 ( Cyclic Redundancy Check ) 。送信またはストレージのエラーを検出するために、チェックサムを生成するために使用されるハッシュ関数の一種です。

ファイルの内容に基づいて、ほぼ一意の値を生成します。

于 2008-08-07T12:57:07.540 に答える