第224回: 「ソフトウェアテストしようぜ」38 CEGTest(8. CEGTestツールの使い方 後編)
◀前の記事へ 次の記事へ▶
≡ はじめに
前回は、「CEGTestツールの使い方」の中編で、CEGTestツールを使用して以下のマインドマップをつくるまででした。
もう、ほとんど原因結果グラフに見えるのですが、マインドマップには、論理関係が入っていません。論理関係とは、前にやった、NOTとANDとORのことです。
上記のマインドマップを見ると、「参加する」という判定は、「興味ある」と「時間ある」から決まることがわかります。でも、
参加する = 興味ある ∧ 時間ある
と、
参加する = 興味ある ∨ 時間ある
のどちらなのか、図には表現されていません。
今回は、論理記号を追加して、さらに原因ノードを追加しつつ制約を設定する操作について書きます。
≡ CEGTestツールで論理記号を入力
それでは、上記マインドマップから原因結果グラフをつくります。
■ ノードの配置
まずは、同じ文字が入ったノードを同じように配置します。ノードの置き方と移動方法は前回にあります。
■ リンクの入力
ここまで出来たら、リンク線を引きながら同時に論理関係を入力していきます。
原因結果グラフを作成するときに、私は、右側の結果ノードから遡りながらつくっています。
この例で言えば、『興味があって、しかも、時間があるときに参加すると決めるよなあ』と考えながら、「参加する」、「興味がある」、「時間ある」をリンクします。
ノード間にラインを引くときの操作方法について説明します。
まず、CEGTestのモードを「リンクの入力モード」にする必要があります。
「リンクの入力モード」にする方法は、画面上部にある「/」ボタンを押すだけです。次の図は「/」ボタンを押した結果、ボタンが凹んだところです。
すべきことは、黄色のメッセージエリアに出ています。今は、「原因(あるいは起点)となるノード(あるいは制約)をクリックしてください」というメッセージが出ています。
そこで、「参加する」という結果ノードの原因の一つである「興味がある」ノードをクリックします。「興味がある」をクリックすると画面はこう変わります。
メッセージ欄をみます。
「始点=興味がある」と書いてあります。
これは、これから引くラインの始点が「興味がある」ノードであることを示しています。
そして「興味がある」ノードを見ると、上図のとおり【原因】と書かれています。「原因ノードとして選択中」ということを意味しています。マウスカーソルを結果ノードの「参加する」の上に移動すると、「参加する」ノードの下に【結果】という文字が現れました。
この【原因】と【結果】が表示されているときにマウスをクリックすると原因ノードと結果ノードが結ばれ、結果ノードの位置に、論理関係を指定するメニューが現れます。
今回は、「興味があって、しかも(かつ)、時間があるときに参加する」という論理関係を入力したいわけですから、「∧」(AND)を選択します。
「参加する」ノードに「∧」記号が付いたことに注目しましょう。
続いて、「時間がある」をクリックし、「参加する」をクリックします。参加するノードの論理記号は「∧」に決定していますので今度は論理関係を指定するメニューは現れません。
こうして、右側の3つのノードの論理関係を入力できました。
他のノードの関係も入力します。
「興味がある」ノードは「∧」ではなく「∨」(OR)となっている点に注意してください。「講演者に興味がある、もしくは、テーマに興味があるということは、興味があるということ」という論理関係なので、「∨」(OR)となります。
■ 制約の追加
上記の原因結果グラフは抽象度が高いものです。「プライベート面で問題なし」について、具体的なノードを追加してみます。
このように、右側からつくると具体・詳細化をするだけなのでつくりやすいです。
なお、NOTの入力は原因側のノードを2回クリックしてから結果ノードをクリックします。
さて、「習い事の日」のところをみると、「ジム」と「ピアノ」が「∨」でぶら下がっています。【同じ日に、「ジム」と「ピアノ」の両方に行くことはない】という前提条件があるとすると、それは制約として指定します。
「EXCL」ボタンを押して、[EXCLアイコン]を配置後、「ジム」、「EXCL」、「ピアノ」の順番にクリックします。
完成した原因結果グラフはこちらになります。
原因結果グラフが完成したので、CEGTestが作ってくれていたデシジョンテーブルを載せておきます。
≡ おわりに
今回は、「CEGTestツールの使い方」の後編でした。前回の「テスト分析」と対比すれば、「テスト設計」をしたということです。
原因結果グラフの作成は、このように、まず、大きな論理構造を少数のノードで結果ノードから原因ノードは遡るようにしてつくり、次に、テストケースを意識しながら、最左端の原因ノードについて同値分割してクラスに分割し、最後に、制約をつけるという手順でおこなうと良いと思っています。
次回から制約についての説明がはじまります。
まずは、「制約ってなに?禁則と同じもの?違うもの?」、「制約をつけるとデシジョンテーブルはどうなるの?」といった基礎的な説明と、1番簡単で分かりやすい[ONE]について書く予定です。
◀前の記事へ 次の記事へ▶
この記事が気に入ったらサポートをしてみませんか?