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

⇄問題文と設問を画面2分割で開く⇱問題PDF

問5 ソフトウェア設計

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

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

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

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

設問1

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

 図1はテスト対象のプログラムの例,表1はこのプログラムのテストケースの例である。N社が採用している分岐網羅の判定条件に従って,このテストケースを用いて,図1のプログラムをテストしたとき,テストケース①では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の場合と同じく、テストケース②での実行動作をトレースすると以下のようになります。
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=キ:全ての単独条件が評価される
pm05_9.gif/image-size:251×260

設問2

プログラムの制御構造は,制御フローグラフで記述することができる。制御フローグラフは,処理を逐次実行する命令,繰返し命令,分岐命令に分け,それぞれを処理ブロック(以下,ノードという)として処理の実行順に有向線分(以下,エッジという)で結んだグラフである。ここで,複数条件は,それぞれの単独条件に分解して制御フローグラフに置き換える。
 図2は,図1のテスト対象のプログラムの例にノード番号①〜⑪を付与したものであり,図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について〕
「②func1の実行」の後に続く処理なので、プログラムの順序から考えて③の「a<10の評価」が当てはまります。

c=ア:③

dについて〕
「③a<10の評価」が"真"の場合には「⑤func2」が実行され、"偽"では「④b<20の評価」の処理に移ります。cに続く2つの網かけのノードを比較すると、分岐処理になっている上のノードには"偽"の場合に実行する「④b<20の評価」、下のノードにはの場合に実行する「⑤func2」が当てはまることがわかります。

したがって、dには「③a<10」と「④b<20」の両方が"偽"だった場合のみ実行される「⑥func3」が当てはまります。

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

e=カ:⑩,f=オ:⑧

以下は図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-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop