基本情報でわかる ホワイトボックステスト
error
この記事は基本情報技術者試験の旧制度( 2022 年以前)の記事ですが、試験対策ではなく、技術用語を理解する上では問題ないと考えています。
試験対策としてお読みになる場合は、現在の試験制度では出題されない午後問題を一部題材にしているので、ご注意ください。
この連載では、基本情報技術者試験によく出題されるテクノロジー関連の用語を、午前問題と午後問題のセットを使って解説します。
午前問題で用語の意味や概念を知り、午後問題で技術の活用方法を知ってください。それによって、単なる丸暗記では得られない明確さで、用語を理解できるようになります。
今回のテーマは、 ホワイトボックステストの「命令網羅」と「分岐網羅」 です。
ホワイトボックステストとは? 命令網羅とは? 分岐網羅とは?
システム全体は、いくつかの要素に分けて開発されます。個々の要素をテストするときには、内部構造に着目したホワイトボックステストを行い、システム全体をテストするときには、外部仕様に着目したブラックボックステストを行います。
- ホワイトボックステストは、内部が見えるテストという意味
- ブラックボックステストは、内部が見えないテストという意味
いずれの場合も、テストを行うときには、テストの目的に合ったテストデータを使うことが重要です。
この記事のテーマは、ホワイトボックステストです。
ホワイトボックステストでは、プログラムの設計図であるフローチャートを網羅するテストデータを使います。その際の考え方として、 命令網羅 と 分岐網羅 があります。
- 命令網羅
- すべての命令を網羅するテストデータを使います。わかりやすく言うと、フローチャートの中にある図形(処理を表す四角形や、条件を表すひし形など)を網羅する
- 分岐網羅
- すべての処理の流れを網羅するテストデータを使います。わかりやすく言うと、フローチャートの中にある線(処理の流れを表す線)を網羅する
シンプルなフローチャートを例にして、命令網羅と分岐網羅の違いを示しましょう。以下のフローチャートでは、 a > 0 という条件が Yes なら a の値を表示します。
命令網羅では、a > 0 という条件が Yes になるテストデータだけを使います。 たとえば、 a に 1 を設定します。それによって、フローチャートの中にあるひし形と四角形の図形を網羅できるからです。
分岐網羅では、a > 0 という条件が Yes になるテストデータと、 No になるテストデータを使います。 たとえば、 a に 1 および -1 を設定します。それによって、フローチャートの中にある処理の流れの線を網羅できるからです。
多くの場合に、命令網羅より分岐網羅の方が、より詳細なテストになるので、より多くのテストデータを使います。
命令網羅に関する午前問題
それでは、命令網羅と分岐網羅に関する午前問題を見てみましょう。以下は、命令網羅に関する午前問題です。
流れ図で表される部分を命令網羅によってテストするとき,テストケースは少なくとも幾つ用意する必要があるか。
ア 2 イ 3 ウ 4 エ 5
ここでは、命令網羅なので、フローチャートの中にある図形を網羅します。
問題に示されたフローチャートには、 a = 0 という条件(ひし形)と、 b = 0 という条件(ひし形)があり、それぞれに応じた処理(四角形)があります。テストデータとして、たとえば、 a に 0 、 b に 0 を設定すれば、以下の図形を網羅できます。ここで、網羅できてないのは、処理(四角形)が 2 つです。
もうひとつ別のテストデータとして、たとえば、 a に 1 、 b に 1 を設定すれば、以下の図形を網羅できます。
これで、すべての図形を網羅できたので、テストケース(テストデータの種類)は、 2 であり、選択肢アが正解です。
解答ア
分岐網羅に関する午前問題
以下は、 分岐網羅に関する午前問題です。
流れ図において,判定条件網羅(分岐網羅)を満たす最小のテストケース数は幾つか。
ア 1 イ 2 ウ 3 エ 4
ここでは、分岐網羅なので、フローチャートの中にある線を網羅します。
問題に示されたフローチャートには、
A = 2 or B = 0 という条件(ひし形)があり、
それぞれが真のときだけ処理(四角形)
があります。
テストデータとして、たとえば、 X に 2 、 A に 2 、 B に 0 を設定すれば、以下のようにすべての図形を網羅でき、命令網羅になります。ただし、この問題は、分岐網羅のテストケース数を求めるものなので、まだ網羅できていない 2 か所の線を網羅しなければなりません。
もうひとつ別のテストデータとして、たとえば、 X に 0 、 A に 1 、 B に 1 を設定すれば、以下の線を網羅できます。これで、すべての線を網羅できたので、テストケース数は、 2 であり、選択肢イが正解です。
解答イ
命令網羅と分岐網羅に関する午後問題
今度は、命令網羅と分岐網羅に関する午後問題を見てみましょう。以下に問題(問題の一部を抜粋したもの)を示します。すぐ後で、内容を説明しますので、ざっと目を通しておいてください。
ソフトウェアのテスト設計に関する次の記述を読んで,設問 1 ~ 3 に答えよ。
〔 N 社のテスト方法に関する説明〕
N 社では主にホワイトボックス法の一つである制御フローテストで,開発したプログラムのテストを実施している。
制御フローテストは,プログラムを構成する最小単位である命令,経路,判定条件に着目し,テスト計画時に定めたカバレッジ基準を満たすテストケース,テストデータを作成して,開発したプログラムの動作を確認するテスト方法である。
カバレッジ基準としては,テストにおいて全ての命令文を1回は実行する命令網羅,全ての分岐について分岐後の全ての経路を1回は実行する判定条件網羅 (以下,分岐網羅という) などがある。
N 社は,カバレッジ基準として分岐網羅を採用している。
〔 N 社が採用している分岐網羅の判定条件に関する説明〕
分岐の判定条件には,一つの条件だけを評価する単独条件と,二つ以上の単独条件を and 又は or で組み合わせて評価する複数条件がある。単独条件と複数条件の例を次に示す。
例 ( a > b ) and ( a < c ) 単独条件 単独条件 複数条件
設問 1
図 1 はテスト対象のプログラムの例,表 1 はこのプログラムのテストケースの例である。 N 社が採用している分岐網羅の判定条件に従って,このテストケースを用いて,図 1 のプログラムをテストしたとき,テストケース (1) ではa結果となり,テストケース (2) ではb結果となる。
テストデータ | |||||
---|---|---|---|---|---|
変数 | x | a | b | c | d |
テストケース(1) | 11 | 9 | 19 | 10 | 10 |
テストケース(2) | 11 | 10 | 20 | 11 | 11 |
a, bに関する解答群
ア b < 20 が評価されない
イ b < 20 と c > 10 が評価されない
ウ b < 20 と d > 10 が評価されない
エ c > 10 が評価されない
オ c > 10 と d > 10 が評価されない
カ d > 10 が評価されない
キ 全ての単独条件が評価される
問題の内容を説明しましょう。
説明文の中にある「カバレッジ」とは、「カバー( cover )する」つまり「網羅する」ということです。カバレッジの基準として、命令網羅と分岐網羅(判定条件網羅)があることを示してから、ここでは分岐網羅を採用するとしています。さらに、分岐の条件が「条件 A and 条件 B 」や「条件 C or 条件 D 」のように、複数の条件を and や or で組合せたものである場合には、「短絡評価」を行うとしています。
この問題のテーマは、「命令網羅や分岐網羅の違いがわかるか」ではなく、「短絡評価の意味がわかるか」です。さすが午後問題だけあって、午前問題より深い内容になっています。
短絡評価とは、
複数の条件を左から右に向かって順番に評価し、途中で結果が確定した場合には、残りの条件を評価しない
ということです。これを英語でショートカット( shortcut = 近道)と呼ぶのですが、「近道評価」では威厳がないので、「短絡評価」と訳したのでしょう。「評価」とは、条件が真か偽かをチェックすることです。
短絡評価では、たとえば、
- 「条件 A and 条件 B 」
- 条件 A が偽なら、その時点で「条件 A and 条件 B 」が偽であることが確定するので、条件 B をチェックしません
- 「条件 C or 条件 D 」
- 条件 C が真なら、その時点で「条件 C or 条件 D 」が真であることが確定するので、条件 D をチェックしません
残りの条件をチェックしないので、結果を得るために近道ができたことになるのです。
それでは、設問 1 の空欄 a と空欄 b に答えを入れてみましょう(設問 2 と設問 3 は省略します)。
まず、空欄 a です。
テストケース (1) の
x = 11, a = 9, b = 19, c = 10, d = 10
というテストデータを使うと、以下の網掛けした条件で結果が確定するので、 b < 20 と d > 10 が評価されません。これが、短絡評価です。したがって、選択肢ウが正解です。
次に、空欄bです。
テストケース (2) の
x = 11, a = 10, b = 20, c = 11, d = 11
というテストデータを使うと、以下の網掛けした条件で結果が確定します。このように、短絡評価であっても、すべての条件が評価される場合があります。したがって、選択肢キが正解です。
解答設問 1 a – ウ, b – キ
いかがでしたか?
午前問題と午後問題のセットで、命令網羅と分岐網羅を深く理解できたでしょう。
この連載では、今後も、多くの受験者が苦手としている用語を取り上げて行きます。それでは、またお会いしましょう!
label 関連タグ免除試験を受けた 74.9% の方が、 科目A免除資格を得ています。
基本情報でわかる IPアドレス と サブネットマスク
update基本情報でわかる ホワイトボックステスト
update基本情報でわかる トランザクション
update基本情報でわかる コンパイラ 最適化
update基本情報でわかる CRC 「具体例を見て体験すれば仕組みがわかる」
update基本情報でわかる 浮動小数点 「3つの情報で1つの数を表す仕組みを知れば、浮動小数点数がわかる」
update基本情報でわかる MIME タイプ 「電子メールの仕組みを知れば役割がわかる」
update基本情報でわかる 7セグメントLED 「 1 と 0 を書き込めば点灯するパターンがわかる」
update基本情報でわかる 論理演算 「真理値表を書けば、半加算器と全加算器の仕組みがわかる」
update基本情報でわかる SMTP / POP3 「ITエンジニア視点で見れば役割がわかる」
update『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”
大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。
主な著作物
- 「プログラムはなぜ動くのか」(日経BP)
- 「コンピュータはなぜ動くのか」(日経BP)
- 「出るとこだけ! 基本情報技術者」 (翔泳社)
- 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
- 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数