基本情報技術者過去問題 平成25年秋期 午後問5

問題文解答用紙を別タブで開けます(印刷可能)。

問5 ソフトウェア設計

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

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

〔N社のテスト方法に関する説明〕

 N社では主にホワイトボックス法の一つである制御フローテストで,開発したプログラムのテストを実施している。
 制御フローテストは,プログラムを構成する最小単位である命令,経路,判定条件に着目し,テスト計画時に定めたカバレッジ基準を満たすテストケース,テストデータを作成して,開発したプログラムの動作を確認するテスト方法である。
 カバレッジ基準としては,テストにおいて全ての命令文を1回は実行する命令網羅,全ての分岐について分岐後の全ての経路を1回は実行する判定条件網羅(以下,分岐網羅という)などがある。
 N社は,カバレッジ基準として分岐網羅を採用している。

〔N社が採用している分岐網羅の判定条件に関する説明〕
 分岐の判定条件には,一つの条件だけを評価する単独条件と,二つ以上の単独条件を and 又は or で組み合わせて評価する複数条件がある。単独条件と複数条件の例を次に示す。
 ここで,プログラムの実行時に,複数条件については短絡評価を行うものとする。短絡評価とは,複数条件を構成する単独条件を左から右へ向かって順に評価し,複数条件の結果が確定したら,残りの単独条件を評価しない方法である。例えば,二つの単独条件を and で組み合わせた複数条件の場合,一つ目の単独条件を評価した結果が偽ならば,複数条件は二つ目の単独条件に関係なく必ず偽になるので,二つ目の単独条件を評価しない。

設問1

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

 図1はテスト対象のプログラムの例,表1はこのプログラムのテストケースの例である。N社が採用している分岐網羅の判定条件に従って,このテストケースを用いて,図1のプログラムをテストしたとき,テストケース@ではa結果となり,テストケースAでは,b結果となる。
pm05_2.gif/image-size:446×279
pm05_3.gif/image-size:223×115
a,b に関する解答群
  • b<20 が評価されない
  • b<20 と c>10 が評価されない
  • b<20 と d>10 が評価されない
  • c>10 が評価されない
  • c>10 と d>10 が評価されない
  • d>10 が評価されない
  • 全ての単独条件が評価される

解答選択欄

  • a:
  • b:

解答

  • a=
  • b=

解説

aについて〕
テストケース@での実行動作をトレースすると以下のようになります。
pm05_6.gif/image-size:226×73
  1. X>10が評価される。X=11なので真となり、func1が実行される。
  2. a<10が評価される。a=9なのでこの時点で条件式全体はと判定され、func2が実行される。(b<20は評価されない)
  3. c>10が評価される。c=10なのでこの時点で条件式全体はと判定され、func5が実行される。(d>10は評価されない)
  4. func6が実行される。
  5. プログラムの先頭に戻り、以後はループを抜けるまで処理を繰り返す。
問題文にあるように複数条件については「最初に評価される条件の結果によっては残りの判定条件を評価しない」ことになっています。

最初の「a<10 or b<20」は or 演算子で結ばれているので「a<10」の結果が真であれば、残りの条件の結果に関わらず条件式全体の結果がとなるため「b<20」が評価されません。また「c>10 and d>10」は and 演算子で結ばれているので「c>10」の結果が偽であれば、残りの条件の結果に関わらず条件式全体の結果がとなるため「d>10」が評価されません。

a=ウ:b<20 と d>10 が評価されない
pm05_7.gif/image-size:251×260

bについて〕
aの時と同様にテストケースAでの実行動作をトレースすると以下のようになります。
pm05_8.gif/image-size:226×73
  1. X>10が評価される。X=11なので真となり、func1が実行される。
  2. a<10が評価される。a=10なのでと判定される。
  3. 続けてb<20が評価される。b=20なのでとなり、条件式全体がと判定されるためfunc3が実行される。
  4. c>10が評価される。c=11なのでと判定される。
  5. 続けてd>10が評価される。d=11なのでとなり、条件式全体がと判定されるためfunc4が実行される。
  6. exitにより繰返し処理を抜けプログラムが終了する。
以上のようにテストケースAではすべての単独条件が評価されます。

a=キ:全ての単独条件が評価される
pm05_9.gif/image-size:251×260

設問2

