カテゴリ:8.システム開発 > 8.7 システムテスト

1.ホワイトボックステストとブラックボックステスト(概要)

単体テストには、ホワイトボックステストとブラックボックステストがあります。

①ブラックボックステスト

 ユーザの立場でのテストで、内部構造が真っ黒(ブラック)で見えない状態でのテストです。
 シンプルな例で説明します。たとえば、「新規パスワード入力画面」があります。パスワードの仕様は、「英字8文字以上」と決められており、それ以外であれば、エラーになります。このとき、ブラックボックステストでは、7文字の英字、8文字の英字、8文字の数字などを入力してテストすることで、仕様が適切かを確認します。

②ホワイトボックステスト


 ブラックボックステストの逆で、開発者の立場でのテストです。分岐条件などの内部構造を理解した上でのテストです。先ほどの例ですと、内部構造として、「全角文字」が入力された場合は「半角で入力してください」というエラー処理が行われるとします。システム開発者は、テストデータとして「全角文字」をわざと入力し、適切なエラー処理およびメッセージが表示されるかを確認します。

11

2.ホワイトボックステストとブラックボックステスト

基本情報技術者試験に比べて、応用情報技術者試験は、やや上流工程を意識しているため、それほど出題はされません。概要だけ理解しておけばいいでしょう。

(1)ホワイトボックステスト

・プログラム構造に基づいてテストする。⇔ブラックボックステスト
・ホワイトボックステストに関して過去問では、「プログラムの品質を検証するために,プログラム内部のプログラム構造を分析し,テストケースを設定するテスト手法(H24秋IP問46)」、「内部構造に基づいてテストデータを作成する(H23春FE午前問49)」と述べられています。
・過去問を参考にすると、ホワイトボックステストのテストデータの作成方法として、「プログラムの流れ図から、分岐条件に基づいたテストデータを作成する(H21NW午前Ⅱ問24不正解選択肢)」となります。

テスト技法としては、①命令網羅、②判定条件網羅(分岐網羅)、③条件網羅、④複数条件網羅、があります。この順番も覚えておきましょう。
では、
過去問(H27春FE午前問50 )を見てみましょう。
問50 図の構造をもつプログラムに対して,ホワイトボックステストのテストケースを設計するとき,少なくとも実施しなければならないテストケース数が最大になるテスト技法はどれか。
ad
ア 条件網羅     イ 判定条件網羅
ウ 複数条件網羅  エ 命令網羅
ここで、「条件」というのは、左上の「A>0かつB=1」です。「命令」というのは、「X←X+1」です。
①命令網羅
命令を網羅します。命令を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回】
 AB
真(A=1)真(B=1)
真(A=1)偽(B=0)
偽(A=0)真(B=1)
偽(A=0)偽(B=0)

④複数条件網羅
上記の条件の、全てのパターンを網羅する方法です。当然ながら、テストケース数が最大になります。【テストケース数:4回】

(2)ブラックボックステスト

