複数条件網羅で不足する真偽の組合せは?
基本情報技術者試験 平成30年度春期 午前 問49 / システム開発技術 › ソフトウェア構築
過去問にチャレンジ
プログラムの流れ図で示される部分に関するテストデータを,判定条件網羅(decision coverage)によって設定した。このテストデータを複数条件網羅(multiple condition coverage)による設定に変更するとき,加えるべきテストデータのうち,適切なものはどれか。ここで,( )で囲んだ部分は,一組みのテストデータを表すものとする。 【図表1】 ・判定条件網羅によるテストデータ (A=4,B=1),(A=5,B=0)

- ア
(A=3,B=0),(A=7,B=2)
- イ
(A=3,B=2),(A=8,B=0)
- ウ
(A=4,B=0),(A=8,B=0)
- エ
(A=7,B=0),(A=8,B=2)
会話形式の解説
講師複数条件網羅では、判定式を構成する二つの条件について、真偽の組合せをすべて試します。まず、既存のデータを一つずつ判定してみましょう。
受験者(4,1)ではA>6もB=0も偽です。(5,0)ではA>6が偽、B=0が真になります。
講師そのとおりです。残っているのは、A>6が真でB=0が偽の組合せと、両方が真の組合せです。
受験者(7,0)なら両方が真で、(8,2)ならA>6だけが真です。この二組を加えれば四通りそろいます。
講師はい。それが正解です。ほかの候補も、追加する二組がそれぞれ何を試せるかで確かめましょう。
受験者(3,0)と(7,2)の組では、後者がA>6だけ真になる組合せを埋めますね。
講師ただし(3,0)は既存データと同じく、A>6が偽、B=0が真です。両方が真の組合せは残ります。
受験者(3,2)と(8,0)の組なら、両方が真の場合は試せますが、A>6だけが真の場合がありません。
講師そのとおりです。(3,2)は両方が偽で、これも既存データで試しています。
受験者(4,0)と(8,0)の組は、どちらもB=0が真ですね。A>6だけが真になる場合を試せません。
講師はい。(4,0)は偽・真、(8,0)は真・真です。追加する二組がそれぞれ違っていても、必要な四通りがそろうとは限りません。
受験者判定式全体の結果だけを見るのではなく、A>6とB=0を別々に判定して、未確認の組合せを探すのですね。
講師その理解でよいです。この問題では既存の偽・偽と偽・真に、真・偽と真・真を加えれば複数条件網羅を満たします。
まとめ
複数条件網羅では、判定式を構成する各条件の真偽の組合せをすべて試します。既存データで試したのは、A>6とB=0がともに偽の場合と、後者だけが真の場合です。残る真・偽と真・真を試せるのは、(A=7,B=0)と(A=8,B=2)を加える組です。正解はエです。
解答・解説
正解はエです
この問題のテーマ
複合判定「A>6 or B=0」を構成する二つの条件について、複数条件網羅に必要なテストデータを選ぶ問題です。
解き方の考え方
A>6とB=0を別々に真偽判定し、その組合せを調べます。既存の(4,1)は(偽,偽)、(5,0)は(偽,真)です。複数条件網羅には残りの(真,偽)と(真,真)を追加する必要があります。
選択肢ごとの解説
- ×ア (A=3,B=0),(A=7,B=2)追加する(3,0)は(偽,真)、(7,2)は(真,偽)です。後者で一つの不足分は埋まりますが、両条件が真になるデータがありません。
- ×イ (A=3,B=2),(A=8,B=0)追加する(3,2)は(偽,偽)、(8,0)は(真,真)です。A>6が真でB=0が偽となる組合せが残ります。
- ×ウ (A=4,B=0),(A=8,B=0)追加する(4,0)は(偽,真)、(8,0)は(真,真)です。どちらもB=0が真なので、A>6だけが真となる組合せを試せません。
- ○エ (A=7,B=0),(A=8,B=2)追加する(7,0)は(真,真)、(8,2)は(真,偽)です。既存の二組と合わせて、二つの条件の真偽を全4通り試せます。
POINT
- 複数条件網羅では、判定式全体だけでなく、それを構成する各条件の真偽の組合せを確認します。
- A>6はAが6を超えるときだけ真です。
- B=0はBが0のときだけ真です。