プログラムの制御構造は,制御フローグラフで記述することができる。制御フローグラフは,処理を逐次実行する命令,繰返し命令,分岐命令に分け,それぞれを処理ブロック(以下,ノードという)として処理の実行順に有向線分(以下,エッジという)で結んだグラフである。ここで,複数条件は,それぞれの単独条件に分解して制御フローグラフに置き換える。
 図2は,図1のテスト対象のプログラムの例にノード番号@〜Jを付与したものであり,図3は,それに対応する制御フローグラフである。図3のノード番号は,図2中のノード番号に対応する。図3のノードSとノードEは,それぞれプログラムの入口と出口を表す特別なノードであり,テスト対象のプログラムの例には対応する処理はない。図3の制御フローグラフ中の に入れる適切なノード番号を,解答群の中から選べ。
pm05_4.gif/image-size:446×272
pm05_5.gif/image-size:354×472
c,d,e,f に関する解答群
  • B
  • C
  • D
  • E
  • G
  • I
  • J

解答選択欄

  • c:
  • d:
  • e:
  • f:

解答

  • c=
  • d=
  • e=
  • f=

解説

cについて〕
「Afunc2の実行」の後に続く処理なのでプログラムの順序から考えて「Ba<10の評価」が適切です。

c=ア:B

dについて〕
「Ba<10の評価」がの場合には「Dfunc2」が実行され、では「Cb<20の評価」の処理に移ります。cに続く2つの網かけのノードを比較すると、分岐処理になっている上のノードがの場合に実行される「Cb<20の評価」、下のノードがの場合に実行される「Dfunc2」が入ることがわかります。
したがってdには、「Ba<10」と「Cb<20」が共にだった場合のみ実行される「Efunc3」が入ります。

d=エ:E
pm05_10.gif/image-size:175×143
efについて〕
「Fc>10の評価」がの場合には「Gd>10の評価」が実行され、では「Ifunc5」の処理に移ります。「Fc>10の評価」に続くefのノードを比較すると、分岐処理になっている下のfの場合に実行される「Gd>10の評価」、左のeのノードがの場合に実行される「Ifunc5」が入ることがわかります。
また、eの後に網かけ部分の処理が実行され@に戻っていることに注目しても、eにはexit処理の存在しない「Ifunc5」が入ることがわかります。

e=カ:I,f=オ:G

以下は図3のグラフの完成形です。
pm05_11.gif/image-size:328×400

設問3

次の記述中の に入れる正しい答えを,解答群の中から選べ。

 図1のプログラムのテストにおいて,N社が採用している分岐網羅の場合,最低限必要となるテストケースの数はgである。
 これに対して,制御フローグラフから経路を抽出してテストケースを作成する方法がある。制御フロ―グラフの全てのエッジとノードを網羅する,最小の経路の数(S)は,次の式で求められる。

   S=エッジ−ノード+2

 抽出した経路に対応したS個のテストケースについてテストを行うことによって,分岐網羅以上の高いカバレッジを保証することができる。
 図3の制御フローグラフから,Sを求めるとhとなる。N社は,バグの摘出漏れの削減を目的として,制御フローグラフに基づくテストケースでプログラムのテストをすることとした。
g,h に関する解答群
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

解答選択欄

  • g:
  • h:

解答

  • g=
  • h=

解説

gについて〕
分岐網羅のテストケースには「全ての分岐後の全ての経路を1回は実行する」ことが求められます。
設問のプログラムには3箇所の分岐があるので実行すべき経路は以下の6つです。
pm05_12.gif/image-size:338×91
条件1がの場合にはプログラムが終了してしまうため条件2,3の部分は実行されません。このためテストケースは条件1がの場合に条件2,3の真偽を組合わせた
  • 条件1:真,条件2:真,条件3:真
  • 条件1:真,条件2:偽,条件3:偽
に条件1がの場合のテストケースである
  • 条件1:偽,条件2:-,条件3:-(条件2,3は真偽はどちらでもよい)
を加えた計3つになります。
pm05_13.gif/image-size:313×400

hについて図3の制御グラフにはエッジ17本、ノード13個(SとEも含める)があります。これを設問の式に代入すると、

 S=17−13+2
 S=6

g=オ:6

平成25年秋期 午後問題一覧

問1 問2 問3 問4 問5 問6 問7 問8 問9 問10 問11 問12 問13 採点講評
© 2010-2020 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop