1.ホワイトボックステストとブラックボックステスト(概要)
単体テストには、ホワイトボックステストとブラックボックステストがあります。①ブラックボックステスト
ユーザの立場でのテストで、内部構造が真っ黒(ブラック)で見えない状態でのテストです。シンプルな例で説明します。たとえば、「新規パスワード入力画面」があります。パスワードの仕様は、「英字8文字以上」と決められており、それ以外であれば、エラーになります。このとき、ブラックボックステストでは、7文字の英字、8文字の英字、8文字の数字などを入力してテストすることで、仕様が適切かを確認します。
②ホワイトボックステスト
ブラックボックステストの逆で、開発者の立場でのテストです。分岐条件などの内部構造を理解した上でのテストです。先ほどの例ですと、内部構造として、「全角文字」が入力された場合は「半角で入力してください」というエラー処理が行われるとします。システム開発者は、テストデータとして「全角文字」をわざと入力し、適切なエラー処理およびメッセージが表示されるかを確認します。
2.ホワイトボックステストとブラックボックステスト
基本情報技術者試験に比べて、応用情報技術者試験は、やや上流工程を意識しているため、それほど出題はされません。概要だけ理解しておけばいいでしょう。(1)ホワイトボックステスト
・プログラム構造に基づいてテストする。⇔ブラックボックステスト・ホワイトボックステストに関して過去問では、「プログラムの品質を検証するために,プログラム内部のプログラム構造を分析し,テストケースを設定するテスト手法(H24秋IP問46)」、「内部構造に基づいてテストデータを作成する(H23春FE午前問49)」と述べられています。
・過去問を参考にすると、ホワイトボックステストのテストデータの作成方法として、「プログラムの流れ図から、分岐条件に基づいたテストデータを作成する(H21NW午前Ⅱ問24不正解選択肢)」となります。
テスト技法としては、①命令網羅、②判定条件網羅(分岐網羅)、③条件網羅、④複数条件網羅、があります。この順番も覚えておきましょう。
では、過去問(H27春FE午前問50 )を見てみましょう。
問50 図の構造をもつプログラムに対して,ホワイトボックステストのテストケースを設計するとき,少なくとも実施しなければならないテストケース数が最大になるテスト技法はどれか。 ア 条件網羅 イ 判定条件網羅 ウ 複数条件網羅 エ 命令網羅 |
①命令網羅
命令を網羅します。命令を1回でも実行すればいいので、「A>0かつB=1」を満たす、たとえば「A=1、B=1」のテストを行います。 【テストケース数:1回】
②判定条件網羅(分岐網羅)
左上の条件「真」「偽」をそれぞれを通るようにします。たとえば、「A=1、B=1(結果:真)」、「A=0、B=1(結果:偽)」です。【テストケース数:2回】
③条件網羅
今度は、分岐ではなく、条件を網羅します。今回は、「A>0」「B=1」という2つの条件があります。なので、2つの条件で、それぞれ真の場合と偽の場合をテストします。④の複数条件網羅のように、AとBの全てのパターンを実施する必要はありません。
つまり、以下の4パターンではなく、たとえば、1と4を実施すれば、AとBのそれぞれの真偽をテストしたことになります。【テストケース数:2回】
A | B | |
1 | 真(A=1) | 真(B=1) |
2 | 真(A=1) | 偽(B=0) |
3 | 偽(A=0) | 真(B=1) |
4 | 偽(A=0) | 偽(B=0) |
④複数条件網羅
上記の条件の、全てのパターンを網羅する方法です。当然ながら、テストケース数が最大になります。【テストケース数:4回】
(2)ブラックボックステスト
・プログラム構造はブラックボックス化されている前提でのテスト。ユーザの立場でのテストと同様になる。つまり、値の入力でテストする。・H21応用情報/秋問47のように「プログラム仕様書を基に~」とあれば、ブラックボックステストである。
・ブラックボックステストのテストデータの作成方法として、「機能仕様から同値クラスや限界値を識別し、テストデータを作成する(H21SA午前-問7)」と述べられている。また、H21SA午前-問7の不正解の選択肢として「業務で発生するデータの発生頻度を分析し、テストデータを作成する」「稼働中のシステムから実データを無作為に抽出し、テストデータを作成する」がある。
この問題のポイントは、ブラックボックステストは「ブラックボックス」だから中身が見えない。だからといって無作為にテストデータをするわけではない。同値分割や限界値分割を利用し、意図的なデータでテストすることですね。
・同値分割:同じ値になるデータをクラス分けする。
同値分割のテストケース設計法の説明として、「読み込んだデータが正しくないときにエラーメッセージを出力するかどうかをテストしたい。プログラム仕様書を基に、正しくないデータのクラスを識別し、その中から任意のデータを代表として選びテストケースとする。(H21応用情報/秋問47)
・限界値分析:H23春ES午前Ⅱ問24では、限界値分析の例が記載されています。
「プログラムの誤りの一つに,繰返し処理の判定条件としてA≧aとすべきところをA>aとコーディングすることがある。このような誤りを見つけ出すために有効なテストケース設計技法はどれか。ここで, Aは変数、aは定数とする。」
このように、値の限界のところでテストをします。
・原因一結果グラフ:「入力と出力の関係からテストデータを作成する。(H23春FE午前問49)」と述べられています。
◆テストの実施
テストの実施にあたっては、デバッガ、ドライバ、スタブなどを活用する。
3.ホワイトボックステストとブラックボックステストの過去問を解いてみよう
(1)H22秋AP午前問46
問46 ホワイトボックステストのテストケースを設計する際に使用するものはどれか。 ア 原因一結果グラフ イ 限界値分析 ウ 条件網羅 エ 同値分割 |
↓
↓
↓
↓
【正解】ウ
ホワイトボックステストでは、ウの条件網羅を使用します。
ブラックボックステストでは、内部構造が分からないのですが、原因一結果グラフ、限界値分析、同値分割を利用します。
(2)H26秋AP午後
設問1 単体テストの方法について,ホワイトボックステスト,ブラックボックステストのテスト項目の作成方法に該当するものを,解答群の中からそれぞれ全て選び,記号で答えよ。 解答群 ア ユニット内の条件判定の組合せ全てを少なくとも1回は実行する。 イ ユニットの全ての分岐を少なくとも1回は実行する。 ウ ユニットの全ての命令を少なくとも1回は実行する。 エ ユニットへの入力データの値の範囲を分割し,各代表値で実行する。 オ ユニットへの入力と出力の因果関係を網羅するよう実行する。 |
↓
↓
↓
↓
正解ですが、以下です。全ての命令を実行するなど、内部構造を理解したテストがホワイトボックステストで、それ以外がブラックボックステストと考えればいいでしょう。
【正解】
ホワイトボックステスト:ア、イ、ウ
ブラックボックステスト:エ、オ
コメント