テストレベル (単体・結合・システム・受入) と V 字モデルの対応を押さえます。
テストレベルは 単体テスト → 結合テスト → システムテスト → 受入テスト の順に粒度が上がります。
結合テストって、いろんなやり方があるって聞いたよ…
そうそう。
トップダウン (上位から、スタブで下位代用)・ボトムアップ (下位から、ドライバで上位代用)・サンドイッチ (両端から)・ビッグバン (全体一気) の4方式があるのよ。
回帰テスト って何ですかぁ?
Regression Test ですね。
変更で既存機能に影響がないかを確認するテストで、CI/CD の自動テストの中心はこれです。
AP では『この説明はどのテスト種別か』『スタブとドライバの違い』が頻出ということね。
障害の見つかる範囲でテストレベルを判定する
会員登録機能を例に、検証範囲を広げてみます。入力値検査関数だけを確認するのは単体テスト、画面から会員API、データベースまでの受渡しを確認するのは結合テストです。メール送信や性能、障害復旧も含むサービス全体を仕様どおりに確認するのはシステムテスト、実際の利用者が業務シナリオと受入条件に照らして検収するのは受入テストです。設問では「誰が行うか」だけに頼らず、検証対象の境界と判定基準を先に探します。
| テストレベル | 主な検証対象 | 代表的な不具合 |
|---|---|---|
| 単体 | 関数・クラス・モジュール内部 | 分岐漏れ、計算誤り |
| 結合 | モジュール間のインタフェース | 形式違い、呼出順序、データ受渡し |
| システム | システム全体と非機能要件 | 性能不足、障害時の連携不良 |
| 受入 | 利用者の業務要件・契約条件 | 業務手順との不一致 |
スタブとドライバを呼出方向で見分ける
トップダウンでは上位モジュールから試すため、まだ存在しない下位モジュールの応答を返すスタブが必要です。ボトムアップでは下位モジュールから試すため、それを呼び出す上位側の代役であるドライバを使います。「呼ばれる下位の代役=スタブ」「呼び出す上位の代役=ドライバ」と動詞で覚えると逆転しません。ビッグバン方式は代用品を減らせますが、全体を一度に結合するため障害箇所の切分けが難しくなります。
変更後に以前の機能が壊れていないかを再確認するのが回帰テストです。修正箇所そのものが直ったかを確かめる再テストと混同しないようにします。典型誤答は「トップダウンだから上位を代用する」と名称だけで推測すること、また受入テストを単に最後のシステムテストと捉えることです。前者は未完成側、後者は判定主体と受入条件を確認すれば除外できます。
確認クイズ
結合テストの『トップダウン方式』の特徴として、最も適切なものはどれか。
- 下位モジュールから順に組み立て、ドライバで上位を仮実装する
- 上位モジュールから順に結合し、未完成の下位モジュールはスタブで代用する
- 全モジュールを一度に結合してテストする
- 中間層から始めて両端に広げていく
こたえを見る
正解: 2. 上位モジュールから順に結合し、未完成の下位モジュールはスタブで代用する
トップダウン方式は上位モジュールから順に結合し、まだできていない下位モジュールをスタブ (空の仮実装) で代用します。早期に全体構造を確認できる利点がある反面、低レベルの不具合発見が遅れがちです。