戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2013年 秋期 午後 問05


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

 システムインテグレータのN社は、開発したプログラムに対するバグの摘出漏れの削減を目的として、テストの方法を見直している。   〔N社のテスト方法に関する説明〕  N社では主にホワイトボックス法の一つである制御フローテストで、開発したプログラムのテストを実施している。  制御フローテストは、プログラムを構成する最小単位である命令、経路、判定条件に着目し、テスト計画時に定めたカバレッジ基準を満たすテストケース、テストデータを作成して、開発したプログラムの動作を確認するテスト方法である。  カバレッジ基準としては、テストにおいて全ての命令文を1回は実行する命令網羅、全ての分岐について分岐後の全ての経路を1回は実行する判定条件網羅(以下、分岐網羅という)などがある。  N社は、カバレッジ基準として分岐網羅を採用している。   〔N社が採用している分岐網羅の判定条件に関する説明〕  分岐の判定条件には、一つの条件だけを評価する単独条件と、二つ以上の単独条件をand又はorで組み合わせて評価する複数条件がある。単独条件と複数条件の例を次に示す。
基本情報技術者試験(平成25年 午後 問5 単独条件と複数条件の例)
 ここで、プログラムの実行時に、複数条件については短絡評価を行うものとする。  短絡評価とは、複数条件を構成する単独条件を左から右へ向かって順に評価し、複数条件の結果が確定したら、残りの単独条件を評価しない方法である。例えば、二つの単独条件をandで組み合わせた複数条件の場合、一つ目の単独条件を評価した結果が偽ならば、複数条件は二つ目の単独条件に関係なく必ず偽になるので、二つ目の単独条件を評価しない。

設問1:

問題文を見る
 N社が採用している分岐網羅の判定条件に関する次の記述中のに入れる正しい答えを、解答群の中から選べ。    図1はテスト対象のプログラムの例、表1はこのプログラムのテストケースの例である。N社が採用している分岐網羅の判定条件に従って、このテストケースを用いて、図1のプログラムをテストしたとき、テストケース①ではa結果となり、テストケース②ではb結果となる。
基本情報技術者試験(平成25年 午後 問5 図1)
基本情報技術者試験(平成25年 午後 問5 表1)
a, bに関する解答群  ア:b < 20が評価されない  イ:b < 20とc > 10が評価されない  ウ:b < 20とd > 10が評価されない  エ:c > 10が評価されない  オ:c > 10とd > 10が評価されない  カ:d > 10が評価されない  キ:全ての単独条件が評価される

模範解答

a:ウ、b:キ

解説

解答の導き方

この設問では、テストケース①とテストケース②で、条件の一部が評価されるかどうかを確認します。
図1の「(a < 10) or (b < 20)」と「(c > 10) and (d > 10)」は、複数の単独条件を組み合わせた条件です。本文には、短絡評価では「複数条件の結果が確定したら、残りの単独条件を評価しない」とあります。
このため、orでは左側が真なら右側を調べなくても全体が真と分かります。andでは左側が偽なら右側を調べなくても全体が偽と分かります。
テストケース①
  • まず、xは11なので、x > 10は真です。繰返しの中に進みます。
  • 1つ目の複数条件では、aは9なので、a < 10は真です。orの左側が真になった時点で複数条件全体も真と確定するため、b < 20は評価されません。
  • 2つ目の複数条件では、cは10なので、c > 10は偽です。andの左側が偽になった時点で複数条件全体も偽と確定するため、d > 10は評価されません。
したがって、評価されないのは「b < 20」と「d > 10」です。答えはウです。
テストケース②
  • xは11なので、x > 10は真です。
  • 1つ目の複数条件では、aは10なので、a < 10は偽です。orの左側だけでは全体の結果が決まらないため、b < 20も評価します。bは20なので、b < 20も偽です。
  • 2つ目の複数条件では、cは11なので、c > 10は真です。andの左側だけでは全体の結果が決まらないため、d > 10も評価します。dは11なので、d > 10も真です。
このテストケースでは、x > 10、a < 10、b < 20、c > 10、d > 10の全てが評価されます。答えはキです。

誤りやすいポイント

  • 評価されなかった条件を、偽と決めつけないこと。 条件を評価していない場合、その条件自体が真か偽かは分かりません。
  • orとandで、評価が省略される場合を取り違えないこと。 orは左側が真なら全体が真と決まり、andは左側が偽なら全体が偽と決まります。
  • 分岐の結果と、単独条件の評価有無を混同しないこと。 複数条件全体の結果が決まると、その後の単独条件は実行されないことがあります。

FAQ

