ホワイトボックステスト に関する記述

ホワイトボックステスト に関する記述


����14�N �H�� ��{���Z�p�� �ߑO ��49

��49�@�@ �z���C�g�{�b�N�X�e�X�g

�@�z���C�g�{�b�N�X�e�X�g�̃e�X�g�f�[�^�̍쐬���@�Ɋւ���L�q�Ƃ��āC�K�؂Ȃ��̂͂ǂꂩ�B �A�@���l�����̋Z�@���g�p���ăe�X�g�f�[�^���쐬����B

�C�@�v���O�����̊O���d�l�Ɋ�Â��ăe�X�g�f�[�^���쐬����B

�E�@�v���O�����̓����\���Ɋ�Â��ăe�X�g�f�[�^���쐬����B

�G�@�v���O�����̓��͂Əo�͂̊֌W����e�X�g�f�[�^���쐬����B



���

�@�e�X�g�ɂ́A�z���C�g�{�b�N�X�e�X�g�ƃu���b�N�{�b�N�X�e�X�g������B

�@�z���C�g�{�b�N�X�e�X�g�́A�v���O�����̓����\���Ɋ�Â��ăe�X�g�f�[�^���쐬���A �v���O�����̘_�������������e�X�g����B �u���b�N�{�b�N�X�e�X�g�́A�v���O�����̊O���d�l�Ɋ�Â��ăe�X�g���A ���l��������E�l���͂̋Z�@���g�p���ăe�X�g�f�[�^���쐬����B


[���O�̖��] [���̖�聨] [���ꗗ�\] [�����] [�L�[���[�h����] [��{���Z�p�Ҏ���TOP ]

ソフトウェア開発技術者試験 2001年度 = 平成13年度 午前 問52

ホワイトボックステストのテストデータ作成に関する記述として、適切なものはどれか。

ア 入力データを同値分割法に基づいて分析し、テストデータを作成する。

イ プログラムのアルゴリズムなど、内部構造に基づいてテストデータを作成する。

ウ プログラムの機能に基づいてテストデータを作成する。

エ プログラムの入力と出力の関係に基づいてテストデータを作成する。




ホワイトボックステストは、プログラムの内部構造やアルゴリズムに着目してロジックを調べるテスト方法です。テストケースの設計法として、条件網羅、命令網羅、判定条件網羅、判定条件/条件網羅、複数条件網羅などの手法を使います。
一方、ブラックボックステストは、プログラムの設計書からその機能を中心にテストする方法です。適切な入力を行い、期待した通りの出力が得られるかを、内部構造を考慮することなくテストします。因果グラフ、限界値分析、同値分割などの手法を使います。

同値分割法は、ブラックボックステストにおけるテストデータ作成に向いています。

ホワイトボックステストでは、内部仕様に基づいてテストしますので、プログラムのアルゴリズムなどの内部構造に基づいてテストデータを作成します。

プログラムの機能に基づいてテストデータを作成する手法は、ブラックボックステストにおけるテストデータ作成に向いています。

プログラムの入力と出力の関係に基づくテストデータ作成は、内部構造を考慮しない手法であり、ブラックボックステストにおけるテストデータ作成に向いています。



ホワイトボックステスト に関する記述

���p���Z�p�ҕ���26�N�t�� �ߑO��48

�ߑO��48

�v���O�����̃e�X�g�Ɋւ���L�q�̂����C�K�؂Ȃ��̂͂ǂꂩ�B

  • �ÓI�e�X�g�Ƃ́C�v���O���������s���邱�ƂȂ��e�X�g�����@�ł���C�R�[�h�����C�ÓI��͂Ȃǂ�����B

  • �P�̃e�X�g�ł́C�X�^�u���猟�����W���[�����Ăяo���C�������W���[������Ăяo����郂�W���[���̑���Ƀh���C�o���g�p����B

  • �g�b�v�_�E���e�X�g�́C���̉��ʃ��W���[���Ƃ��ăX�^�u���������ăe�X�g����̂ŁC�e�X�g�̍ŏI�i�K�ɂȂ�܂őS�̂Ɋ֌W����悤�Ȍ��ׂ���������ɂ����B

  • �u���b�N�{�b�N�X�e�X�g�́C����C�����Ȃǂ̓����\�������؂��邽�߁C�S�Ă̌o�H��ʉ߂���悤�ɁC�e�X�g�P�[�X��ݒ肷��B

����

�e�N�m���W�n » �V�X�e���J���Z�p » �\�t�g�E�F�A�\�z

����

���

  • �������B�ÓI�e�X�g�Ƃ́A�v���O���������s���Ȃ���ԂŃv���O�����̌��؂��s����@�ŁA�\���`�F�b�J�C�R�[�h�I�[�f�B�^�C���W���[���C���^�[�t�F�C�X�`�F�b�N�Ȃǂ�����܂��B
  • �P�̃e�X�g�́A�v���O���������W���[���P�ʂŐ���ɓ��삷�邩���m���߂�e�X�g�H���ł��B�X�^�u��h���C�o���g���ă��W���[���Ԃ̃C���^�t�F�[�X�����؂���H���͌����e�X�g�ł��B
  • �g�b�v�_�E���e�X�g�ł́A��ʂƂȂ郂�W���[������J�����Ă������ƂɂȂ�̂ŁA�K�R�I�ɏ�ʃ��W���[���ɑ΂���e�X�g�񐔂������Ȃ�A��ʃ��W���[���̐M�����������Ȃ�܂��B�t�Ƀ{�g���A�b�v�e�X�g�ł́A���ʃ��W���[�������ʂ֌������Ă������߁A�e�X�g�̍ŏI�i�K�ŏ�ʃ��W���[���Ƀ��W���[���ԃC���^�t�F�[�X�̖�蔭�������ƁA���̉��ʃ��W���[�����ׂĂ̏C�����K�v�ɂȂ�܂��B
  • �u���b�N�{�b�N�X�e�X�g�́A�v���O�����̓����\���Ƃ͖��֌W�ɁA�V�X�e���ւ̓��͂Ƃ���ɑ΂��ē�����o�͂����ɒ��ڂ��A�l�X�ȓ��͂ɑ΂��Ďd�l���ǂ���̏o�͂������邩�ǂ��������؂��Ă����e�X�g�ł��B�S�Ă̌o�H��ʉ߂���悤�ɁA�e�X�g�P�[�X��ݒ肷��̂̓z���C�g�{�b�N�X�e�X�g�ɂ�����e�X�g�P�[�X�ݒ�@�ł��B

  • �O�̖��(��47)
  • ����26�N�t�����ꗗ
  • ���̖��(��49)

  • 独習ゼミ
  • 基本情報技術者試験受験ナビ
  • 基本情報でわかるテクノロジー

基本情報でわかる ホワイトボックステスト

ホワイトボックステスト に関する記述

この連載では、基本情報技術者試験によく出題されるテクノロジー関連の用語を、午前問題と午後問題のセットを使って解説します。

午前問題で用語の意味や概念を知り、午後問題で技術の活用方法を知ってください。それによって、単なる丸暗記では得られない明確さで、用語を理解できるようになります。

今回のテーマは、 ホワイトボックステストの「命令網羅」と「分岐網羅」 です。

もくじ

  • 1 ホワイトボックステストとは? 命令網羅とは? 分岐網羅とは?
  • 2 命令網羅に関する午前問題
  • 3 分岐網羅に関する午前問題
  • 4 命令網羅と分岐網羅に関する午後問題

ホワイトボックステストとは? 命令網羅とは? 分岐網羅とは?

システム全体は、いくつかの要素に分けて開発されます。個々の要素をテストするときには、内部構造に着目したホワイトボックステストを行い、システム全体をテストするときには、外部仕様に着目したブラックボックステストを行います。

  • ホワイトボックステストは、内部が見えるテストという意味
  • ブラックボックステストは、内部が見えないテストという意味

いずれの場合も、テストを行うときには、テストの目的に合ったテストデータを使うことが重要です。

この記事のテーマは、ホワイトボックステストです。

ホワイトボックステストでは、プログラムの設計図であるフローチャートを網羅するテストデータを使います。その際の考え方として、 命令網羅分岐網羅 があります。

命令網羅すべての命令を網羅するテストデータを使います。わかりやすく言うと、フローチャートの中にある図形(処理を表す四角形や、条件を表すひし形など)を網羅する分岐網羅すべての処理の流れを網羅するテストデータを使います。わかりやすく言うと、フローチャートの中にある線(処理の流れを表す線)を網羅する

シンプルなフローチャートを例にして、命令網羅と分岐網羅の違いを示しましょう。以下のフローチャートでは、 a > 0 という条件が Yes なら a の値を表示します。

テスト対象のフローチャート
ホワイトボックステスト に関する記述

命令網羅では、a > 0 という条件が Yes になるテストデータだけを使います。 たとえば、 a に 1 を設定します。それによって、フローチャートの中にあるひし形と四角形の図形を網羅できるからです。

命令網羅 ( a に 1 を設定)
ホワイトボックステスト に関する記述

分岐網羅では、a > 0 という条件が Yes になるテストデータと、 No になるテストデータを使います。 たとえば、 a に 1 および -1 を設定します。それによって、フローチャートの中にある処理の流れの線を網羅できるからです。

多くの場合に、命令網羅より分岐網羅の方が、より詳細なテストになるので、より多くのテストデータを使います。

命令網羅に関する午前問題

それでは、命令網羅と分岐網羅に関する午前問題を見てみましょう。以下は、命令網羅に関する午前問題です。

問 49 平成 28 年度 春期 午前

流れ図で表される部分を命令網羅によってテストするとき,テストケースは少なくとも幾つ用意する必要があるか。

ホワイトボックステスト に関する記述

ア 2 イ 3 ウ 4 エ 5

ここでは、命令網羅なので、フローチャートの中にある図形を網羅します。

問題に示されたフローチャートには、 a = 0 という条件(ひし形)と、 b = 0 という条件(ひし形)があり、それぞれに応じた処理(四角形)があります。テストデータとして、たとえば、 a に 0 、 b に 0 を設定すれば、以下の図形を網羅できます。ここで、網羅できてないのは、処理(四角形)が 2 つです。

a に 0 、 b に 0 を設定して網羅できる図形
ホワイトボックステスト に関する記述

もうひとつ別のテストデータとして、たとえば、 a に 1 、 b に 1 を設定すれば、以下の図形を網羅できます。

a に 1 、 b に 1 を設定して網羅できる図形
ホワイトボックステスト に関する記述

これで、すべての図形を網羅できたので、テストケース(テストデータの種類)は、 2 であり、選択肢アが正解です。

解答

分岐網羅に関する午前問題

以下は、 分岐網羅に関する午前問題です。

問 49 平成 29 年度 春期 午前

流れ図において,判定条件網羅(分岐網羅)を満たす最小のテストケース数は幾つか。

ホワイトボックステスト に関する記述

ア 1 イ 2 ウ 3 エ 4

ここでは、分岐網羅なので、フローチャートの中にある線を網羅します。

問題に示されたフローチャートには、

X > 1 という条件(ひし形)と、
A = 2 or B = 0 という条件(ひし形)があり、
それぞれが真のときだけ処理(四角形)

があります。

テストデータとして、たとえば、 X に 2 、 A に 2 、 B に 0 を設定すれば、以下のようにすべての図形を網羅でき、命令網羅になります。ただし、この問題は、分岐網羅のテストケース数を求めるものなので、まだ網羅できていない 2 か所の線を網羅しなければなりません。

X に 2 、 A に 2 、 B に 0 を設定して網羅できる線
ホワイトボックステスト に関する記述

もうひとつ別のテストデータとして、たとえば、 X に 0 、 A に 1 、 B に 1 を設定すれば、以下の線を網羅できます。これで、すべての線を網羅できたので、テストケース数は、 2 であり、選択肢イが正解です。

X に 0 、 A に 1 、 B に 1 を設定して網羅できる線
ホワイトボックステスト に関する記述

解答

命令網羅と分岐網羅に関する午後問題

今度は、命令網羅と分岐網羅に関する午後問題を見てみましょう。以下に問題(問題の一部を抜粋したもの)を示します。すぐ後で、内容を説明しますので、ざっと目を通しておいてください。

問 5 平成 25 年度 秋期 午後(一部抜粋)

ソフトウェアのテスト設計に関する次の記述を読んで,設問 1 ~ 3 に答えよ。

システムインテグレータの N 社は,開発したプログラムに対するバグの摘出漏れの削減を目的として,テストの方法を見直している。

〔 N 社のテスト方法に関する説明〕
N 社では主にホワイトボックス法の一つである制御フローテストで,開発したプログラムのテストを実施している。

制御フローテストは,プログラムを構成する最小単位である命令,経路,判定条件に着目し,テスト計画時に定めたカバレッジ基準を満たすテストケース,テストデータを作成して,開発したプログラムの動作を確認するテスト方法である。

カバレッジ基準としては,テストにおいて全ての命令文を1回は実行する命令網羅,全ての分岐について分岐後の全ての経路を1回は実行する判定条件網羅 (以下,分岐網羅という) などがある。

N 社は,カバレッジ基準として分岐網羅を採用している。

〔 N 社が採用している分岐網羅の判定条件に関する説明〕
分岐の判定条件には,一つの条件だけを評価する単独条件と,二つ以上の単独条件を and 又は or で組み合わせて評価する複数条件がある。単独条件と複数条件の例を次に示す。

( a > b ) and ( a < c )
 単独条件      単独条件
        複数条件

ここで,プログラムの実行時に,複数条件については短絡評価を行うものとする。短絡評価とは,複数条件を構成する単独条件を左から右へ向かって順に評価し,複数条件の結果が確定したら,残りの単独条件を評価しない方法である。例えば,二つの単独条件を and で組み合わせた複数条件の場合,一つ目の単独条件を評価した結果が偽ならば,複数条件は二つ目の単独条件に関係なく必ず偽になるので,二つ目の単独条件を評価しない。

設問 1

N 社が採用している分岐網羅の判定条件に関する次の記述中のに入れる正しい答えを,解答群の中から選べ。

図 1 はテスト対象のプログラムの例,表 1 はこのプログラムのテストケースの例である。 N 社が採用している分岐網羅の判定条件に従って,このテストケースを用いて,図 1 のプログラムをテストしたとき,テストケース (1) ではa結果となり,テストケース (2) ではb結果となる。

○プログラム (整数型 : x, 整数型 : a, 整数型 : b, 整数型 : c, 整数型 : d)
■ x > 10
| • func1()
| ▲ (a < 10) or (b < 20)
| | • func2()
| +---
| | • func3()
| ▼
| ▲ (c > 10) and (d > 10)
| | • func4()
| | • exit     /* 繰り返しを抜ける */
| +---
| | • func5()
| ▼
| • func6()
■
図 1 テスト対象のプログラムの例 表 1 テストケースの例
テストデータ
変数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 が評価されません。これが、短絡評価です。したがって、選択肢ウが正解です。

テストケース(1)「 x = 11, a = 9, b = 19, c = 10, d = 10 」の場合
○プログラム (整数型 : x, 整数型 : a, 整数型 : b, 整数型 : c, 整数型 : d)
■ x > 10
| • func1() 
| ▲ (a < 10) or (b < 20)
| | • func2()
| +---
| | • func3()
| ▼         
| ▲ (c > 10) and (d > 10)
| | • func4()
| | • exit     /* 繰り返しを抜ける */
| +---
| | • func5()
| ▼
| • func6()
■

次に、空欄bです。

テストケース (2) の

x = 11, a = 10, b = 20, c = 11, d = 11

というテストデータを使うと、以下の網掛けした条件で結果が確定します。このように、短絡評価であっても、すべての条件が評価される場合があります。したがって、選択肢キが正解です。

テストケース(2)「 x = 11, a = 10, b = 20, c = 11, d = 11 」の場合
○プログラム (整数型 : x, 整数型 : a, 整数型 : b, 整数型 : c, 整数型 : d)
■ x > 10
| • func1()          
| ▲ (a < 10) or (b < 20)
| | • func2()
| +---
| | • func3()
| ▼                  
| ▲ (c > 10) and (d > 10)
| | • func4()
| | • exit     /* 繰り返しを抜ける */
| +---
| | • func5()
| ▼
| • func6()
■

解答設問 1 a – ウ, b – キ

いかがでしたか?

午前問題と午後問題のセットで、命令網羅と分岐網羅を深く理解できたでしょう。

この連載では、今後も、多くの受験者が苦手としている用語を取り上げて行きます。それでは、またお会いしましょう!

label 関連タグ

新制度でも、
午前免除できます。
独習ゼミで科目 A 試験を免除しましょう。
免除試験を受けた 86% の方が、
1 年間の午前免除資格を得ています。

label これまでの『基本情報でわかるテクノロジー』の連載一覧 label 著者

ホワイトボックステスト に関する記述

『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”

大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。

主な著作物

  • 「プログラムはなぜ動くのか」(日経BP)
  • 「コンピュータはなぜ動くのか」(日経BP)
  • 「出るとこだけ! 基本情報技術者」 (翔泳社)
  • 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
  • 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数