テストの本質を探る ――30年の歴史を持つ 「ソフトウェア工学」の知恵に学ぶ
●テストの基本は「網羅すること」
ここまでで述べた方法のうち,1)のパス・テストは,プログラムの構造に着目するホワイトボックス・テストです.2)のトランザクション・フロー・テストは処理の流れに着目するという点で,(プログラムの詳細は見ないものの)ホワイトボックス・テストの仲間です.一方,3)のドメイン・テストは,プログラムの中身に着目して領域分割を行うのであればホワイトボックス・テストですが,仕様に定義してある機能から領域分割を行うのであればブラックボックス・テストに分類されます.4)の遷移テストは,主としてブラックボックス・テストとして利用されるケースが多いようです.
もちろん,ここまでに示したもののほかにも,多くのテスト手法が存在します(ここまでは,主としてプログラムが満足すべき機能の確認のためのテストについて述べた).パッケージ製品の場合,例えば,αテスト,βテストといった異なった立場のテスト担当者によるテストが行われています.また,品質特性は製品によってさまざまなので,必要に応じて(つまり製品特性に応じて)テストが行われることになります.これらのほかに,どのような方法がソフトウェア開発に利用されているのかを表1に簡単にまとめておきます.
しかし重要なことは,どのようなケースであっても,基本となるテストの考えかたは「(可能な限り)網羅する」ということで一貫しています.
〔表1〕テストの種類
大分類
|
テストの種類
|
内 容
|
規模による 分類 | 単体テスト | 通常はコンパイル単位(モジュール)のテストになる.ホワイト ボックス・テストがよく用いられる |
組み合わせテスト | 単体テスト終了済みのモジュールを組み合わせたものに対するテスト | |
結合テスト | 組み合わせテストと同じ意味で用いられることもあるが,一般に は,ハードウェアとソフトウェアの結合や,ほかのシステム との結合によるテストを指す | |
システム・テスト | 納品するソフトウェアに関する全体的なテスト | |
機能以外の 各品質特性 ごと | 性能テスト | 性能に関するテスト |
負荷テスト | 想定される規模(データ量)や稼働時間において,問題が生じないかどうかを確認するテスト | |
ユーザビリティ・テスト | 使い勝手に関するテスト | |
繰り返し | 回帰テスト | プログラムの変更/修正の副作用として,これまで正しく機能し ていた部分に影響を与えないかどうかのテスト.リグレッション (regression)テストや縮退テストと呼ばれる場合もある |