ファズテスト――シンプルだが強力なコードテスト手法:1分ショートレビュー
堅実なコードとは、一貫性と正常性が検証されていない外部データは決してプログラムに入力しないという原則を守るものである。プログラム内のバグの存在を実証できるファズテストは、論理的な人間には思いもよらないバグを見つけ出してくれるかもしれない。
ここで紹介する記事は、developerWorksの「ファズ・テスト」です。
ファズテスト。このテストがどういったテストか想像できるだろうか。非常に単純な手法でありながら、プログラムに潜む重大なバグを明らかにできるという意味で同テストの影響は計り知れない。
ファズとはランダムな不良データのことで、これを用いてプログラムを攻撃し、どこに障害が発生するかを調べるのがファズテストである。例えば、ファイルの一部をランダムデータに置き換えるだけでなく、ファイル全体のランダム化、ファイルをASCIIテキストまたは0以外のバイトに制限することもできる。
本稿の著者は、Microsoft Wordを例に挙げ、クラッシュさせる可能性のあるエラーファイルの多さと、なぜWordでは不良データを受け取ったときにそれを認識して、エラーメッセージを表示させないのか、少数のビットがいじられたからといって、Word自体のスタックとヒープが壊れてしまうのはなぜなのかと疑問を提起し、ファズテストの必要性を説いている。
ランダムデータに対するプログラムの脆弱性はどう解消すべきかを解説した本稿では、もっとも簡単な方法としてチェックサムの付加を、さらに入力に関して何も仮定しないというXMLパーサの特性から、XMLでのデータ保管を推奨し、ランダムデータに対するプログラムの脆弱性を解消するための防衛的コーディング手法を解説している。
筆者は、さらに次のステップへの道標も示してくれている。それは、コードを守るための決定的手法は、コードクラッカーとしての思考を持つことであるという逆説的なものであるが、この訓練こそが、不測の入力に対して堅固でセキュアなアプリケーションを作り上げるのだ。
ここで本稿を取り上げたのは、ファズテスト自体の内容もさることながら、こうしたコードの品質を追求するためのドキュメントとして、以下のような記事へのポインタとなっているためである。
今日のコードテスト手法をテーマにした上記連載は、テスト技術者であれば目を通しておきたい。
ここで紹介した記事は、developerWorksの「ファズ・テスト」です。
関連記事
- developersLife〜開発者という生き方
- Webアプリケーションの開発手法で「早くてキレイ」はRuby on Railsか
「美しいが作るのに時間の掛かる」「汚いが早く作ることができる」――Webアプリケーションの開発手法としてあなたが選択したいのはどちらか? 答えはどちらでもない。Ruby on Railsはある考えに沿って進める限りにおいて「早くて美しい」開発手法を提供してくれるのだから。 - makeに踊らされないために――makeを思いどおりに動作させるためのヒントと秘訣
makeを支配するには、makefileの理解が欠かせない。暗黙のルールや予期せぬ変数置換に惑わされることのないよう、先人の残した幾つかの知恵を授けよう。 - XAMPPはJ2EEの競合に育つか?
最近、「XAMPP」という言葉を目にする機会が多くなった。Apache、MySQL、PHP、Perlなどをワンパッケージで利用できるソフトウェアスタックだが、開発環境としては非常に便利である。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.