「IT業界には暗黙のヒエラルキーがある。設計ができない人はプログラマになり,プログラムを書けない人はテスター(テストを実施する人)になる。上流工程を担当する人ほど頭がよくて,下流工程になればなるほど知的労働から遠ざかる」

 皆さんは,単体テストや結合テスト,システム・テストといったシステム開発における「テスト」に対して,どんな印象をお持ちだろうか。記者は日経ITプロフェッショナル2004年6月号で,テストに関する特集「テスト技術のA to Z」を担当。そこで強く感したのが,IT業界に蔓延する“テスト軽視”の風潮だ。

 冒頭のコメントは,特集の取材で訪れた,あるITベンダーの品質保証部長の言葉である。すべてがそうではないと前置きしたうえで,「ここ数年,当社のシステム開発の現場でも,テストをきちんと実施していないケースが目立つ。そのために,バグが残ったまま運用に入り,システム障害につながっている。極論かもしれないが,プロジェクト・メンバーがテストは“汚れ仕事”や“後始末”ととらえているのではないか」と話す。

 メインフレーム時代のシステム開発経験を持つ,ベテラン・プロジェクト・マネジャーも,テスト軽視の現実を指摘する。「最近はテストを担当することになると,嫌がったり,肩を落とす人が多い。ざっとテストをしただけで,『バグは見付かりませんでした』と話す。どこかで“テストなんてアルバイトや新人がやる仕事”とか,“下請け会社に丸投げする仕事”という意識があるようだ」。

 多くのソフト開発関連書籍の翻訳を手掛けているあるITベンダーの部長は,こう嘆く。「昔の日本人は,品質,つまりテストへの意識が高く,逆に米国人はテストのような後ろ向きの仕事は嫌いで“明日の夢”を語っていた。それがいつの間にか,日本も米国式になってしまった。最近のITエンジニアは同値分割や境界値分析など,テストの基本中の基本も知らない人があまりにも多い」。

ずさんなテスト計画

 頻繁な仕様変更,外部接続の増加,多数のベンダー製品の組み合わせなどの理由で,現在では,システムの品質を確保するのはますます難しくなっている。もちろん,正確な要求定義やレビューの徹底といった上流工程の対策が品質向上のために重要なことは言うまでもない。しかし,「システムがこれだけ複雑になってくると,上流工程の対策だけではとても追いつかない。テストのための工数を十分に取り,厳密かつ効率的にテストを実施することが,品質を高めるカギになる」(先の品質管理部長)。
 
 にもかかわらず,多くのITエンジニアがテストの基本的な知識やスキルを身に付けていないと,どうなるか。最も大きな問題は,プロジェクト・マネジャーやリーダーが,テストのスケジュールやテストに関するリソース配分,テストの手法を決める「テスト計画書」が書けないことだ。

 テスト分野専門のあるコンサルタントは,「最初に予定した人月を食いつぶしていって,貯金がなくなるとその範囲でテストを実施するのが現場の実態。テストに関するスケジュールはあってないようなもの」と指摘する。「プログラムをたくさん作ったら,その分たくさんテストしないといけない。にもかかわらずテスト工程のリソースを増やさないケースが多い。さらに,テストの業務フローも現場では全然書けていない」(同)。これでは,行き当たりばったりのテストになり,結果としてシステム全体の品質が上がらないのは当然だ。

 もう1つの問題は,テストの知識がないために,外注先にテストを丸投げすることになる,ということだ。先のコンサルタントはこう説明する。「自分たちでテストができないから,必然的に外注に丸投げする。外注から戻ってきたレポートも判断できないので,そのまま受け入れてエラーが出る。自分が悪かったとは言えないので,『外注が悪かった』ことにして,瑕疵担保責任で外注に改修費を負担してもらうことになる」。

今こそ,教育に力を入れるべき

 なぜテストが軽視されるのか。最も大きな原因は,多くのITエンジニアが「仕様通りにプログラムを作りさえすればバグは少なくなるはず。このためテストにそんなに時間をかける必要はない」という考え方を持っているからではないか。

 問題なのは,この考え方を一部のユーザーも持っていることである。テストに詳しいガートナージャパンの丹羽正邦バイスプレジデントは,「ユーザー企業の間にも,こうした考え方が結構ある。だからテストに対してお金をかけるという感覚が薄い」と指摘する。この考え方は大きな間違いである。「どれだけ上流工程で品質を作り込んでも,バグはなくならない。さらに,バグは1個でも100個でもテストにかかる時間は同じ。つまり,設計・開発とテストは“ペア”として考えなければ全体の品質は向上しない」(先のコンサルタント)からである。

 “テストがお金を生み出さない”ことも,テスト軽視の原因の1つだろう。「ビジネスの世界では一般に,お金を稼ぐ人が評価されるもの。しかし,テスト作業はがんばればがんばるほどバグが発見されるので,プログラムの修正によるコストは膨らんでいく。そのうえテスト担当者は,一生懸命作った人に対して『こことここがおかしいから直してくれ』と言わなければいけない。当然,プロジェクトの中で,最も嫌われる立場になってしまう」(先のベテラン・プロジェクト・マネジャー)。

 ITベンダーや大学で,ソフトウエア・テストに関する教育がほとんど行われていないことも問題だ。「多くのベンダーでは,設計や開発の手法についてはまじめに教えるが,テスト手法についてはほとんど教えていない。さらに大学でもソフトウエア・テストの講義はほとんどない。加えて,メインフレーム時代に高度なテストのスキルを身に付けたベテラン・エンジニアが減ってきている。このため,テストのスキルを教えてもらえる頼りになるベテランも少ない」(先のコンサルタント)。

 相次ぐシステム障害の原因の1つに,ここで述べた「テスト軽視」の風潮と,それに伴うテスト技術の低下があることは間違いない。日本のITベンダーは,改めてテスト体制の強化やテストに関する教育に真剣に取り組むべきではないか。

(池上 俊也=日経ITプロフェッショナル)