第234回: 「ソフトウェアテストしようぜ」46 CEGTest(16.カバレッジ表前編)
◀前の記事へ 次の記事へ▶
≡ はじめに
前回は、「制約MASK」の例題の説明でした。
ちょっと難しかったけれど、「制約MASKは使わない」という、ある意味、最強の回避策があります。
最強というのは、制約MASKを使わないで済むようにテスト対象物をつくることが良い設計につながるという意味です。
そうするためには、上流工程の要件定義レビューあたりでCEGTestを使用して「この要件をもっと簡単にしよう」という必要があります。
例えば、例に挙げた、[終日]にチェックを入れると[(ユーザー指定)開始時刻]と[(ユーザー指定)終了時刻]の2つがMASKされて消えてしまうGUIが要件定義書に書いてあったとします。
この要件が通ってしまいますと、「制約MASK」を使う必要が生じます。そこで「別の実現方法を考えられませんか?」と質問します。
前回、上記仕様が13年後にどう変わったかを載せました。
[終日]チェックボックスは無くなっていませんので、制約MASKを使うことになりますが、[(ユーザー指定)開始時刻]と[(ユーザー指定)終了時刻]の2つのGUIアイテムが消えずに残っていることで、テスト設計がずっと容易になっています。
さて、原因結果グラフの最難関の制約の説明は終わったので、今回から「カバレッジ表」のテーマに移ります。カバレッジ表が終われば、CEGTestの章は終わりです。
≡ カバレッジ表とは
今回は、カバレッジ表の紹介までとなります。
実際のところ、カバレッジ表について知らなくてもCEGTestで原因結果グラフを入力して生成されたデシジョンテーブルの列をすべてテストしたらいい感じに有則の組合せを網羅したテストになります。したがって、初めのうちはカバレッジ表を積極的に使う動機は少ないものです。
しかし、CEGTestツールが何を網羅したテストをしているのか、CEGTestツールが網羅していない重要なテストとはなにか?
それらの情報が書かれているもの、それがカバレッジ表です。
■ カバレッジ表の読み方
実物を見てもらうのが早いと思いますので、ドリル本の例を引用します。
以上がドリル本でのカバレッジ表の説明です。
■ 丁寧な説明
決して分かりにくく書こうとしたわけではないため、上の説明でもわかるとは思います。
でも、分かりにくそうなところ(太字箇所)もあるので、そちらを説明していきます。
「∧∨に対して」のところが分かりにくいのではと思います。「∧∨に対して」とは、今回の原因結果グラフで言えば、下図の赤矢印が指している個所のことを言っています。
※ 原因ノードに対してのカバレッジを取ろうとしていないことに注意が必要です。たまに「CEGTestツールがつくるデシジョンテーブルに現れない原因ノードがある(CEGTestのバグだ)」という人がいらっしゃいますが、【単体テストを終わらせてから原因結果グラフを使う】ようにしましょう。
赤矢印の個所は、論理式で書けば、
「一般ユーザー ∨ 管理者 = ログイン」
となります。
したがって、「カバレッジ表には∧∨に対して確認すべき論理式がすべて書かれています。」を今回のケースで書きなおせば、
となります。
上記の文中の「確認すべき論理式」と「カバレッジ表」は同じものです。
そこで、「カバレッジ表」に現れる論理式が、原因結果グラフの論理関係「一般ユーザー ∨ 管理者 = ログイン」のなかで確認したいものになっていることを見ていきます。
カバレッジ表を再掲します。
ログインノードに存在する論理式は、
「一般ユーザー ∨ 管理者 = ログイン」
です。
カバレッジ表の中の「論理式1」では、「一般ユーザーがT(True)で、管理者がF(False)だったときに、ログインがT(True)」(一般ユーザーでログインが成功した状態)であることを意味しています。
CEGTestの5回目を思い出してください。思い出してほしいのは以下の個所です。
カバレッジ表の論理式1と論理式2は上の文章の「2. 残りの列は条件が1つだけ「T」となり、残りの条件は「F」」を、論理式3は「1. 全ての条件が「F」の列がある」に対応しています。確認すべき論理式とは、デシジョンテーブルに列として追加するものということです。(カバレッジ表の#1, #2は、デシジョンテーブルの#1, #2列に対応しています)
≡ おわりに
今回は、「カバレッジ表」とはどのようなものかの概要説明でした。
「カバレッジ表がどんなものかは分かったけど、何に使うの……?」と思う人が多いのではないでしょうか。カバレッジ表のフォーマットの説明もまだですし。
そこで、次回は、カバレッジ表の使い方について書こうと思います。
◀前の記事へ 次の記事へ▶
この記事が気に入ったらサポートをしてみませんか?