テスト設計で使う原因結果グラフでは、適用するにあたっては前提条件があり、そのひとつとして
制約のテストは別に実施する
というものがある。
例えば、WEBアンケートフォームで性別を選択するラジオボタンが「男」「女」「登録しない」という3つの選択肢だったとすると、性別に関するノード「男」「女」「登録しない」はONE制約になる。
原因結果グラフを使えば、論理関係を網羅するようなテスト条件は見つけられるが、本当にONE制約が機能しているかどうかは確認できない。もしかしたら、いづれの選択肢を選ばなくてもアンケートに回答できてしまうかもしれない。
では具体的に「制約のテスト」ってどんなテストをするのか?これについても原因結果グラフを使うと面白い結果が出てくる。
ONE制約
A,B,Cという3つのノードに対してONE制約がついているとすると、ベン図では以下のような表現できる。ただひとつだけがTになる領域が3か所ある。

これを原因結果グラフで表現してみる。


結果ノードにあたる「ONE制約が成立」がTの場合を、「正常系」、Fの場合を「異常系」とするならば、一般にN個のノードにONE制約がついた場合の「制約のテスト」は
正常系: N (回)
異常系: N * ( N - 1 ) / 2 + 1 (回)
となりそうだ。
EXCL制約
A,B,Cという3つのノードに対してEXCL制約がついているとすると、ベン図では以下のような表現できる。ONE制約の他に全てがFになる領域が増えたもの。



一般にN個のノードにEXCL制約がついた場合の「制約のテスト」は
正常系: N + 1 (回)
異常系: N * ( N - 1 ) / 2 (回)
となりそうだ。
INCL制約
A,B,Cという3つのノードに対してINCL制約がついているとすると、ベン図では以下のような表現できる。全てがFになる領域以外がありえる。



一般にN個のノードにINCL制約がついた場合の「制約のテスト」は
正常系: N (回)
異常系: 1 (回)
となりそうだ。
REQ制約
A,B,Cという3つのノードに対してREQ制約がついているとすると、ベン図では以下のような表現できる。AがFになる領域と、A,B,C全てがTになる領域の2か所。



一般にN個のノードにREQ制約がついた場合の「制約のテスト」は
正常系: 2 (回)
異常系: N - 1 (回)
となりそうだ。
MASK制約
MASK制約は厳密にはベン図表現ができないが、REQと同じ要領で原因結果グラフを作成する。


一般にN個のノードにMASK制約がついた場合の「制約のテスト」は
正常系: 2 (回)
異常系: N - 1 (回)
となりそうだ。
このデシジョンテーブルを使って、制約に関する未検証条件がないか確かめるとよいかな。
最近のコメント