ソフトウエアの自動テスト
トップページ Unix Cygwin Vim WindowMaker Zsh テスト H.O,K. curry 日記


ソフトウエアのテストに関して, 記述します.

自動テストの意味

自動テストを作成しておくことは, ソフトウエアを 保守する上で大変重要な武器になります.

ここでいう自動テストとは, "1コマンドで組み込まれているテストを実行し 検証を行い, 検証結果を表示してくれるプログラム" を指します.

通常ソフトウエアは, 開発=>保守=>破棄 の段階をたどりますが, ソフトウエアの自動テストをあらかじめ作成しておくことにより. 保守の期間を延長できると考えられます. (ただし, 開発期間で自動テストを作成する工数が発生するのも事実です. )

私の実践しているテスト

私が実践しているテスト方法に関する記述です.

最善ではないにしろ, 手頃に行えます.

私の実践しているテスト

テストを計画することの必要性 (2006/01/14 追加)

最近、勤務先のチーム内の方針で、「外部仕様書を記述後に、 テスト仕様書を作らなければならない」くなった。

コーディングに入る前に、テストを作ってしまうこと (テスト仕様書ファースト)に、 当初は反対していたのだが、1プロジェクトを完了して、 「テスト仕様書ファースト」が有効に働くことが分かった

1点目に、テストの構造化である。

テスト仕様書ファーストの前は、 コードをつくりながら、テストケースを作成していた。

しかし、これではテストが構造化(階層化)されず、 大量のテストに洩れがあるのか?重複があるのかすら 分からなくなってしまう。

始めにテスト仕様書を、「理解できるように記述すること」 で、上記の問題は大幅に改善された。

(後できっちり、テスト仕様書を作成すればすむだけの話かもしれないが...)

2点目に、コーディング中の後戻り工数の削減である。

私自身せっかちで、正常系のケースをさきに動かしたいと思っている。 しかし、これが落し穴で、入力チェックなどを後回しにするがために、 正常系のテストがうまくながれず、プログラムの先頭から デバッグする羽目になる。

ところが、テスト仕様書にエラーケースのテスト項目を記述していると、 そこからまずコーディングして、テストコードを構築しようとする。

結果、コーディングフェーズの後ろで正常系テストを構築し、 入力エラーでのバグなど気にせず、正常系テストを行えるようになる。

Webの自動テストについて(2006/2/11追記)

「私の実践しているテスト」で紹介した自動テストは、 コマンドライン型の非対話プログラムで作成した。

では、Webの自動テストはどのように行えばよいだろうか?

大まかなWebの仕組は

[クライアントからの入力データ] + [データベースなどのサーバ内部データ]
     => [クライアントでHTMLの取得] + [データベースの更新]

である。(その他プラスされる機能もあるが,,,)

であれば、以下の仕組でWebの自動テストを実行できることになる。

1) サーバデータ(データベース等)の初期化処理
2) クライアントからの入力データ送信+HTML取得(を非対話式に行う)
3) クライアントで取得したHTMLの検証(前回取得のHTMLとのdiff)
4) サーバデータ(データベース等)の検証

このうち「2) クライアントからの入力データ送信+HTML取得(を非対話式に行う)」 で使用できる技術を以下に紹介する。

httpプロトコルを扱うライブラリ。ベーシック認証なども簡単に使える。

cookieを扱う方法が記述されていないのが残念...

Perlによる、Webコンテンツのテストモジュール。

httpはSoketが使えれば、自分でも実装が狩野であるが、 できるだけ手間がかからないようなテストプログラムを作るのに、 上記ツールなどはやくにたつのではないだろうか?

リッチなテストツール (2006/2/11追記)

世の中には、市販/フリーソフトを含め、 Webブラウザで自動回覧するだけで、テストケースを作ってくれるツールも 存在する。(TestRunnerなど)

ただ、これらのツールを使うには、使い方を覚える必要があり、 これらのツールの使い方を覚えたところで、他のツールの事は分からない。

それに比べ、「私の実践しているテスト」で紹介した方法は、 Unixさえ知っていれば、実践でき、テスト作成で学んだテクニックは、 様々な場面で適用可能になる。

あなたのプロジェクトでも、まず正常系テストのみでも、 これらのテストを作成してみてはいかがであろうか?

参考文献

eXtreme Programing

連絡は, sakaihdt@d2.dion.ne.jp までどうぞ.


トップページ Unix Cygwin Vim WindowMaker Zsh テスト H.O,K. curry 日記