見出し画像

第221回: 「ソフトウェアテストしようぜ」35 CEGTest(5. ロジックを網羅する 後編)

◀前の記事へ 次の記事へ▶


≡ はじめに

前回は、「ロジックを網羅する」の中編で、NOTに続いてANDの場合を考えました。

今回は、ORが網羅するものについて確認していきます。ANDと同様に原因結果グラフの肝の部分です。

NOTはノード名の表現を工夫することで、使わないことすら可能です。また、デシジョンテーブルのルールの数を減らすものでもありません。
その意味で、原因結果グラフにおいては、ANDとORの理解が特に大切です。

※ NOTは、読み取りやすい自然な原因結果グラフを描くために使います。

私が知る限り、CEGTestや市販の原因結果グラフツールのロジックは、最終的な結果ノードと中間ノードを同じように扱います。(マイヤーズ本のロジックは違いそうです)
したがって、この3回(前・中・後編)の内容から、多段階になった原因結果グラフのデシジョンテーブルもつくることができます。
(手作業でデシジョンテーブルをつくる人はいないと思いますが、何を網羅しているかの仕組みを理解して説明できるようになることは、品質保証の上から大切です)

デシジョンテーブルに現れる組合せを網羅するために使用する“原因結果グラフからデシジョンテーブルを作成するときのワークシート”である「カバレッジ表」(CEGTestツールでは邪魔者扱いされ、画面から消されることが多い表)については、多段階になった原因結果グラフからデシジョンテーブルを作る回と制約の回で書く予定です。今のところは仕組みだけわかってもらえればOKです。



≡ ANDとOR

前回と同じ見出しです。前回はANDについて書きましたので、今回はORについて書きます。

■ ORのケース

一般に「または」でつながる複数の条件の関係を「OR」と呼びます。

例えば、女優の松本穂香さんと、伊藤沙莉さんのファンがいたとします。広瀬すずさんと、今田美桜さんでも構いません。けんかになるといけませんので、例題としては、4人を対象とします。

例題:
女優の松本穂香さんと、伊藤沙莉さんと、広瀬すずさんと、今田美桜さんの大ファンがいたとします。
この人がドラマを観るか観ないかを決める時の意思決定について考えます。
この意思決定のデシジョンテーブルを作成しなさい。

好きな女優さんが出ているドラマは観たいものです。
たとえ、一人しか出演していなくても観るでしょうし、4人全員が出演していたら当然見ることでしょう。でも、好きな女優が1人も出ていなかったら気分次第かもしれません。ここでは、単純に「好きな女優が1人も出ていないようなら観ない」とします。(何か、話を進めるときには自分が勝手に置いた前提条件を書いておくと、何でそう考えたのかがわかるので良いです)

「2人以上が出演しているドラマでないと観ない」という人がいるかもしれません。
4人の女優のそれぞれは、出演する・出演しないの状態をもちます。
従って、全組合せは、2⁴=16通りです。

次に全16通りの組合せのうち、0人のパターンが1通り、1人のパターンが4通りなので、2人以上は16-1-4=11通りとなります。

さて、みなさんは、11通りのテストをしますか? それとも、このデシジョンテーブルをさらに簡単化する良い方法を考えますか??

※ 面白いテーマですが、本題から外れますので、今日のところは、これ以上は考えないことにします。

原因結果グラフとデシジョンテーブルを示します。

好きな女優の出演とドラマ視聴の意思決定

結果ノードに付いている「∨」記号はORの意味です。
なんか、バカみたいなことを書いていますよね。「もっといい例はないのか?」と言いたくなります。
でも、これでも一所懸命に考えた結果です。

法律やスポーツのルールから、ORの例題はたくさんみつかります。
また、特定のソフトウェアを想定して、この箇所という説明のしかたも有効とは思います。
でも、平易な例が欲しいなあと考え出すと時間が溶けます。(笑)🫠

さて、上記のCEGTestが出力したデシジョンテーブルを確認します。そのために、再掲します。

好きな女優の出演とドラマ視聴の意思決定

まず、一番右側の列(#5)では全ての条件が「F」のケースとなっています。
前回のANDのデシジョンテーブルの一番左の列が、全て「T」となっているのと対称的です。前回の例を再掲します。

「傘を持つ」意思決定を表すデシジョンテーブル

次に、ORのデシジョンテーブルでは残りの列(今回でしたら#1〜#4列)について、どの列(ルール)も条件が1つだけ「T」となり、残りの条件は「F」となっています。
比較のため、前回示したANDのデシジョンテーブルを再掲します。

条件が5つの場合の原因結果グラフとデシジョンテーブル

こちらも、まったく対称的です。

前回と今回のデシジョンテーブルから確認できたことをまとめます。

■ ANDのデシジョンテーブル
 1. 全ての条件が「T」の列がある
 2. 残りの列は条件が1つだけ「F」となり、残りの条件は「T
 ※ 1では、各条件がTの時に、結果がTになること、2では、各条件がFだから結果がFになることを確認している。要は各条件(原因・入力)のT/Fが結果に影響を与えていることを確認している。

■ ORのデシジョンテーブル
 1. 全ての条件が「F」の列がある
 2. 残りの列は条件が1つだけ「T」となり、残りの条件は「F
 ※ 1では、各条件がFの時に、結果がFになること、2では、各条件がFだから結果がFになることを確認している。

■ 共通していること
 1. 列の数は「条件の数+1」
 ※ 例えば、条件が10個なら、全組合せである2¹⁰ = 1024が、10+1 = 11通りに簡単化される。

となっていることがわかりました。



≡  おわりに

今回は、「ロジックを網羅する」の後編でした。前回のAND(∧)に続いてOR(∨)の場合を考えました。ANDと対称的なことが分かっていただけたと思います。

デシジョンテーブルの簡単化と同じですので、デシジョンテーブルの簡単化を復習すると良いかもしれません。

今回、書籍による方法は書きませんでした。気になる人だけ読んでもらえばいいかなと思ったからです。

次回は、この連載でずっと使ってきているCEGTestツールの操作方法について書こうと思っています。ドリル本よりも詳しく書きたいです。

これから使用する原因結果グラフが、どんどん複雑になってくるので、その時に困らないように。

◀前の記事へ 次の記事へ▶


この記事が気に入ったらサポートをしてみませんか?