ソフトウェアテストの種類とは?ホワイト/ブラックを解説

ソフトウェアテストの種類とは?ホワイト/ブラックを解説

ソフトウェアテストの種類が多くて整理できない初心者のイメージ
「テストの種類が多すぎて、頭に入らない」
「ホワイトとブラック、どっちがどっち?」
「V字モデルって、何がうれしいの?」

種類の多さでつまずくなら、分け方はたった1つで足ります。

ソフトウェアテストとは、プログラムが要求どおり動くかを確かめる活動のことです。技法は、内部構造を見る「白」と、外部の仕様で試す「黒」に大きく分かれます。設計図(コードの中身)を見て確かめるか、外から触って確かめるか——この2視点さえ掴めば、あとの技法は枝葉です。

 

この記事では、まず2視点の分かれ目を押さえ、白の網羅基準を強さ順に並べ、黒の同値分割と境界値分析を具体値で動かします。最後にV字モデルで工程と結び、試験で狙われる角度まで示します。基本情報のマネジメント系・開発技術にそのまま効きます。

 

1. テストはなぜ2つの視点に分かれるのか

内部構造を見る白と外部仕様で試す黒に分かれるイメージ

あなたが最初に持ち帰るべきは、テストの目的が「欠陥を早く見つけ、要求との一致を確かめる」点にある、という一点です。1つの技法で全部の欠陥はさばけません。だから視点の違うテストを重ねます。

 

その視点を分けるのが、プログラムの中身を見るか見ないかです。中身の分岐やループを開いて確かめるのがホワイトボックス、中身は伏せたまま「入れたら何が出るか」で確かめるのがブラックボックス。あなたが同じプログラムを、裏から見るか表から見るかの違いだと捉えると、名前の暗記に頼らずに済みます。

 

腕時計の点検を思い浮かべてください。裏ぶたを開けて歯車の噛み合わせを見るのが白、文字盤の針が正しく進むかを外から見るのが黒です。同じ時計でも、見る場所と必要な知識がまるで違う——この差が、そのまま2種類のテストの違いになります。

 

2視点に分ける利点は、欠陥の紛れ込む層に合わせて網を張れることです。ロジックの穴は白で、仕様の取りこぼしは黒で拾う。種類が多いのは、欠陥の入り口が多いからだと捉えると、暗記が理解に変わります。

 

2. ホワイトボックステストと網羅基準の強弱

内部構造の経路をどこまで通すかを見るイメージ

コードを書く立場で設計するテストの土台が、ホワイトボックステストです。プログラムの内部構造を見ながら、どの経路が実行されるかを確かめます。設計図を持つ人だけができる検証です。

 

どこまで通せば十分かを示すのが網羅基準で、強さに段階があります。この強弱を1枚の表で押さえてください。上から下へ、検出力は上がり、そのぶんテストの手間も増えます。

 

網羅基準 通すもの 強さ
命令網羅 各文を1回は実行する ゆるい(穴が残りやすい)
分岐網羅 各分岐の真・偽の両方を通す 中くらい
条件網羅 各条件がそれぞれ真・偽の両方をとる(全組合せまでは要求しない) 厳しい(工数は最大)

 

命令網羅は「全部の行を1度は走らせた」だけなので、分岐の片側を通していなくても達成扱いになります。ここが試験の狙いどころです。「命令網羅を満たせば安全」と早合点すると引っかかります。真偽の両方を通す分岐網羅から、実務は組み立てます。

 

白の活躍する工程は、主に単体テストです。開発者本人がコードを把握している段階で回すと、直しが小さく済みます。網羅を上げるほど強くなりますが、費用対効果は青天井ではありません。リスクの高い分岐に条件網羅を厚く当てる、といったメリハリが現場の判断です。

 

3. ブラックボックステスト:同値分割と境界値分析

入力と出力の仕様だけを根拠に挙動を確かめるイメージ

利用者の立場で動作を確かめるのがブラックボックステストです。中のコードは見ず、入力と出力の仕様だけを根拠に挙動を確かめます。代表技法が、同値分割と境界値分析の2つです。

 

あなたが「年齢を0〜120で受け付ける」入力を担当したとして、実際に動かしてみます。全部の数を試すのは無理なので、まず同値分割で「同じ扱いになるグループ」に束ね、各グループの代表値を1つ選びます。

 

  • 無効グループ(負の数)→ 代表値 -5
  • 有効グループ(0〜120)→ 代表値 50
  • 無効グループ(121以上)→ 代表値 130

 

これで「面」を広くカバーできます。次に境界値分析で「境目」を狙います。欠陥は端に集まりやすいからです。0の前後で -1/0/1120の前後で 119/120/121 を試す。>=> を書き間違えるような1つずれのバグは、まさにこの境目で正体を現します。

 

2技法は対立ではなく役割分担です。同値分割で広く面を取り、境界値分析で危ない端を深く突く。あなたが設問で「どちらの技法か」を迷ったら、代表値を選んでいれば同値分割、最小値・最大値の前後を突いていれば境界値分析、と切り分けられます。

 

4. V字モデルが設計とテストを結ぶ

設計工程とテスト工程が対応するV字モデルのイメージ

個々の技法を、開発全体のどこで使うか。その地図がV字モデルです。左に設計工程を下ろし、右にテスト工程を上げ、同じ高さどうしを対応させます。次の図で、対応の背骨を掴んでください。

 

要件定義 基本設計 詳細設計 システム・受入テスト 結合テスト 単体テスト 同じ高さの設計とテストが対応する(点線=対応関係)

 

あなたは対応を3組で覚えれば十分です。詳細設計⇔単体テスト(1つの部品の正しさ)、基本設計⇔結合テスト(部品どうしの連携)、要件定義⇔システム・受入テスト(利用者から見た全体)。詳細設計で決めたことは単体テストで、要件で約束したことは受入テストで確かめる、という鏡合わせの関係になっています。

 

V字が効くのは、テストの中身を設計の段階から逆算できる点です。要件定義の時点で「受入で何を確かめるか」を書いておけば、後工程の手戻りが減ります。設計工程そのものの表現手段は UMLとモデリングとは で、開発の進め方の型は アジャイル開発とは で押さえると、テストの居場所がはっきりします。

 

5. 試験で狙われる3つの角度

試験で問われる角度を確認するイメージ

ここまでの知識が試験でどう問われるか。あなたが先に押さえておくと得な角度が、大きく3つあります。丸暗記ではなく、この3つの切り口で設問を読み解くのがコツです。

 

  1. 網羅基準の強弱:命令網羅・分岐網羅・条件網羅を、ゆるい→厳しいの順に並べ替えさせる
  2. 白か黒か:「内部構造を根拠にするか、仕様だけを根拠にするか」で技法を分類させる
  3. V字の対応:詳細設計に対応するテスト工程は? のように、設計とテストの組を答えさせる

 

どれも、暗記より「どの視点で・どこまで確かめるテストか」を言葉にできれば解けます。白=中身の経路、黒=入出力の仕様、V字=設計とテストの鏡合わせ。この3つの物差しを持って設問に臨めば、選択肢の言い換えに振り回されずに済みます。

 

次のステップ

ソフトウェアテストがマネジメント系のどこに位置づくか、試験全体の地図で確かめたいときは、基本情報技術者試験の試験範囲と勉強法ガイド で範囲ごとの重みを見ておくと、学習の配分に迷いません。

白黒の分類やV字の対応を、実際の設問で動かして確かめたいなら、基本情報技術者 マネジメント系の問題集 で手を動かすと、知識が得点に変わります。