・プログラム構造はブラックボックス化されている前提でのテスト。ユーザの立場でのテストと同様になる。つまり、値の入力でテストする。
・H21応用情報/秋問47のように「プログラム仕様書を基に~」とあれば、ブラックボックステストである。
・ブラックボックステストのテストデータの作成方法として、「機能仕様から同値クラスや限界値を識別し、テストデータを作成する(H21SA午前-問7)」と述べられている。また、H21SA午前-問7の不正解の選択肢として「業務で発生するデータの発生頻度を分析し、テストデータを作成する」「稼働中のシステムから実データを無作為に抽出し、テストデータを作成する」がある。
e1f51e18
この問題のポイントは、ブラックボックステストは「ブラックボックス」だから中身が見えない。だからといって無作為にテストデータをするわけではない。同値分割や限界値分割を利用し、意図的なデータでテストすることですね。
同値分割:同じ値になるデータをクラス分けする。
 同値分割のテストケース設計法の説明として、「読み込んだデータが正しくないときにエラーメッセージを出力するかどうかをテストしたい。プログラム仕様書を基に、正しくないデータのクラスを識別し、その中から任意のデータを代表として選びテストケースとする。(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回は実行する。
エ ユニットへの入力データの値の範囲を分割し,各代表値で実行する。
オ ユニットへの入力と出力の因果関係を網羅するよう実行する。





正解ですが、以下です。全ての命令を実行するなど、内部構造を理解したテストがホワイトボックステストで、それ以外がブラックボックステストと考えればいいでしょう。
【正解】
ホワイトボックステスト:ア、イ、ウ
ブラックボックステスト:エ、オ

単体テストが終わったら、次は複数のモジュールを組み合わせて、モジュール間の連携部分を含めた確認をする結合テストを行います。結合テストには、トップダウンテストと、ボトムアップテストとの2つがあります。

トップダウンテスト
 モジュールの上位からテストを実施するのがトップダウンテストです。最近では開発の方式が多様化しているので一概には言えませんが、階層構造の上位モジュールから開発する場合が分かりやすい例です。上位モジュールから開発していますから、単体テストおよび結合テストも、それに応じて上位から行われます。下位モジュールはまだ完成していないと、十分なテストが行えない場合があります。そこで、スタブと呼ばれる下位モジュールの代替となるテスト用モジュールを準備して補います。
b
ボトムアップテスト
 モジュールの下位からテストを実施します。上位のモジュールの代替えとなるのがドライバです。
a
 
では、スタブやドライバは具体的にはどんな役割をするのでしょうか。具体例で説明します。以下は、検索画面で、たとえば「network」という文字を入力して「検索」ボタンを押すと、該当するデータを表示する機能とします。

a

モジュール構造ですが、上位モジュールとして、「文字入力」(入力値のチェックなどを行います)と、下位モジュールとして「検索処理」(入力された文字をもとに、DBから検索します)があります。

このとき、上位モジュールから下位モジュールに、入力された値である「network」という文字を、引数として渡します。ですから、ドライバは,引数を渡してテスト対象モジュールを呼び出す機能だけを実装したテスト用モジュールです。

テストの種類には、運用テスト,結合テスト,システムテスト,単体テストがあります。
その体系は、以下を参照ください。
http://sm.seeeko.com/archives/65913915.html

ソフトウェアのテストに関して、応用情報技術者試験シラバスには以下の記載があります。
(8)ソフトウェアユニットのテスト
① テストの目的
ソフトウェアユニットのテストは,ソフトウェア詳細設計で定義したテスト仕様に従って行い,要求事項を満たしているかどうかを確認することを理解する。

用語例 障害,欠陥,障害分析

② テストの手順
テストの目的,方針,スケジュール,体制,使用するテストツールなどを決定してテスト計画を立て,次にテスト項目,テストデータの作成,テスト環境の用意などのテスト準備を行い,テストを実施し,テスト結果を評価するという一連の手順を理解する。

用語例 テスト方法論,テスト範囲,テスト準備(テスト環境,テストデータなど),テスト実施者,ユニットテスト,チェックシートの作成

③ テストの実施と評価
テストの目的,実施方法,留意事項,テストで使用されるテストツールの役割を理解する。また,テストの実行後には,テスト結果の記録,結果分析,プログラムの修正や改良作業を行うことを理解する。

用語例 デバッガ,ドライバ,スタブ,テストデータジェネレータ,テスト設計と管理手法(バグ曲線,エラー除去,バグ管理図),テスト自動化

④ テストの手法
テストで用いられるブラックボックス法,ホワイトボックス法のテストデータの作成方法を理解する。

用語例 メトリクス計測,テストケース,命令網羅,条件網羅,判定条件網羅,複数条件網羅,経路組合せ網羅,網羅率,カバレージ,限界値分析法,同値分析法,原因結果グラフ法,エラー埋込法,実験計画法

過去問(H26秋FE午前問49)では、リグレッションテストに関して、「ソフトウェアのテストの種類のうち,ソフトウェア保守のために行った変更によって,影響を受けないはずの箇所に影響を及ぼしていないかどうかを確認する目的で行うもの」と述べられています。

■H26秋AP午前
問48 回帰テストリグレッションテスト)の 説明として,適切なものはどれか。
ア 新規に作成したプログラムの各モジュ ールの誤りを検出するためのテストであ る。
イ プログラムを修正したことによって, 想定外の影響が出ていないかどうかを確 認するためのテストである。
ウ ホワイトボックステストに限定して,単 体モジュールの誤りを検出するためのテストである。
エ 毎回,テストケースとテストデータを, 作り直して行うテストである。

【正解】イ

