ロゴ

テスト方法

開発方法論

開発したら必ずテスト!ホワイトボックスとブラックボックス、V字モデルの対応関係を押さえよう!

1

テスト方法

簡単にいうと

開発したら必ずテスト!ホワイトボックスとブラックボックス、V字モデルの対応関係を押さえよう!

① ホワイトボックステスト vs ブラックボックステスト

ソフトウェアテストの基本は、プログラムの内部構造に着目するか、外部からの入出力に着目するかによって2つに大別されます。

項目ホワイトボックステストブラックボックステスト
着目点プログラムの内部構造・論理外部仕様(入力と期待される出力)
目的すべての処理経路を網羅的に検証する仕様通りに動作するかを確認する
実施者開発者(コードを読める人)テスト担当者・ユーザ(コード不要)
網羅性高い(内部ロジックを直接確認)仕様に基づくため内部の漏れを検出しにくい
主な工程単体テスト結合テスト以降

ホワイトボックステストのカバレッジ基準として、命令網羅(すべての命令を最低1回実行)、分岐網羅(すべての分岐条件で真・偽の両方を実行)、条件網羅(すべての条件の真・偽の組み合わせを実行)があります。条件網羅が最も厳密で、命令網羅が最も緩い基準です。

② ブラックボックステストの技法

ブラックボックステストでは、入力データをどのように選ぶかが品質を左右します。代表的な2つの技法を見てみましょう。

同値分割法: 入力データの範囲を「同じ結果を返すグループ(同値クラス)」に分割し、各グループから代表値を1つ選んでテストする手法です。たとえば「1〜100の整数を受け付ける入力欄」の場合、有効同値クラス(1〜100)から代表値として50を、無効同値クラス(0以下、101以上)から代表値として-1と150を選びます。すべての値を試す必要がないため、テストケース数を大幅に削減できます。

境界値分析: バグは入力範囲の境界付近で発生しやすいという経験則に基づき、境界値とその前後の値を重点的にテストする手法です。先ほどの「1〜100の整数」の例なら、0, 1, 2(下限の境界付近)と99, 100, 101(上限の境界付近)をテストします。同値分割法と組み合わせて使うのが一般的です。

③ 工程順テスト(V字モデル)

V字モデルは、開発の各工程とテストの各工程を対応づけた品質管理のフレームワークです。左側が開発(設計)工程、右側がテスト工程で、V字の底がプログラミングです。

開発工程(左側)対応するテスト工程(右側)テスト内容
基本計画承認テスト(受入テスト)ユーザが要求通りの動作かを確認する
外部設計システムテスト(総合テスト)システム全体の機能・性能を検証する
内部設計結合テストモジュール間のインタフェースを検証する
プログラミング単体テスト個々のモジュール(関数・メソッド)単位で検証する

単体テストでは主にホワイトボックステストを行い、結合テスト以降は主にブラックボックステストを行います。

④ トップダウンテスト vs ボトムアップテスト

結合テストにおいて、モジュールをどの順序で組み合わせるかによって2つのアプローチがあります。

トップダウンテスト: 上位モジュールから順に統合していくアプローチです。まだ開発が完了していない下位モジュールの代わりに、スタブ(仮の下位モジュール)を使って動作確認を行います。スタブは呼び出されると固定の戻り値を返すだけの簡易プログラムです。

ボトムアップテスト: 下位モジュールから順に統合していくアプローチです。まだ開発が完了していない上位モジュールの代わりに、ドライバ(仮の上位モジュール)を使ってテスト対象の下位モジュールを呼び出します。ドライバはテスト対象を呼び出すための仮のメインプログラムです。

覚え方のコツ: 「ップダウンはタブ(ト↔ス、上から下へ下位が仮)」「トムアップはライバ(ボ↔ド、下から上へ上位が仮)」です。

⑤ 目的別テスト

特定の目的に応じたテスト手法も試験で問われます。

テスト種類目的・内容
回帰テスト(リグレッションテスト)プログラム修正後に、修正箇所以外の既存機能に悪影響がないかを確認するテスト。バグ修正や機能追加のたびに実施する
性能テストシステムの応答時間やスループットが要件を満たしているかを検証する
負荷テスト(ストレステスト)通常以上の負荷を意図的にかけ、システムの限界性能や安定性を確認する
ペネトレーションテスト攻撃者の視点で外部からシステムへの侵入を試み、セキュリティ上の脆弱性を発見するテスト
A/Bテスト2つの異なるバージョン(A案とB案)を同時に提供し、どちらがより効果的かを統計的に比較するテスト
αテスト開発組織内で実施するテスト。開発者または社内ユーザが対象
βテスト実際のユーザに製品を限定公開し、本番環境に近い条件でフィードバックを得るテスト

具体例

境界値分析の具体例を見てみましょう。

あるECサイトの年齢入力フォームで「18歳以上65歳以下のみ会員登録可能」という仕様があるとします。

同値分割法で分けると、次の3つの同値クラスになります。

  • 無効クラス1: 17歳以下(代表値: 10)→「登録不可」
  • 有効クラス: 18〜65歳(代表値: 40)→「登録可能」
  • 無効クラス2: 66歳以上(代表値: 80)→「登録不可」

境界値分析ではさらに境界付近を重点テストします。

  • 下限: 17(不可)、18(可)、19(可)
  • 上限: 64(可)、65(可)、66(不可)

特に18と65が境界値そのもので、ここでバグが発生しやすいです。たとえば「18歳以上」の条件を「> 18」と実装してしまうと、18歳が登録できなくなるバグになります。境界値分析はこうした「1つ違いのバグ」を効率よく検出できる手法です。

開発工程(左辺)とテスト工程(右辺)が対応するV字型の検証モデル図

V字モデル(開発工程とテスト工程の対応)

試験のポイント

  • 要は「単体=ホワイトボックス(開発者)、結合以降=ブラックボックス
  • トップダウン=スタブ、ボトムアップ=ドライバ
  • 回帰テスト=修正後の既存機能確認」
  • V字モデルの対応関係(基本計画↔承認テスト、外部設計↔システムテスト等)は表で覚えること
  • 同値分割と境界値分析はセットで出題されやすい

独学で診断士合格を目指すなら

過去問演習・AI添削・テキストPDFまで

すべて揃ったプレミアムプランで合格を掴む!

予備校代の1/10以下で、独学の不安をまるごと解決

  • 📝1次試験 過去問演習(全7科目・年度別)無制限プレミアム限定
  • 🤖2次試験 AI添削(事例I〜IV・無制限)最適なフィードバックで実力アッププレミアム限定
  • 📄科目別テキストPDFダウンロード。印刷して好きな使い方で学習できるプレミアム限定
  • 🔖ブックマーク機能で苦手分野・何度も確認したい部分を管理プレミアム限定
  • 📊学習記録・成績管理で自分の進捗を可視化プレミアム限定

プレミアムプラン

¥9,800(税込)

買い切り

自動更新なし / 1年間有効

決済は Stripe(PCI-DSS準拠)で安全に処理されます。カード情報は当サービスに保存されません。