ドメイン分析テストってなに?
はじめに
今回はテスト技法の一つ『ドメイン分析テスト』についてまとめてみようと思います。
ドメイン分析テストとは
このテスト技法は、
- 出力が複数の変数の値の組み合わせにより変わる
- この時の境界値ごとの振る舞いを効率的に検証する
- 検証対象の境界値以外は全て有効値にする
こう言ったテスト技法になります。
検証の際は、
- on
- off
- in
- out
と言う4つの概念を用います。
onは『着目した境界値変数』、
offは『onポイントに近傍するもう一つの境界値変数』、
inは『有効値』、outは『無効値』になります。
onとoffが若干分かりづらいので、以下に具体例を交えて図式化してみましょう。
名前 | 説明 | x>=10の場合 | x>10の場合 |
---|---|---|---|
on | 着目した境界値変数 | 10 | 10 |
off | onポイントに近傍するもう一つの境界値変数 | 9 | 11 |
in | 有効値 | 例:10,15 | 例:11,15 |
out | 無効値 | 例:5,9 | 例:5,10 |
xが10以上という条件式でonポイントが10という有効値ならば、
offポイントはその近傍の境界値なので9という無効値になります。
代わって、xが10より大きいという条件式でonポイントが10という無効値ならば、
offポイントは11という有効値になります。
注意点⚠️
onだから有効値、offだから無効値という訳ではないことに注意してください。
また、検証対象の変数について評価する際はon/offを切り替えて検証を行いますが、
その際は対象外の変数については全てinに含ませます。
上図のon/offの変数についても同様な関係性になっているのはそのためです。
これは、
「有効な値(正常系)は複数同時に発見できるが、無効な値(異常系)についてはそうではなく、1回で一つしか発見できない。」
つまり、
「異常値は他の異常値を隠す」
という欠陥(バグ)の特性があるからであり、
この特性を踏まえ、検証対象の変数のon/offでの振る舞いを効率良く評価するためです。
つまり、
こんな風にマッピンングをして、効率良く境界値分析を行う手法になります。
ちなみに、上記をBinderが考案したドメイン分析テストマトリクスという手法で表現すると、
こんな感じに表現することができます👀
まとめると、
単一変数の検証:
複数の変数の中から1つだけを選び、その変数の境界値(on)と
その近傍の値(off)をテストする。
他の変数の固定:
検証対象ではない他の変数はすべてそれぞれの有効領域内(in)に固定する。
このような考え方に基づきます。
具体例
以上がドメイン分析テストの概要になります。
ただこれだけだとイメージが沸きづらいかと思われますので、
以下のケースにこのテスト技法を当てはめてみましょう💪
例題
例題:
あるオンラインショップの送料を計算するシステムをテストするとします。
送料は、注文金額と注文重量の2つの変数によって決まります。
条件:
注文金額 (X): 5,000円以上で送料無料。それ未満は送料500円。
注文重量 (Y): 10kg以下で通常送料。10kg超は追加料金が発生。
先述のドメイン分析テストの原則に従い、
一度に一つの変数のみをon/offで検証し、もう一方の変数をin(有効範囲内)に固定して検証してみましょう。
注文金額 (X) を検証する場合
このケースでは注文重量 (Y) を有効範囲内、
つまり「10kg以下」に固定します。
例として、5kgをinの値とします。
するとこんな感じの結果が期待できます。
注文重量 (Y) を検証する場合
このケースでは注文金額 (X) を有効範囲内、
つまり「5,000円以上」に固定します。
例として、10,000円をinの値とします。
するとこんな感じの結果が期待できます。
そしてこれらをドメイン分析テストマトリクスで表現すると、
こんな感じにわかりやすく期待結果をまとめることができます。
あとはこれらの表に基づいて検証を行えば効率的に欠陥を探すことができます。
参照
Discussion