« 2011年12月 | トップページ | 2013年8月 »

原因結果グラフの中間ノードが観測不可な場合について

TEFで原因結果グラフの「観測可能」についての解説があったので、すこしまとめてみました。

==

中間ノードが観測可能であるとは、テスト実施後にそのノード(状態や内部変数)が直接確認(観測)できることを言う。特に内部変数はデバッグ出力などを使わないと観測可能にはならないので、プログラムテストではデバッグ出力を用いて観測可能にすることが多い。

CEGTestでのデシジョンテーブル作成ロジックでは、すべての中間ノードが観測可能という前提で実装されています。グラフの形にもよりますが、デシジョンテーブルの1列が複数の論理関係を検証できるため、カバレッジ表よりもデシジョンテーブルの大きさが小さくなります。

では、観測可能ではない(観測不可)中間ノードがある場合はどう考えたらよいか。

Ceg2

このグラフではAが中間ノードになるので、Aが観測可能であればデシジョンテーブルは以下のように作成できる。

Dt2obs

では、Aが観測不可である場合、他にどんなテスト条件を確認すべきでしょうか。

その前に上記デシジョンテーブルの各列が「何を」検証しているかを再確認。


  • #1


    • a1がTであることによって、中間ノードAがTになることを検証している。

    • A,B,CがすべてTであることによって、結果ノードXがTになることを検証している。


  • #2


    • a2がTであることによって、中間ノードAがTになることを検証している。

    • BがFであることによって、結果ノードXがFになることを検証している。


  • #3


    • a3がTであることによって、中間ノードAがTになることを検証している。

    • CがFであることによって、結果ノードXがFになることを検証している。


  • #4


    • a1,a3,a3がすべてFであることによって、中間ノードAがFになることを検証している。

    • AがFであることによって、結果ノードXがFになることを検証している。


さて、Aが観測不可と考えると、#1は、


  • a1,B,CがTであることによって、結果ノードXがTになることを検証している。


というように見なせる。言い換えれば、a2,a3が結果ノードXがTになることに影響を及ぼしているかについては未検証と言える。さらに、#2~#4でもa2,a3がTになることが結果ノードXをTにする検証にはならない。


したがって、僕の解釈では、2つの列を追加すべきと考える。

Dt2kase

ただ、テスト実施は#6からはじめたほうがいいかもしれないなあ。

| | コメント (1) | トラックバック (0)

« 2011年12月 | トップページ | 2013年8月 »