ドメイン分析テストが面白いかも
こんにちは。
koma です。
ドメイン分析テストの評判が良い(?)と聞き、どんなテストか調べてみました。後日復習ができるように忘備録としてまとめます。
ドメイン分析テストって?
以下の記事が初学者でもわかりやすく感じたので、こちらから引用します。
【引用元】【テスト技法】ドメイン分析テスト
まずドメイン分析テストってなに?というところから。
ドメイン分析テストは、複数の条件式が存在する場合に、条件漏れを防ぐためのテスト手法で、「境界値テストを実施しようとしたが、条件が複数あるため、どのようにテストすればいいか分からない」「複数の条件を組み合わせてテストケースを網羅したい」ときにおすすめ。主に「一方の条件を in で固定し、もう一方の境界値をテストする」という手法になる。
とのこと。
ドメイン分析テストでは、以下のポイント名のうちon, off, inの3つを使用します。
- on: 境界上の値
- off:境界に隣接する点(境界上の点を除く)
- in: on/off 以外のドメインの内側
- out: on/off 以外のドメインの外側
イメージが湧くように表にしてみました。
例)a >= 20 と a > 20 の2つの条件を満たす必要がある場合
onの「20」がa >20の範囲外になっているため、a >20 のoff の値を選ぶ際には、境界の内側に入るようにoff = 21とする、というのが間違えやすいところかなと感じます。
outが参考なわけ
あれ、outは使わないの??と疑問に思っていたら、記事に続きがありました。
例)以下の条件分を満たす場合は処理Aを、満たさない場合は処理Bを実行するプログラムをテストする。
if x >= 5 && x + y > 12
# 処理A
else
# 処理B
end
イメージが湧くように表にしてみました。
※この表をドメインテストマトリックスと言います。ドメイン分析テストではこのような表を作成します。
テストパターン1・2のように、変数 x の on/off を検証している間は、x + y の値を in(15) に固定しています。ここでout を使用してしまうと、要件を満たさない値が含まれてしまい正しくテストができなくなってしまうため、outは使用しないということでした。
境界値テスト・デシジョンテーブルテストと何が違うの?
ここまで読んで、境界値テスト・デシジョンテーブルテストとの違いが良くわからなくなってきたので、再度ググってみました。読みやすい記事がなかなか見つからなかったのですが、以下の記事は図表が多くて視覚的にピンときやすいかと思ったのでこちらから引用します。
【引用元】ドメイン分析と言うテスト技法は他のテスト技法と何が違うのか?
境界値テストとの違い
境界値テストは、ドメインの境界値に焦点を当ててテストをする。2つ以上の変数の相関関係(つまり、連立方程式のようになる場合)の境界値を求めてテストケースにするときはドメイン分析を使う。
例)チルド宅配パックの大きさ
チルド宅配パックの大きさの最大限は、長さ100cm以下、幅100cm以下でかつ長さ・幅の合計が150cm以下です。また大きさが長さ、幅が共に1cm以上の荷物が宅配の対象となります。
・ 長さ <= 100cm , >=1cm
・ 幅 <= 100cm, >=1cm
・ 長さ+幅 <= 150cm
デシジョンテーブルテストとの違い
デシジョンテーブルテストは、複数の条件の組み合わせを網羅的にテストする。テストするパターンの値を特定する際に境界値をテストしたい場合、かつその境界を求めるには複数の変数の相関関係から境界値を求める場合はドメイン分析を使う。(同値パーティションのどの値でも良いとした場合はドメイン分析不要)
例)航空会社のマイレージプログラム
通常は去年と本年のマイル数合計が25,000未満
シルバーは去年と本年のマイル数合計が25,000以上50,000未満
ゴールドは去年と本年のマイル数合計が50,000以上100,000未満
プラチナは去年と本年のマイル数合計が100,000以上
文字だけだと分かりにくいので、図表を見たほうが理解は早いと思います。ブログが縦長になってきたので、詳細は引用元記事をご参照ください。
補足
境界値テストとデシジョンテーブルテストについて、細かい部分は考慮せずにざっくり記載します。
境界値テストは、入力値の境界値付近で正しく動作するかをテストします。境界値は、有効な値と無効な値の境界です。
例)年齢を入力する項目があり、有効な範囲が0歳〜120歳の場合、境界値は、0歳、120歳、-1歳、121歳となります。
年齢 ⇒期待結果
-1歳 ⇒NG
0歳 ⇒OK
120歳 ⇒ OK
121歳 ⇒NG
デシジョンテーブルテストは、複数の条件の組み合わせによって処理が変わる場合に、全ての組み合わせを網羅的にテストします。
例)あるECサイトで、送料無料の条件が以下のようになっている
会員ランクがゴールド以上
購入金額が5,000円以上
余談
「この技法もJSTQBアドバンスレベル テストアナリスト試験にでるので、覚えておくとよいです。もちろん資格試験のためだけでなく実務でも十分に使えます」とのこと。ふむ。
おしまい。
ここまで読んでいただきありがとうございました。