#テストレベル
ソフトウェアの開発工程モデルや、テストの目的、テストの対象、
参照するテストベース(インプットとなるドキュメント等)などにより、
テストのレベルを設定する。
V字開発モデルでは主に以下のレベルでテストを分類する。
・単体テスト
・結合テスト
・システムテスト
・受け入れテスト
##1.単体テスト
ユニットテスト(UT)、コンポーネントテスト、プログラムテスト、モジュールテストとも呼ばれる。
テストが可能な最小部品単位(ソフトウェア、モジュール、クラス、メソッドなど)に分割し、
一つ一つの部品が期待通りに動作することを確認するテスト。
システムの他の部分から切り離したテストが可能であり、
その場合、スタブやドライバ、シミュレータなどを使う。
また、自動化ツールを用いて自動化されたテストのことを指す場合もある。
##2.結合テスト
インテグレーションテスト(IT)、統合テスト、連結テストとも呼ばれる。
単体テストで確認した部品を、システム内の他の部品、OS、ファイルシステム、
ハードウェアなどと組み合わせた場合の相互処理や、
他システム間とのインターフェースを確認するテスト。
結合テストは適用範囲の分類により、以下のように分類できる。
・インターフェースに特化したテスト
・結合した状態でのブラックボックステスト
また、結合テストは実施方法により、以下のように分類できる。
・トップダウンテスト
・ボトムアップテスト
###2.1.インターフェースに特化したテスト
単一モジュールの確認は単体テストで完了しているので、
インターフェースのプロトコルやメッセージのやりとりに特化して確認するテスト。
シーケンス図などに従った入出力において、正しいパターンやあり得ないパターンの通信を
受けた時の動作が妥当かどうかを確認する。
###2.2.結合した状態でのブラックボックステスト
単一モジュールを、他のモジュールとの連動や組み合わせによって表現される機能に対してのテスト。
あるモジュールが出した命令を受けて、期待通りに次のモジュールが動くこと、
正しい通信を返すこと、期待通りの性能を発揮することなどを確認する。
###2.3.トップダウンテスト
上位モジュールからテスト対象を呼び出して動作を確認するテスト。
下位モジュールには必要な値を返すだけの仮モジュール(スタブ)を使用する。
メインモジュールやモジュール間インターフェースに対して、早い段階でのテストが可能となる。
###2.4.ボトムアップテスト
モジュール構造において、上位にあたるモジュールを仮生成して下位モジュールから呼び出すテスト。
上位のモジュールにはテスト対象を呼び出す仮モジュール(ドライバ)を使用する。
##3.システムテスト
最終的なシステム構成や運用、構成データと可能な限り同じ環境で、
操作マニュアルや機能要件、非機能要件などの要求仕様の確認をするテスト。
システムテストには、リスク、または ビジネスプロセス、ユースケース、その他システム動作を高レベルで記述したテキストもしくはモデル、オペレーティングシステムとの相互作用、システムリソースなどの要求仕様に基づいたテストがある。
##4.受け入れテスト
受け入れテストは、システム全体または一部や、非機能的な特性が正しいことを確認するテストで、
システムを使う顧客やユーザが実施することが多い。
受け入れテストは以下の形がある。
・ユーザ受け入れテスト
・運用受け入れテスト
・契約による受け入れテスト
・アルファテスト
・ベータテスト(フィールドテスト)