原因結果グラフ法について
原因結果グラフ法(CEG: Cause Effect Graph Method)とは
原因結果グラフ法とは
原因結果グラフ法とは、仕様の論理的条件を原因結果グラフにまとめ、条件の組合せを表現しながらテストケースを作成するテスト技法です。
原因結果グラフは、米国IBMのウィリアム・R・エルメンドルフ(William R. Elmendorf)によって考案されたテスト技法です。
1970年の論文『Automated Design of Program Test Libraries』において、テスト設計プロセスを自動化するTELDAP(Test Library Design Automation Program)というツールが提唱され、その中で原因結果グラフが紹介されています。
原因結果グラフ法は、ブラックボックステスト技法のひとつです。
この技法は、複数の条件が絡み合い、入力する条件の組み合わせによって実行結果が変わるようなシステムをテストする場合に有効です。
原因結果グラフとは
原因結果グラフとは、システムへの入力条件と、それに対応するシステムの動作との間の論理関係を視覚化したグラフのことです。
原因とは入力やイベントの組み合わせのことであり、結果とは出力を意味します。
原因結果グラフ法の実施手順
1.原因結果グラフを作成する
テスト対象を分析して原因結果グラフを作成します。
詳細は後述します。
2.デシジョンテーブル(決定表)を作成する
原因結果グラフから論理関係を網羅するデシジョンテーブルを作成します。
原因結果グラフからデシジョンテーブルを作成することは、非常に手間であり、ミスしやすい作業といえます。
そのため、テストツールを用いて、自動的にデシジョンテーブルを作成すると効率的です。
原因結果グラフのテストツールとしては、「CEGTest」が有名です。
3.テストケースを作成する
デシジョンテーブルをもとにしてテストケースを作成します。
デシジョンテーブルテスト(決定表テスト)を実施するときと同様の手順となります。
参考:デシジョンテーブル(決定表)
原因結果グラフの作り方
ノードとリンク
原因結果グラフの基本表現は、ノード同士を線で接続(リンク)して、論理演算を表します。
原因(Cause)と結果(Effect)の関係性を以下のように表現します。
プログラム的に表現すると「if c is 1, then e is 1. Else e is 0. 」となります。
否定の場合には下記のように表記します。
プログラム的に表現すると「if c is 1, then e is 0. Else e is 1. 」となります。
論理関係
OR(論理和)の関係性を以下のように表現します。
プログラム的に表現すると「if c1 or c2 or c3 is 1, then e is 1. Else e is 0. 」となります。
AND(論理積)の関係性を以下のように表現します。
プログラム的に表現すると「if both c1 and c2 and c3 is 1, then e is 1. Else e is 0. 」となります。
制約
原因結果グラフでは、ある条件の値に制限をかけたり、不可能な原因の組み合わせや不可能な結果の組み合わせを表すために、「制約」という概念を用います。
制約は以下の5種類があります。
- ONE:真になるノードは1つだけ
- EXCL:あるノードが真になったとき、ほかのノードは偽
- INCL:少なくとも1つ以上のノードが真
- REQ:あるノードが真となるために、先に真になっているノードが必要
- MASK:あるノードが真になると、真偽を問われなくなるノードがある