機能単位でモジュールを結合し,それらが正しく動作することを確認する結合テスト(機能テストとも呼ぶ)。システムの複雑化や頻発する仕様変更に伴う回帰テストなどによって,その工数は膨らむ一方だ。そのためシステム開発の現場では,結合テスト・ツールを使って,テスト作業を効率化する動きが広がっている。

 ところが,ツールを導入したにもかかわらず「ツールの投資コストが回収できない」「逆にテスト工数が増加した」という声が相次いでいる。製造業A社の情報システム部で,開発チームリーダーを務める岸本裕司氏(仮名)もその1人。岸本氏は新規開発プロジェクトにおいて,結合テストの約6割を自動化すれば,120万円の結合テスト・ツールの投資コストを回収できると考えた。ところが,目標の「6割」のカバー範囲は達成したものの,テスト工数は予定の約1.5倍に膨らみ,ツールの導入効果は得られなかった。

 実は,結合テスト・ツールほど適用が難しいツールはない。「多大な時間をかけてテスト・スクリプトを作る必要があるため,効果が出やすいテストとそうでないテストがある」(エンピレックス エンタープライズ・ソリューション・グループ マネージャー 浦口宗也氏)からだ。では,効果が出やすいテストとはどんなテストなのか。

 一つは「テスト・スクリプトの作成が楽なテスト」である。結合テストには大きく「入力に対する出力結果を確認するテスト」と「動作を確認するテスト」がある。このうちテスト・スクリプトの作成が楽なのは,後者の動作を確認するテストだ()。テスト・スクリプトは通常,キーボードやマウスの操作を記録して自動作成する。画面遷移の確認など,動作を確認するテストではこのスクリプトをそのまま使えばいい。だが,入力に対する出力結果を確認するテストでは,テスト・スクリプトの中に「入力値」と「出力値」を設定する必要がある。この作業がテスト・スクリプトの作成工数を増加させる主な原因である。

図●自動化して効果が出にくい結合テストと,効果が出やすい結合テスト
図●自動化して効果が出にくい結合テストと,効果が出やすい結合テスト
結合テストは大きく,入力に対する出力結果を確認するテストと,動作を確認するテストに分かれる。企業情報システム開発における結合テストの大半を占める前者のテストは,入力値と出力値の設定などテスト・スクリプトの作成に高度なスキルと多大な時間を要するため,自動化の効果が出にくい
[画像のクリックで拡大表示]

 企業情報システム開発では,動作を確認するテストよりも,入力に対して正しい出力結果を得られたことを確認するテストの方が多い。動作を確認するテストは約3割に過ぎないという指摘もある。先の製造業A社の例でテスト工数が膨れ上がったのは,入力に対する出力結果を確認するテストにもツールを適用したことが原因だった。

 結合テストの効果が出やすいもう一つのテストは,「同じテスト・スクリプトを何度も繰り返して適用するテスト」である。テスト・スクリプトの作成に時間がかかるだけに,再利用率を高めなければメリットを得にくいわけだ。繰り返しの目安は「4回以上」(浦口氏)。4回以上実施する場合は,入力に対する出力結果を確認するテストでも効果が出るという。これら二つの条件を満たすテストは,企業情報システム開発では,実はそれほど多くはない。むしろパッケージ・ソフトや組み込みソフトの開発で効果を発揮しやすい。