これまでのソフトウェアエンジニアリングの歴史の中でも、テストをうまくやり遂げるための方法はいくつも提案され、実証されています。主なものとしては次のようなものが挙げられます。

テストレベルに分割し段階的にテストを行う

テストレベルとは、いわゆるコンポーネントテスト、統合テスト、システムテストのことを指します(図1)。

図1 V字モデル

何事においても、一度にいろんなことをやろうとすると訳がわからなくなるものです。「要求を満たしていることを確認するのか」「仕様と合致していることを確認するのか」、はたまた「設計で意図した通りに実装できているか」……これらを整理して少しずつテストしていく方が、結果的にテスト数も少なくなります。また、段階的にテストを行っていくと、開発の流れに合わせてできたものをより早くテストできます。これにより、問題の切り分け(デバッグ)が容易にできることもメリットとして挙げられます。

複数の視点でテストを行う

ソフトウェアをテストする場合は、テスト対象を複数の視点で見ることが大事です。視点の種類として、機能(ブラックボックステスト)、構造(ホワイトボックステスト)、非機能要件(性能テストや障害復旧性テストなど)の視点があります(図2)。これらの複数の視点でテストを行うことでテスト漏れを減らすことができます。

図2 テストに必要な複数の視点

レビューを実施する

テストを実施するまでもなく見つけることができる欠陥の有無によって、テストの効率は大きく変わってきます。

例えば、「売上金額を入力すると消費税を算出し、表示する」とだけ仕様書に書かれていたとしましょう。これだと小数点以下をどのように処理するのかがわかりませんので、実装したソフトウェアをテストした時に何が正解なのかがわかりません。例外が発生した時にどうなるかも不明です。このような問題はレビューで見つけた方が効率的です。

開発した本人以外がテストを行う

開発した本人は、考えに考え抜いた上で、自分が正しいと思ったことを設計し、実装しています。たとえそれが誤解に基づいた設計・実装だとしても、本人はそれを正しいと思って設計・実装を進めます。開発した本人がテストをすると、誤解したままテストを進めてしまう可能性が高くなります。ですから、違う人の目で、正しく動くことを前提に考えずにテストをした方が不具合を見つけやすいと言われている訳です。

テスト戦略はプロジェクトに応じて変える

テスト戦略の立案は、前回紹介した「テストレベルに分割し段階的にテストを行う」「複数の視点でテストを行う」「レビューを実施する」「開発した本人以外がテストを行う」という4つの方法を具体化すればいいのですが、常に同じというわけにはいきません。開発プロジェクトごとに異なるカスタマイズが必要になります。これは主に、顧客要求と開発プロセスの2つが要因となります。

まず、顧客が求める品質要求によってテスト戦略は異なります。銀行システムのようなミッションクリティカルなシステムでは、不具合が莫大な損失をもたらしますので、テストも念入りに行います。高負荷条件でシステムがダウンしないかどうかをテストする必要もあるでしょうし、クロスチェックの意味も込めて、テストレベル間で同じテストを複数回実施するアプローチも有効になってくるでしょう。

一方、ユーザーが数名程度のシステムに対しては、無駄に同じテストを何度も実施してしまわないようにするためのアプローチが必要になります。数千ユーザーがアクセスしてもシステムがダウンしないかどうかをテストする必要もないでしょう。

また、開発プロセスによっても戦略は異なります。テストレベルを分割して段階的にテストを行うにしても、開発プロセスと合わせるようにテストレベルを構築し直さないといけません。

例えば、イテレイティブな(繰り返しの多い)開発プロセスでは、コンポーネントテスト・統合テスト・システムテストといった単純な分割では現場に適用できない可能性があります。

これらの条件を考慮し、開発プロジェクトの中で「どういう役目を果たせば、テストをうまくやり遂げたといえるのか」を明らかにしてからテスト戦略を導き出します。

執筆者プロフィール

湯本剛 (Tsuyoshi Yumoto)
株式会社豆蔵 シニアコンサルタント。1991年に製造メーカーに就職し、原価管理、製品管理システム構築プロジェクトに参画。その後、ソフトハウスにてパッケージソフト、プリンタドライバ、C/Sシステム、Webシステムなどソフトウェアテスト業務に携わる。現在は豆蔵にてソフトウェアテストのコンサルタントとして活動中。日本科学技術連盟SQiPステアリング委員、JSTQB技術委員、s-open幹事、NPO法人ソフトウェアテスト技術振興協会理事。

『出典:システム開発ジャーナル Vol.2(2008年1月発刊)
本稿は原稿執筆時点での内容に基づいているため、現在の状況とは異なる場合があります。ご了承ください。