0.9K Views
December 24, 25
スライド概要
WACATE 2025冬 での発表資料です。
公開資料としてはワークの問題と解説を割愛しています。
はじめてのじゃないかもしれない ドメインテスト入門 Introduction to Domain Testing WACATE 2025 冬
自己紹介 ● 岡野 誠 (まこっちゃん) ● WACATE実行委員 ● QAゼミお世話係 X: @makotookano 2
本セッションのゴール ● ドメインテストを理解し 同値分割や境界値分析との関係 を理解し実際に使えるようになること 3
ドメインテストとは何か What is Domain Testing?
2つの例題の違いはなんだろう? 例題1)ニッチペン配送会社は 鉛筆専用 の配送サービスを 行っています。料金は 長さのみで計算されます。長さは最大 100 センチ となります。また、長さが1センチ以上のものが 配送の対象になります。 尚、長さは 1センチ単位で計算されます。 5
2つの例題の違いはなんだろう? 例題2)ニッチペン配送会社は 鉛筆専用 の配送サービスの変 更を行いました。不正利用が相次いだようです。 料金は 長さと幅で計算されます。大きさの最大は、長さ 100 センチ以下、幅は100センチ以下で、かつ 長さ・ 幅は 150センチ以下 となります。また、長さ、幅とももに 1セン チ以上のものが配送の対象になります。 尚、長さは 1センチ単位で計算されます。 6
例題1は 一つの変数に着目するテスト 例題1は一つの変数(長さ)のみによって対応する結果が変 化する。 → 同値分割・境界値分析 が適用できる。 7
例題2は、関係性のある複数の変数のテスト 下記のように複数の変数(長さと幅)かつ、関係性がある (合計の長さが150センチ以下) 8
こんな時に ドメインテストが役立ちます。 9
ドメインテストとは? ● 「関係性がある複数の変数を同時にテストする方法」 出典 秋山 浩一著「ソフトウェアのテスト技法ドリル-テスト設計の考え方と実際 第2版」日科技連出版社、2022年 ● 「A black-box test technique in which test conditions are points on, near to, inside or outside the boundaries of different equivalence partitions of the input value domain.」- ISTQB Glossary 10
ドメインテストとは (本セッションでの解釈) ● 複数の入力変数の組み合わせで決まる「同じ処理をする領域(ドメイ ン)」を見つけ、すべての組み合わせを網羅するのではなく、 有効/無効の境界に注目して効率よくテストすることを狙いとしたブ ラックボックステスト技法 11
補足: 使用する用語について 本セッションで用いる用語は、特に断りがない限り JSTQBの 用語を使用しています。以降、セッション内で定義などにつ いては解説していきますがその点ご了承くださいませ。 12
ドメインテストのやりかた
ドメインテストの on,off,in, out とは? ドメインテストを理解するためには、on, off, in, outという 用語・概念を知る必要があります。 on: 着目している境界値 off: onポイント に隣接する境界値 in: ドメインの内側の値(on, off 以外) out: ドメインの外側の値(on, off 以外) 14
(例)年齢(x)が60歳以上 / 年齢(x)が59歳より上 x≧60の場合 ドメイン:年齢(x)が60歳以上 無効パーティション 有効パーティション x>59の場合 ドメイン:年齢(x)が59歳より上 無効パーティション 有効パーティション 30 59 60 80 30 59 60 80 out off on out on off in in 「on」は仕様で示された着目する境界値。 「on」が必ずしも有効値(●) とならないことに注意。
ドメインテストのやり方 ①対象となる変数を特定し式・グラフで表す ② on, off, in, outを特定する ③くみあわせる 16
ドメインテストのやり方 ① ①対象となる変数を特定し式・グラフであらわす ② on, off, in, outを特定する ③くみあわせる 17
ドメインテストのやり方 ① 下記例題における「変数」は何になりますか?またそれらは どのような式で表せますか? 例題)ECサイトで、クリスマスケーキの年末特売セールをし ています。いちごケーキ は、1個300円、チョコケーキ1個 600円です。個数に限りがあるため、いちごケーキは、10個 まで。チョコケーキは 6個までという個数制限、合計金額 4800円までという金額制限があります。 いちごケーキとチョコケーキの購入可否の個数をドメインテ ストを用いて導いてください。 18
ドメインテストのやり方 ① 変数を特定 いちごケーキは最大10個まで、チョコケーキは最大6個まで 購入できます。 いちごケーキの個数 (x) ←特定した変数 チョコケーキの個数 (y) ←特定した変数 19
ドメインテストのやり方 ① 式で表す いちごケーキ は、1個300円、チョコケーキ1個600円です。個数 に限りがあるため、いちごケーキは、10個まで。チョコケーキは 6個までという個数制限、合計金額 4800円までという金額制限が あります。 ※購入個数は0未満にはならない。また個数は整数である。 いちごケーキ個数 (x) : x≧0, x≦10 チョコケーキ個数(y): y≧0, y≦6 合計金額(300x+600y): 300x+600y ≦ 4800 20
チョコケーキ個数 (y) グラフで可視化してみよう♪ いちごケーキ個数 (x) 21
(例)いちごケーキ個数 (x) : x≧0, x≦10 x≧0 チョコケーキ個数 (y) x≦10 いちごケーキ個数 (x) 22
チョコケーキ個数 (y) (例)チョコケーキ個数 (y) : y≧0, y≦6 y≦6 y≧0 いちごケーキ個数 (x) 23
チョコケーキ個数 (y) 重なり合っているところは、有効(購入できる)? いちごケーキ個数 (x) 24
チョコケーキ個数 (y) 例えば、いちごケーキ8個、チョコケーキ5個 いちごケーキ個数 (x) 25
チョコケーキ個数 (y) 例えば、いちごケーキ8個、チョコケーキ5個 有効(購入できる) いちごケーキ個数 (x) 無効(購入できない) 26
例えば、いちごケーキ8個、チョコケーキ5個 チョコケーキ個数 (y) 無効(購入できない) 無効(購入できない) 有効(購入できる) いちごケーキ個数 (x) 27
チョコケーキ個数 (y) いちごケーキ8個とチョコケーキ5個は、有効(購入できる)? 無効(購入できない)? 有効(購入できる)? いちごケーキ個数 (x) 28
できま・・・ 29
できません 30
どうして? 31
合計で購入することができる金額が決まっているから! 32
チョコケーキ個数 (y) 合計購入金額: 300x+600y≦4800 これを表現してみる必要がありそう! いちごケーキ個数 (x) 33
(参考)「1次関数」のおさらい (中学2年生の数学)」 y=ax+b のグラフとその描き方 y=ax+b は、傾きが aで、切片が bの 直線 a (傾き)は、変化の割合 (yの増加量/xの増加量) b (切片) y軸上で、x=0 の点) 34
(参考)「1次関数」のおさらい (中学2年生の数学)」 まずは、y=ax+b の形にして考えてみる 今回のお題(合計購入個数が4800となる式(等号)に変更) 300x+600y=4800 ( y=- x +8 ) 1.(両辺を300で除算) x+2y=16 2.(xを右辺に移項目)2y=-x+16 3.(両辺を2で除算) y=- x +8 35
(参考)「1次関数」のおさらい (中学2年生の数学)」 y=- x +8 Step1: y軸上に切片の値(8)をとる Step2: aを分数になおし、上記の位置から進める 今回は- ←yの増加量(縦) ←xの増加量(横) (y=2x+b の場合は、 ) Step3: 2点を通る先を引く。 36
(参考)「1次関数」のおさらい (中学2年生の数学)」 y=- x +8 Step1: y軸上に切片の値(8)をとる Step2: aを分数になおし、上記の位置から進める 今回は- ←yの増加量(縦) ←xの増加量(横) Step3: 2点を通る先を引く。 37
チョコケーキ個数 (y) 合計購入個数 300x+600y=4800 (y=- x+8)の グラフ Step1: y軸上に切片の値(8)をとる いちごケーキ個数 (x) 38
チョコケーキ個数 (y) 合計購入個数 300x+600y=4800 (y=- x+8)の グラフ xを2増加させる いちごケーキ個数 (x) 39
チョコケーキ個数 (y) 合計購入個数 300x+600y=4800 (y=- x+8)の グラフ xを2増加させる yを-1増加させる ( 1減少) いちごケーキ個数 (x) 40
チョコケーキ個数 (y) 合計購入個数 300x+600y=4800 (y=- x+8)の グラフ Step3: 2点を通る先を引く。 いちごケーキ個数 (x) 41
チョコケーキ個数 (y) 合計購入個数 300x+600y=4800 (y=- x+8)の グラフ グラフの完成! いちごケーキ個数 (x) 42
チョコケーキ個数 (y) 合計購入個数 300x+600y≦4800 (y≦-1/2x+8)の グラフ 無効(購入できない) 有効(購入できる) いちごケーキ個数 いちごケーキ個数(x) (x) 43
チョコケーキ個数 (y) 合計購入個数 300x+600y≦4800 (y≦-1/2x+8)も重ねてみると いちごケーキ個数 いちごケーキ個数(x) (x) 44
購入できるのは、どの部分?? x≧0 チョコケーキ個数 (y) x≦10 y≦6 y≧0 いちごケーキ個数 いちごケーキ個数(x) (x) 45
購入できるのは、全ての 有効(色をつけた部分)が重なった部分 x≧0 チョコケーキ個数 (y) x≦10 y≦6 y≧0 いちごケーキ個数 いちごケーキ個数(x) (x) 46
チョコケーキ個数 (y) (再掲) いちごケーキ8個とチョコケーキ5個は、有効(購入できる)? 無効(購入できない) 有効(購入できる) (※)変数が2つまでは この可視化が有効です いちごケーキ個数 いちごケーキ個数(x) (x) 47
ドメインテストのやり方 ② on, off, in, outを特定する ①対象となる変数と式を特定する ② on, off を特定する ③くみあわせる 48
再掲 ドメインテストの on,off,in, out とは? ドメインテストを理解するためには、on, off, in, outという 用語・概念を知る必要があります。 on: 着目している境界値 off: onポイント に隣接する境界値 in: ドメインの内側の値(on, off 以外) out: ドメインの外側の値(on, off 以外) 49
再掲(例)齢(x)が60歳以上 / 年齢(x)が59歳より上 x≧60の場合 ドメイン:年齢(x)が60歳以上 無効パーティション 有効パーティション x>59の場合 ドメイン:年齢(x)が59歳より上 無効パーティション 有効パーティション 30 59 60 80 30 59 60 80 out off on out on off in in 「on」は仕様で示された着目する境界値。 「on」が必ずしも有効値(●) とならないことに注意。
ドメインテストのやり方 ② on, off, in, outを特定する いちごケーキ個数 (x) : x≧0 , x≦10 x≧0の場合 無効パーティション 有効パーティション -5 -1 0 2 out off on in 51
ドメインテストのやり方 ② on, off, in, outを特定する いちごケーキ個数 (x) : x≧0,x≦10 x≦10の場合 有効パーティション 無効パーティション 5 10 11 15 in on off out 52
ドメインテストのやり方 ② on, off, in, outを特定する チョコケーキ個数 (y) : y≧0,y≦6 y≧0の場合 無効パーティション 有効パーティション -5 -1 0 2 out off on in 53
ドメインテストのやり方 ② on, off, in, outを特定する チョコケーキ個数 (y): y≧0, y≦6 y≦6の場合 有効パーティション 無効パーティション 4 6 7 10 in on off out 54
ドメインテストのやり方 ② on, off, in, outを特定する 合計金額 300x+600y≦4800 (y≦-1/2x+8)についてもやっ てみよう x+2y≦16 55
ドメインテストのやり方 ② on, off, in, outを特定する 合計購入金額(300x+600y) : 300x+600y ≦ 4800 300x+600y ≦ 4800 の場合 有効パーティション 無効パーティション 2400 [ 4800 ] [5100] in on off 9600 out 56
ドメインテストのやり方 ② on, off, in, outを特定する 合計購入金額(300x+600y) : 300x+600y ≦ 4800 (x+2y≦16) x+2y ≦ 16 の場合 有効パーティション 14 in [ 16 ] 無効パーティション [17] on off 20 out 57
ドメインテストのやり方 ② on, off, in, outを特定する # 式 ONポイント OFFポイント IN ポイント OUT ポイント 1 x≧0 0 -1 x=2 x = -5 2 x ≦ 10 10 11 x=1 x = 10 3 y≧0 0 -1 y =のちほど、ここについての考え 2 y = -5 4 y≦6 6 7 y= 1 y = 10 5 x + 2y ≦ 16 16 17 x+y =2 x+y =8 方について紹介します。 ON ポイントと、OFFポイント の値が 着目したい 境界値 58
下記 #1 x≧0 のONポイント “0” に着目した場合、yはどのような値でテ ストすればよいでしょうか? ( 0, ? ) 隣の人と話し合ってみてくださ い。 59
ドメインテストのやり方 ③くみあわせる ①対象となる変数を特定し式・グラフであらわす ② on, off, in, outを特定する ③くみあわせる 60
ドメインテストのやり方 ③くみあわせる Binderのドメイン分析テストマトリクスを使います 61
ドメインテストのやり方 ③くみあわせる くみあわせの考え方 「確認したい境界 (ON/OFF) + その他 は IN を組み合わせる」 ※IN が取りうる値は複数あるが、できるだけばらけさせること 62
(参考)INの値の選択に関しての考え方 …They(IN points) are chosen after the on or off point is determined. In points can be developed by guessing, by analyzing the situation, or by using a pseudorandom selection algorithm. Try to avoid repeating in point values, as they will increase the chance of revealing an unexpected bug. Robert V Binder著「Testing Object-oriented Systems: Models, Patterns, and Tools」Addison-Wesley Professional, 2009年 P412 (参考日本語訳) INポイントは、ONポイントまたはOFFポイントが決定された後に選択され る。INポイントは、推測や、状況を分析すること、あるいは、擬似乱数選 択アルゴリズムを使用することによって決定できる。 INポイントの値は繰り返し使用しないようにすること。 そうすることで、 予期しないバグを発見する可能性を高めることができる。 63
ドメインテストのやり方 ③くみあわせる ②できめたON・OFFポイントを、 Binderのドメインテストマトリックスにあてはめる →1つの項目のONポイントまたはOFFポイントに対して、他の項目は INポイントになるように設定する。 64
ドメインテストのやり方 ③くみあわせる 式の条件を 表の条件に当てはめる 65
ドメインテストのやり方 ③くみあわせる 式の条件を 表の条件に当てはめる 66
ドメインテストのやり方 ③くみあわせる テストしたい項目について、ONポイントまたはOFFポイントを1ケース1つずつ入力して いく。 67
ドメインテストのやり方 ③くみあわせる テストしたい項目について、ONポイントまたはOFFポイントを1ケース1つずつ入力していく。 x についての ON/OFF ポイント y についての ON/OFF ポイント 合計金額 についての (ON/OFF)ポイント 68
ドメインテストのやり方 ③くみあわせる ONポイント・OFFポイントを入力した項目以外の項目( y, x+y など)にはINポイントのデータ を入力。 例えば、x≧0 の条件の ON,OFF について、それぞれ、どのように INポイントを設定すれば良いでしょうか? 69
ドメインテストのやり方 ③くみあわせる ONポイント・OFFポイントを入力した項目以外の項目( y, x+y など)にはINポイントのデータ を入力。 例えば、x≧0 の条件の ON,OFF について、それぞれ、どのように INポイントを設定すれば良いでしょうか? 70
ドメインテストのやり方 ③くみあわせる Step1: x≧0 の ONポイント(x=0)と組み 合わせる yのINの値を選ぶ。 例:3 x=0 INの値(ON/OFF以外の有効な代表値) yの値として取りうる値は、 yの条件式( y≧0,y≦6 の ON/OFFポイント以外のの値: つ まり 1,2,3,4,5) (300x+600y≦4800) も IN の値となるように注 意。 (0,3) ONポイント 71
ドメインテストのやり方 ③くみあわせる Step2: x≧0 の OFFポイント(x=-1)と組み合わ せる yのINの値を選ぶ。 x=0 OFFポイントは、できるだけ ONポイントと隣接し ていることが重要。 ただし、yの INポイントの値はできるだけ OFFポ イントと同一にならいことが望ましい。 例: yのINポイントの値 4 (-1,4) (0,3) ONポイント OFFポイント 72
ドメインテストのやり方 ③くみあわせる 決定した yの値を表に反映させる。以下同様に繰り返す。 73
ドメインテストのやり方 ③くみあわせる 傾きのある条件の際の、 ON/OFF、及び、その際組み合わ せる INの値の考え方。 Step1: ONポイントをひとつ定める 条件式(300x+600y=4800) の線上(ON ポイント)上のx,yのINの値をとる。 → xは8, yは4 300x+600y=4800 (8,4) ONポイント 74
ドメインテストのやり方 ③くみあわせる Step2: (今回のように)2次元の場合は, x かyに着目する。 今回は xの値である、x=8に、着 目する。 75
ドメインテストのやり方 ③くみあわせる Step3: 隣接するxの値に注目 今回は xの値である、x=7と、x=9 に、着目する。 76
ドメインテストのやり方 ③くみあわせる Step4: 隣接するxの値の候補を1つず つ確認し、yの値の隣接する値 の候補を考える x=9 の場合は y=3.5 隣接するyの値は 4 (9,4) (9,3.5) ただし、ONポイントのyの値 4と同じになるため不適切 77
ドメインテストのやり方 ③くみあわせる Step4: 隣接するxの値の候補を1つず つ確認し、yの値の隣接する値 の候補を考える x=7 の場合は y=4.5 隣接するyの値は 5 OFFポイント (7,5) (7,4.5) ONポイント ONポイントのyの値(4)とも異 なっており適切 78
ドメインテストのやり方 ③くみあわせる ON/OFF/IN の値を完成させた例 79
ドメインテストのやり方 ③くみあわせる 期待結果を記入する①まず、ON+IN+IN の期待結果は「有効」とする 80
ドメインテストのやり方 ③くみあわせる 期待結果を記入する②次に、OFF+IN+IN の期待結果は「無効」とする 81
ドメインテストのやり方 ③くみあわせる あれ、なんで [ON][OFF]ポイント同士を組み合わせないの 「複数の ON, OFFポイントを組み合わせると、どの境界値が問題に なったかがわからないから」から。 82
ドメインテストのやり方 ③くみあわせる あれ、なんで [OUT]ポイントの値は使わないの? 「有効な値(正常値)は複数同時に確認できるが、 無効な値(異常値)は 1 回に 1 つずつしか確認できない」から。 83
お題 work
※お題内容は、当日イベント参加者のみ公開 85
Appendix
参考文献他 ● 秋山 浩一著「ソフトウェアのテスト技法ドリル-テスト設計の考え方と 実際-第2版」日科技連出版社, 2022年 ● レックス・ブラック (著) 「ソフトウェアテスト実践ワークブック」 日経BP 社 2007年 , 成田 光彰 (翻訳) ● リー・コープランド著、宗雅彦訳 「はじめて学ぶソフトウェアのテスト技 法」日経BP社, 2005年 ● ボーリス・バイザー著、小野間彰・山浦恒央・石原成夫訳「実践的プロ グラムテスト入門」日経BP社, 1997年 ● Robert V Binder著「Testing Object-oriented Systems: Models, Patterns, and Tools」Addison-Wesley Professional, 2009年 87