■H29秋AP
問47 テストで使用されるスタブ又はドライバの説明のうち,適切なものはどれか。
ア スタブは,テスト対象モジュ―ルからの戻り値を表示・印刷する。
イ スタブは,テスト対象モジュールを呼び出すモジュールである。
ウ ドライバは,テスト対象モジュールから呼び出されるモジュールである。
エ ドライバは,引数を渡してテスト対象モジュールを呼び出す。
正解:エ

■H27秋AP午前
問48 二つの独立したテストグループA,    Bが,あるシステムについて一定期間並 行してテストを行い,それぞれNa個及び Nb^固のエラーを検出した。このうち,共 通のエラーはNab個であった。このシステ ムの総エラー数Nを予測する式はどれか 。ここで,   Na>0,Nb>0,Nab>0とする 。また,グループA,  Bの,エラーを検出す る能力及び効率は等しいものとする。
8-1_H27a_48
【正解】エ

■H26秋AP午前
問47 ブラックボックステストのテストデー タの作成方法のうち,最も適切なものは どれか。
ア 稼働中のシステムから実データを無 作為に抽出し,テストデータを作成する。
イ 機能仕様から同値クラスや限界値を 識別し,テストデータを作成する。
ウ 業務で発生するデータの発生頻度を 分析し,テストデータを作成する。
エ プログラムの流れ図から,分岐条件 に基づいたテストデータを作成する。
【正解】イ

■H26春AP午前
問48 プログラムのテストに関する記述 のうち,適切なものはどれか。
ア 静的テストとは,プログラムを実行す ることなくテストする手法であり,コード検査,静的解析などがある。
イ 単体テストでは,スタブから被検査モ ジュールを呼び出し,被検査モジュール から呼び出されるモジュールの代わりにド ライバを使用する。
ウ トップダウンテストは,仮の下位モジュ ールとしてのスタブを結合してテストするので,テストの最終段階になるまで全 体に関係するような欠陥が発見されにく い。
エ ブラックボックステストでは,分岐,反 復などの内部構造を検証するので,全ての経路を通過するように,テストケース を設定する。
【正解】ア

■H25秋AP午前、平成29年春期 午前 問48
問49 流れ図において,分岐網羅を満た し,かつ,条件網羅を満たすテストデータ の組はどれか。
8-1_H25a_49_463
【正解】エ
全てのテストデータを順に入れてみましょう。
分岐に関しては、以下のように、どの値でどの分岐を通るかを確認しましょう。するとエのテストデータが正解であることが分かります。
a 
また、エでは、xとして0と1、yとして1と2の値を取ります。これは、x>=1の条件の真と偽、y=1の条件の真と偽、y>1という条件の真と偽の全てを網羅します。

■H25春AP午前
問47 エラー埋込み法による残存エラー の予測において,テストが十分に進んで いると仮定する。当初の埋込みエラーは48個 である。テスト期間中に発見されたエラー の内訳は,埋込みエラーが36個,真のエラー が42個である。このとき,残存する真のエラーは何個と推定されるか。
ア 6     イ 14     ウ 54     エ 56
【正解】イ

問48 ブラックボックステストのテストデー タの作成方法のうち,最も適切なものはどれか。
ア 稼働中のシステムから実データを無 作為に抽出し,テストデータを作成する。
イ 機能仕様から同値クラスや限界値を 識別し,テストデータを作成する。
ウ 業務で発生するデータの発生頻度を 分析し,テストデータを作成する。
エ プログラムの流れ図から,分岐条件 に基づいたテストデータを作成する。
【正解】イ

平成29年春期 午前 問18 
問18 ホワイトボックステストにおいて,プログラムの実行された部分の割合を測定するのに使うものはどれか。

ア アサーションチェツカ          イ シミュレータ
ウ 静的コード解析ツール         エ テストカバレージ分析ツール
正解は、エです。

テストの進捗管理と終了条件に利用される。
「信頼度成長曲線が収束していること」など。
縦軸:累積バグ数
横軸:消化テスト数
ある一点(変曲点)を持つS字カーブになる。ゴンペルツ曲線とも言われる。

応用情報技術者試験を勉強する成子
古くには試験で問われたことがありますが、最近は出題されていないので、無視してもいいかもしれませんね。
過去問(H20秋AD午前)
問36 テスト時間と検出したエラー累積数の関係を示すグラフは,信頼度成長曲線で近似できることが多い。この信頼度成長曲線とは,どのようなグラフか。
信頼度成長曲線

正解はイ

↑このページのトップヘ