ソフトウエアの自動テスト |
トップページ | 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 | 日記 |