単体テストを組み込み,XPに対応
図3●単体テストのツール「JUnit」が提供する機能 単体テスト用のプログラム開発を支援する機能やテストの確認作業を簡略化する機能などがある |
JBuilder 6 Enterprise EditionやStructureBuilderは,クラス間の関連をビジュアル化すると同時に,設計ツールと開発ツールとの連携も実現している。
これら以外にも,開発工程で使うツールを統合する動きが活発だ。(1)開発ツールにテスト支援機能を加える,(2)1つの製品で設計からテストまでの機能を提供する,(3)IDE(統合開発環境)部分をオープン・ソースにし,複数ツールの統合化を図る――といった動きがある。
開発ツールにテスト支援機能を組み込む動きは,「XP(eXtreme Programming)*」という開発手法の影響が大きい。この手法の特徴の一つに,「プログラム・コードの作成前にテスト・コードを作成する」というものがある。
XPでは単体テストの重要性が強調され,また,単体テストを支援するツールも提供されている。オープン・ソースの単体テスト支援ツール「JUnit(http://www.junit.org/)」がそれである(図3[拡大表示])。JUnitは,JBuilder 6や米Sun Microsystemsの「Forte for Java」などと統合的に使うことができる。通常の単体テストは,(1)テスト対象となるプログラムを呼び出すテスト用プログラムを作成し,(2)そのテスト用プログラムを実行して結果を判定する,という両作業をプログラム・ファイルごとに行う。
JUnitは,この両方の作業を支援する。単体テストの支援といっても,テスト仕様やテスト用のプログラムが自動生成されるわけではない。テスト用コードの書き方を統一し,テスト作業の繰り返しをできるだけ簡単にすることが目的である。
JUnitで単体テストする場合,「TestCase」というクラスを継承する,テスト・メソッドは「testXXX()」という名称にするといった決まり事がある。この決まり事に従って作成しておけば,後で第三者が見ても理解しやすい。決まり事に基づいて作成したテスト・プログラムは「TestRunner」というツールで実行する。開発ツールにJUnitを組み込めば,TestRunnerをIDEのメニューから呼び出せるようになる。
単体テストはソース・コードを変更するたびに行う必要があるので,テスト用のプログラムはきちんと管理しておかなければならない。単体テストは結構面倒なもので,これら一連の作業を支援するツールの効果は大きい。
設計,開発ツールを1つにまとめる
設計,開発,テストで別々のツールを使うのではなく,最初から1つの製品になっていれば,ツール間の連携の問題は起きない。
米TogetherSoftが開発したTogether ControlCenterは,(1)JavaやC/C++など複数の言語に対応したプログラム開発機能,(2)複数のWebアプリケーション・サーバーに対応したプログラムの配布機能,(3)UMLのモデリング機能,(4)データベースの設計機能などを,1つの製品で提供する。複数製品の寄せ集めではないため,ツール間における連携の問題は発生しない*2。
米IBMは,米TogetherSoftとは異なるアプローチで設計,開発,テスト機能の統合を図る。同社は開発ツールのオープン・ソース・プロジェクト「Eclipse(http://www.eclipse.org/)」に,Java開発ツール「VisualAge for Java」のIDE(統合開発環境)とJavaの開発機能の部分を提供した。その狙いはずばり,共通のIDEで設計からテストまでできるようにすることだ。
EclipseのIDE上で利用できるように設計ツールやテスト・ツールのベンダーが製品を提供し,それらを一緒に使えば,あたかも1つのツールで設計からテストまでの機能を使うことができるようになる(図4[拡大表示])。Eclipseには,英MERANTや米Rational Softwareなどが参加している。