判定条件網羅|情報処理安全確保支援士 令和4年 秋期午前Ⅱ試験 問22

出典:令和4年秋期 午前Ⅱ 問22 分野:システム開発技術 / 実装・構築
あるプログラムについて,流れ図で示される部分に関するテストケースを,判定条件網羅(分岐網羅)によって設定する。この場合のテストケースの組合せとして,適切なものはどれか。ここで,()で囲んだ部分は,一組みのテストデータを表すものとする。 判定条件網羅の流れ図
  • ア:(A = 1,B = 1),(A = 7,B = 1)
  • イ:(A = 4,B = 0),(A = 8,B = 1)
  • ウ:(A = 4,B = 1),(A = 6,B = 1)
  • エ:(A = 7,B = 1),(A = 1,B = 0)
解説

判定条件網羅(分岐網羅)は、判定式全体の結果が真になる場合と偽になる場合を、それぞれ少なくとも1回ずつ実行するテスト方法です。

この問題の判定条件は「A > 6 or B = 0」です。A > 6又はB = 0のどちらか一方でも成立すればYesとなり、どちらも成立しなければNoとなります。

選択肢アでは、(A = 1,B = 1)のとき、A > 6は偽、B = 0も偽なのでNoになります。一方、(A = 7,B = 1)のときはA > 6が真なのでYesになります。

この二つのテストケースによってYes側とNo側の両方の分岐を通るため、判定条件網羅を満たします。

したがって、アが適切です。

❌他選択肢が誤りの理由
イ:(A = 4,B = 0),(A = 8,B = 1)
⇒どちらも判定結果がYesになります。No側の分岐を通らないため、判定条件網羅を満たしません。
ウ:(A = 4,B = 1),(A = 6,B = 1)
⇒どちらも判定結果がNoになります。Yes側の分岐を通らないため、判定条件網羅を満たしません。
エ:(A = 7,B = 1),(A = 1,B = 0)
⇒どちらも判定結果がYesになります。No側の分岐を通らないため、判定条件網羅を満たしません。
TSUNAGARU-ADVICE

まず押さえたいこと

判定条件網羅、つまり分岐網羅では、判定結果がYesになる場合とNoになる場合の両方を少なくとも1回ずつ通るようにテストケースを設定します。

迷ったときの判断軸

条件は「A > 6 or B = 0」なので、Aが7以上、又はBが0ならYesになります。Noにするには、Aが6以下で、かつBが0ではない必要があります。したがって、条件全体が真になるデータと偽になるデータがそろっている組合せを選びます。

科目Bにつなげるために

判定条件網羅などのテスト網羅基準そのものは、支援士試験の科目Bで中心的に問われる可能性は高くありません。科目Aでは、判定式全体が真になる場合と偽になる場合の両方を実行する考え方を押さえておきましょう。科目B対策では、セキュアコードレビュー・脆弱性検査・セキュリティテスト・入力値検証など、脆弱性を開発段階で発見・防止する取組を優先しましょう。