This shows you the differences between two versions of the page.
— | jp:testsuite [2008/02/08 19:49] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== テスト・スイート ====== | ||
+ | |||
+ | ===== テスト・スイートとはなんですか? ===== | ||
+ | |||
+ | テスト・スイートとは、POPFile のコードすべての行のテストを可能にするスクリプトとファイルの集まりのことです。プログラマはみんな知っているように、プログラムに機能を追加したり、バグを修正したときでさえ、無関係に見えるコードが動かなくなってしまう場合があります。テスト・スイートは、POPFile が予定どおりに動くことを確認することで、バグを防ぐ助けとなります。 | ||
+ | |||
+ | ===== 必要条件 ===== | ||
+ | |||
+ | ==== テスト・スイート ==== | ||
+ | |||
+ | テスト・スイートを構成するファイルが必要です。これは、CVS で入手します。 | ||
+ | これらのファイルは普通に POPFile をダウンロードしても入っていません。 | ||
+ | |||
+ | POPFile engine について、チェックアウトあるいはアップデートします: | ||
+ | |||
+ | < | ||
+ | cvs -d: | ||
+ | cvs -z3 -d: | ||
+ | </ | ||
+ | |||
+ | (もしエラーが起こったときは、何度か試してみてください。sourceforge への匿名での CVS へのアクセスは、よく混んでいます) | ||
+ | |||
+ | ==== ツール ==== | ||
+ | |||
+ | テスト・スイートを実行したり、あなたが作ったパッチについてのテストを作成したりするためには、いくつかのツールが必要です。特に、以下のプログラムが必要です: | ||
+ | * Perl | ||
+ | * Make | ||
+ | * rm | ||
+ | * cp | ||
+ | Perl はすでにインストールしてあると思いますが、他のツールが必要ならば、[[: | ||
+ | |||
+ | ===== テスト・スイートの実行方法 ===== | ||
+ | |||
+ | コマンドライン / コンソールウィンドウを開いて、POPFile とテスト・スイートがインストールされたディレクトリに移動して、以下のように入力します: | ||
+ | < | ||
+ | これによって、**すべての**テストが実行されます。テストにはしばらく時間がかかります。 | ||
+ | |||
+ | 特定のテスト(例えば、特定のモジュールについてのテスト)を実行したい場合は、以下のようにします: | ||
+ | < | ||
+ | これによって、ひとつのモジュールについてのテストが実行されます(テストが存在する場合だけ)。モジュール名は大文字小文字を区別することに注意してください。 | ||
+ | |||
+ | === 注意 === | ||
+ | Windows で、cygwin パッケージを使用していない場合は、// | ||
+ | < | ||
+ | Windows の //rm// は、(unix のものとは) 違い、テスト・スイートがエラーなく通過するために削除しなければいけないディレクトリを削除しないのです。 | ||
+ | |||
+ | ===== どのようにして動くのか ===== | ||
+ | |||
+ | 上記のコマンドのどれかを実行したとき、make は POPFile ディレクトリにある " | ||
+ | |||
+ | この .tst ファイルは、実際には Perl のスクリプトです。これらのスクリプトは POPFile と必要なモジュールを起動させ、テスト作業を行い、POPFile を終了させます。 | ||
+ | |||
+ | この " | ||
+ | |||
+ | 最初の 2 つは //" | ||
+ | |||
+ | < | ||
+ | |||
+ | // | ||
+ | |||
+ | < | ||
+ | |||
+ | // | ||
+ | |||
+ | < | ||
+ | |||
+ | この例は TestBayes.tst で使用されているものです。これは、ある正規表現がある文字列にマッチすることを主張しています。ここでは、$temp に含まれる文字列が ' | ||
+ | |||
+ | // | ||
+ | |||
+ | ===== どのようにして動くのかについての詳細 ===== | ||
+ | |||
+ | engine ディレクトリには Makefile があります。これはいろいろなことができますが、その中に、test と coverage という 2 つのターゲットがあります。これらはいずれも tests/ ディレクトリの Makefile に渡されます。このファイルが、これらのターゲットに対してなにをすればよいのかを知っているのです。 | ||
+ | |||
+ | ですから、engine ディレクトリで make test と入力した場合、tests/ | ||
+ | |||
+ | tests.pl は tests/ ディレクトリの中でファイル名が .tst で終わるファイルを探します。これらのファイルは POPFile のモジュールに関連づけられています(例えば、TestWordMangle.tst というテストは、WordMangle.pm というモジュールに関連づけられています)。tst ファイル(通常は Perl スクリプトそのものです)の中には、test_assert や test_assert_equal といったアサーション(成立すべき条件)が含まれていて、それらは何かが真でなければならないということを調べるために使用されます。 | ||
+ | |||
+ | 例えば、TestWordMangle.tst には、以下のようなアサーションがあります:< | ||
+ | test_assert_equal( $w-> | ||
+ | test_assert_equal( $w-> | ||
+ | test_assert_equal( $w-> | ||
+ | test_assert_equal( $w-> | ||
+ | test_assert_equal( $w-> | ||
+ | test_assert_equal( $w-> | ||
+ | </ | ||
+ | |||
+ | それぞれの行は、mangle() API を調べて、正しい結果が出力されるかどうかを確認しています。もし正しい結果が出力されなければ、tests.pl はそれをメモしておいて、最後に詳しいエラーメッセージを表示します。もし問題がなければ、tests.pl は単に数を覚えておきます。 | ||
+ | |||
+ | 最後に、tests.pl は実行結果を要約したものを出力します。 | ||
+ | |||
+ | ===== 補償範囲 (Coverage) ===== | ||
+ | |||
+ | できるすべてのテストを行ったことを示すために、補償範囲のオプションがあります。 | ||
+ | これは、POPFile のソースファイルで、テスト・スイートによって実際に実行された | ||
+ | 行数の割合を数えます。実行するにはgmake coverage を行うと、テスト・スイートが実施され、どの行が実行されたかを記録します。 | ||
+ | 最後に、実行された行数に関するサマリーが出力されます。 | ||
+ | 目標は、POPFile のソースの100%がテストされることです ( とても大変な目標です )。 | ||
+ | 最後に、テストされたファイル毎に HTML ファイルを書き出し、 | ||
+ | 実行された行数とそうでない行数を知ることができます。ここに MailParse.pm の例があります: | ||
+ | http:// | ||
+ | |||
+ | [[: | ||
+ | |||
+ | [[: | ||
+ | |||
+ | [[:jp | POPFile ドキュメンテーションプロジェクト]] | ||
Should you find anything in the documentation that is incomplete, unclear, outdated or just plain wrong, please let us know and leave a note in the Documentation Forum.