ファズテストとは

ファジングテスト、つまりファジングは、コンピュータープログラムまたはシステムがさまざまな、時にはランダムな入力や情報にどのように応答するかを確認する方法です。 このプロセスでは、完全にランダムまたは特定の制約内でランダムに何らかのタイプのデータを生成し、そのデータをプログラムに入力して、予期しない情報の処理方法をテストします。 ファズテストの最も基本的な形式は、キーを押すか文字をランダムに送信してプログラムに送り、それらが正しく処理されることを確認することです。 ファズテストのより複雑なバージョンでは、構造化されたデータが使用され、ランダムに操作されてプログラムに送信されます。 データは、システムイベント、キーボード入力、模擬ネットワーク信号として、またはロードされるファイルとしてプログラムに到達できます。

ファズジェネレーターでテストできるコンピュータープログラムのさまざまな部分があります。 ランダムなマウスおよびキーボードイベントのシーケンスを作成し、GUIがクラッシュ、フリーズ、または予期しないタスクを実行することなく入力を処理できることを確認することにより、グラフィカルユーザーインターフェイス(GUI)をテストできます。 ネットワークプロトコルをテストするには、ファズジェネレーターが有効なデータパケットの一部をランダムに変更し、不正なデータを受信した後もプロトコルが機能し続けることを確認します。 ほとんどすべてのプログラムの基本的な入力要素は、ストレージタイプに対して長すぎる入力、予想とは異なるタイプの入力、何らかの形で不完全または誤った入力など、エラーに耐える能力をチェックできます。

コンピュータセキュリティ業界では、ファズテストを使用して、特定のシステムに明らかなセキュリティホールが存在しないことを確認できます。 これは、コンピューターのセキュリティをテストするために設計されたファズジェネレーターを使用して実行できます。 これらのプログラムは、システムキーワード、既知のデフォルト管理者パスワード、プログラムが使用するライブラリ内の関数、およびシステム関数へのランダム呼び出しを使用して、プログラムの反応を確認しようとします。

さまざまな種類のファズテストをカスタマイズして、特定の範囲内に収まるようにしたり、特定の種類の入力のみをテストしたりすることもできます。 つまり、プログラムには有効なコマンドのみを送信できますが、それらは無意味な順序になる可能性があります。 ターゲットプログラムの要素を取得して操作し、悪意を持って悪用される可能性がある状況を作り出すことができる、より複雑なファズテストプログラムが存在します。 これには、生成されるプロセスの順序の変更、権限の変更、またはコアデータとライブラリファイルの変更が含まれます。

ファズテストの最終結果は、プログラムが安全であり、予期しない状況に直面したときに正常に動作するかどうかを確認することです。 プロファイリングおよび分析ソフトウェアと併用すると、エラー処理やパフォーマンスのボトルネックなど、プログラムの領域でのメモリリークも検出できます。 コンピューターのセキュリティの場合、システムを危険にさらす可能性のあるオーバーフローなどの危険な問題は、正しいセットアップで捕捉できます。 ただし、ファズテストはソフトウェアテストの唯一の方法として使用することはできず、品質保証とソフトウェア検査のより大きなプロセスの一部である必要があります。

他の言語

この記事は参考になりましたか? フィードバックをお寄せいただきありがとうございます フィードバックをお寄せいただきありがとうございます

どのように我々は助けることができます? どのように我々は助けることができます?