Q: テストケース①で、b < 20は偽かもしれません。それでも評価されないのですか?
A: 評価されないため、b < 20が真か偽かは判断できません。a < 10が真の時点で、or全体が真と決まるからです。
Q: テストケース②では、a < 10が偽なのに、なぜb < 20を評価するのですか?
A: orは、左側が偽でも右側が真なら全体が真になります。そのため、全体の結果を決めるにはb < 20を調べる必要があります。
Q: 短絡評価はどのような条件で評価を省略しますか?
A: orでは左側が真のとき、andでは左側が偽のときに、右側を調べずに全体の結果を決められます。

関連キーワード: 短絡評価、単独条件、複数条件、分岐網羅、制御フローテスト

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

 プログラムの制御構造は、制御フローグラフで記述することができる。制御フローグラフは、処理を逐次実行する命令、繰返し命令、分岐命令に分け、それぞれを処理ブロック(以下、ノードという)として処理の実行順に有向線分(以下、エッジという)で結んだグラフである。ここで、複数条件は、それぞれの単独条件に分解して制御フローグラフに置き換える。  図2は、図1のテスト対象のプログラムの例にノード番号①〜⑪を付与したものであり、図3は、それに対応する制御フローグラフである。図3のノード番号は、図2中のノード番号に対応する。図3のノードSとノードEは、それぞれプログラムの入口と出口を表す特別なノードであり、テスト対象のプログラムの例には対応する処理はない。図3の制御フローグラフ中のに入れる適切なノード番号を、解答群の中から選べ。
基本情報技術者試験(平成25年 午後 問5 図2)
基本情報技術者試験(平成25年 午後 問5 図3)
c~fに関する解答群  ア:③  イ:④  ウ:⑤  エ:⑥  オ:⑧  カ:⑩  キ:⑪

模範解答

c:ア、d:エ、e:カ、f:オ

解説

解答の導き方

この問題では、図2の処理や条件に付いた番号を、図3の空欄に当てはめます。
制御フローグラフは、処理や条件をノード(円)で表し、実行される順序をエッジ(矢印)で表した図です。問題文には「複数条件は、それぞれの単独条件に分解して」グラフにするとあります。したがって、orやandでつながった条件も、一つずつ評価する流れとして考えます。
まず、図2の①の繰返し条件が真になった後、②のfunc1()を実行します。その次に評価するのは、③の条件「(a < 10)」です。よって、②から続く図3の[c]には③が入ります。
③と④はorでつながっています。③が真なら、or全体が真と決まるので、④は評価せずに⑤のfunc2()へ進みます。③が偽なら、④の「(b < 20)」を評価します。④が真なら⑤のfunc2()へ、偽なら⑥のfunc3()へ進みます。
図3では、[c]の後に上側と下側の円があり、上側の円から下側の円と[d]へ進む矢印があります。この流れは、③が偽のときに次の条件④を評価し、④の結果によって⑤または⑥へ進む形と一致します。したがって、上側の円が④、下側の円が⑤、[d]が⑥です。
次に、⑦の条件「(c > 10)」を見ます。これは⑧の「(d > 10)」とandでつながっています。andでは、⑦が偽なら全体が偽と決まるため、⑧を評価せずに⑩のfunc5()へ進みます。⑦が真なら⑧を評価し、⑧が真なら⑨のfunc4()を実行して繰返しを抜けます。⑧が偽なら⑩のfunc5()へ進みます。
図3では、⑦から直接つながる左側の空欄がe、もう一方がfです。fからはeと⑨へ矢印が出ています。この分岐は、⑦の後に⑧を評価し、⑧の結果によって⑩または⑨へ進む流れに当たります。そのため、fには⑧、eには⑩が入ります。⑩の後に図2の⑪を通って①に戻る流れも、図3のeから左端の円を経て①へ戻る矢印と一致します。
以上から、cは③(ア)、dは⑥(エ)、eは⑩(カ)、fは⑧(オ)と判断できます。

誤りやすいポイント

  • orやandで結ばれた条件を、ひとまとまりの一つの条件として扱わないようにします。この問題では、③・④や⑦・⑧を別々のノードとして考えます。
  • ③が真のときは、or全体が真と決まります。④へ進むのは、③が偽のときです。
  • ⑦が偽のときは、and全体が偽と決まります。そのため、⑧を評価せずに⑩へ進みます。
  • 図3の矢印は、実行される可能性のある流れを表します。矢印の向きをたどり、どの条件の評価後にどの処理へ進むかを確かめます。

FAQ

Q: 短絡評価とは何ですか?
A: 複数の条件を左から順に調べ、全体の真偽が決まった時点で、残りの条件を調べない方法です。この問題では、orの最初の条件が真なら次の条件を調べず、andの最初の条件が偽なら次の条件を調べません。
Q: ⑨とEは同じものですか?
A: 違います。⑨は図2のfunc4()に対応するノードです。⑨の後にexitで繰返しを抜け、図3のE(プログラムの出口)へ進みます。
Q: ⑩から①へ直接戻るのですか?
A: 直接ではありません。図2では⑩のfunc5()の後に⑪のfunc6()を実行してから、繰返し条件①に戻ります。図3でも、⑩に当たるeから左端の円を経て①へ戻る流れになっています。

