マナビング基本情報技術者

複数条件網羅で不足する真偽の組合せは?

基本情報技術者試験 平成30年度春期 午前 問49 / システム開発技術 › ソフトウェア構築

過去問にチャレンジ

平成30年度春期 午前 問49

プログラムの流れ図で示される部分に関するテストデータを,判定条件網羅(decision coverage)によって設定した。このテストデータを複数条件網羅(multiple condition coverage)による設定に変更するとき,加えるべきテストデータのうち,適切なものはどれか。ここで,( )で囲んだ部分は,一組みのテストデータを表すものとする。 【図表1】 ・判定条件網羅によるテストデータ (A=4,B=1),(A=5,B=0)

平成30年度春期 午前 問49の図
  1. ア

    (A=3,B=0),(A=7,B=2)

  2. イ

    (A=3,B=2),(A=8,B=0)

  3. ウ

    (A=4,B=0),(A=8,B=0)

  4. エ

    (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)は(偽,真)です。複数条件網羅には残りの(真,偽)と(真,真)を追加する必要があります。

選択肢ごとの解説

  1. ×ア  (A=3,B=0),(A=7,B=2)
    追加する(3,0)は(偽,真)、(7,2)は(真,偽)です。後者で一つの不足分は埋まりますが、両条件が真になるデータがありません。
  2. ×イ  (A=3,B=2),(A=8,B=0)
    追加する(3,2)は(偽,偽)、(8,0)は(真,真)です。A>6が真でB=0が偽となる組合せが残ります。
  3. ×ウ  (A=4,B=0),(A=8,B=0)
    追加する(4,0)は(偽,真)、(8,0)は(真,真)です。どちらもB=0が真なので、A>6だけが真となる組合せを試せません。
  4. ○エ  (A=7,B=0),(A=8,B=2)
    追加する(7,0)は(真,真)、(8,2)は(真,偽)です。既存の二組と合わせて、二つの条件の真偽を全4通り試せます。

POINT

  • 複数条件網羅では、判定式全体だけでなく、それを構成する各条件の真偽の組合せを確認します。
  • A>6はAが6を超えるときだけ真です。
  • B=0はBが0のときだけ真です。

※出典:平成30年度春期 基本情報技術者試験 午前 問49(一部改変)