ファジングを行うメリットの一つに、適切に利用すれば比較的少ない手間で高い効果を得ることができるという点である。製品開発においてファジングを導入することで得られる効果としては、主に次の二つを挙げることができる。

・バグや脆弱性の低減
・ソフトウエア・テストの自動化・効率化による労力の削減

図1 Microsoft Secure Development Lifecycle(出典:「<a href=”http://www\.microsoft\.com/downloads/ja\-jp/details\.aspx\?familyid=918179a7\-61c9\-487a\-a2e2\-8da73fb9eade”>SDL進捗レポート</a>)」より引用)
図1 Microsoft Secure Development Lifecycle(出典:「SDL進捗レポート)」より引用)
[画像のクリックで拡大表示]
図2 Cisco Secure Development Lifecycle(出典:「<a href=”http://www\.cisco\.com/web/about/security/cspo/csdl/process\.html”> CSDL Process</a>」より引用)
図2 Cisco Secure Development Lifecycle(出典:「 CSDL Process」より引用)
[画像のクリックで拡大表示]

 ファジングで重要なのは、できる限り多くのパターンの入力データ(以降、ファズ)を使い、あらゆる入力に対する挙動を網羅的に確認することである。ツールによって自動化して実施できることも特筆すべき点で、同じテストを繰り返し実施することが容易というメリットを持っている。

 ファジングではどのようなファズを用意するかが一つの大きなポイントになる。しかし、実際にはツールが対象のソフトウエアの設計者や開発者の意図とは無関係に半ば機械的に使用するファズを作成する。これによって設計者や開発者が想定していなかった入力によるバグや脆弱性も発見できる。テスト担当者の技術レベルや先入観にとらわれることなく中立的な視点で実施できる点が大きな強みと言える。それに加えて、何度も繰り返して検証することにより問題点の修正を積み重ねれば、ソフトウエアの安全性をより確かなものにすることが期待できる。

 加えて、多くのファジング・ツールは、実行中に人の操作を必要としないので、他の業務を行いながら、並行してテストを実施できるというメリットもある。また同じような入力データを想定した製品にはファズの流用や再利用が可能なので、ノウハウを積み上げることによってテストの労力や工数の削減が可能となる。