関連キーワード: 制御フローグラフ、ノード、エッジ、短絡評価、分岐網羅

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

 次の記述中のに入れる正しい答えを、解答群の中から選べ。    図1のプログラムのテストにおいて、N社が採用している分岐網羅の場合、最低限必要となるテストケースの数はgである。  これに対して、制御フローグラフから経路を抽出してテストケースを作成する方法がある。制御フローグラフの全てのエッジとノードを網羅する、最小の経路の数(S)は、次の式で求められる。     S = エッジの数 − ノードの数 + 2    抽出した経路に対応したS個のテストケースについてテストを行うことによって、分岐網羅以上の高いカバレッジを保証することができる。  図3の制御フローグラフから、Sを求めるとhとなる。N社は、バグの摘出漏れの削減を目的として、制御フローグラフに基づくテストケースでプログラムのテストをすることとした。   g, hに関する解答群  ア:2  イ:3  ウ:4  エ:5  オ:6  カ:7

模範解答

g:イ、h:オ

解説

解答の導き方

この設問では、gは分岐網羅に必要なテストケース数、hは図3の制御フローグラフから求める数です。
カバレッジとは、テストでプログラムのどの処理まで確認できたかを示す度合いです。分岐網羅では、各条件について、結果が真になる場合と偽になる場合の両方を確認します。
gを求めます。
図1には、確認する分岐が三つあります。
  • 繰返しの条件「x > 10」
  • 複数条件「(a < 10) or (b < 20)」
  • 複数条件「(c > 10) and (d > 10)」
まず、繰返しの条件が偽になると、繰返しの中には入りません。そのため、内側の二つの条件を確認するテストケースとは別に、繰返しの条件が偽になるテストケースが必要です。
次に、内側の二つの条件について考えます。それぞれの条件で、結果が真になる場合と偽になる場合が必要です。繰返しの中を1回実行すると、それぞれの条件で確認できる結果は真か偽のどちらか一方です。したがって、内側の条件の結果を両方確認するには、繰返しの中を実行するテストケースが2件必要です。
この2件では、二つの内側の条件について、真と偽の組合せを分けて確認できます。よって、繰返しの条件が偽になる1件と、繰返しの中を実行する2件を合わせ、最低限必要なテストケース数は3件です。
なお、分岐網羅では、複数条件全体の結果が真になる場合と偽になる場合を確認します。複数条件を構成する単独条件すべての組合せを試す基準ではありません。また、短絡評価では、結果が確定した後の単独条件は評価されません。
hを求めます。
制御フローグラフは、プログラムの処理の流れを丸と矢印で表した図です。丸をノード(処理や判定などを表すもの)、矢印をエッジ(処理のつながり)と呼びます。
図3のノードは、開始と終了を含めて13個です。空欄の丸や網掛けの丸も、ノードとして数えます。エッジは、矢印を一本ずつ数えると17本です。図2でノード番号が付いていないexitは、図3でも独立したノードとして表されていないため、数に加えません。
問題文にある式「エッジの数 − ノードの数 + 2」に当てはめます。
したがって、図3の制御フローグラフから求める数は6です。

誤りやすいポイント

  • 繰返しの条件が偽の場合、繰返しの中の処理や分岐は実行されません。内側の条件を確認するテストケースとは分けて考えます。
  • 分岐網羅で確認するのは、複数条件全体の真と偽です。単独条件のすべての組合せを確認するわけではありません。
  • 短絡評価では、複数条件の結果が確定すると、残りの単独条件は評価されません。
  • hを求めるときは、空欄や網掛けの丸もノードに数えます。
  • exitは図3で独立したノードとして描かれていないため、ノード数に加えません。

FAQ

Q: 分岐網羅では、複数条件を構成する単独条件の組合せをすべて試しますか?
A: いいえ。確認するのは、複数条件全体の結果が真になる場合と偽になる場合です。単独条件の組合せまで確認する基準ではありません。
Q: 短絡評価とは何ですか?
A: 条件を左から順に評価し、複数条件の結果が決まった時点で、残りの条件を評価しない方法です。たとえば、orの左側が真なら、全体の結果も真と決まるため、右側は評価しません。
Q: なぜ図3では、空欄や網掛けの丸もノードに数えるのですか?
A: ノード数は、図に描かれた丸の数だからです。丸の中に数字や処理名が書かれているかどうかにかかわらず、丸一つをノード一つとして数えます。

関連キーワード: 制御フローテスト、分岐網羅、短絡評価、制御フローグラフ、ノード、エッジ

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

戦国ITクイズ機能

\ せっかくなら /

基本情報技術者を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について