Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

ドメイン分析勉強会

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Nächste SlideShare
ドメインテストとは
ドメインテストとは
Wird geladen in …3
×

Hier ansehen

1 von 44 Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Weitere von Kosuke Fujisawa (20)

Anzeige

Aktuellste (20)

ドメイン分析勉強会

  1. 1. ⻑崎IT技術者会 第11回勉強会 ドメイン分析勉強会 2016/2/20 リリカル@藤沢耕助 1
  2. 2. ➤ ⾃⼰紹介 ➤ ドメイン分析の前に ➤ 同値分割 ➤ 境界値分析 ➤ ドメイン分析概要説明 ➤ ドメイン分析演習 ➤ ディスカッション 2
  3. 3. ドメイン分析勉強会 2016/2/20 ⾃⼰紹介 ➤ 某SIerにて品質保証部⾨のお仕事をしています。 ➤ 今の仕事は設計レビューが中⼼です。 ➤ ドメインは最近、⾦融系に変わりました。 ➤ 勉強会の告知は主にTwitter、レポートは個⼈ブログで書いて います。 3
  4. 4. ドメイン分析勉強会 2016/2/20 ⾃⼰紹介 4
  5. 5. ドメイン分析勉強会 2016/2/20 ⾃⼰紹介 5
  6. 6. ドメイン分析勉強会 2016/2/20 ドメイン分析の前に ➤ ドメイン分析はテスト技法の中でも難しい技法です。 ➤ その基礎として、同値分割と境界値分析が必要になります。 ➤ まずは簡単にそのおさらいをします。 ➤ ご利⽤上の注意 ➤ この内容は⾃分が調べてまとめただけなので、間違ってい る可能性があります。 ➤ 間違っていたら、「違うよ」と教えてください。 ➤ 詳しい説明は書籍を参照してください。 6
  7. 7. ドメイン分析勉強会 2016/2/20 同値分割の簡単な説明 ➤ 「同値だと思われるまとまりで分けて、そのまとまりから ⼀つの代表値を選んでテストする⼿法」のことです。 ➤ そもそもどういうときに、同値分割が必要になるのでしょ うか? 7
  8. 8. ドメイン分析勉強会 2016/2/20 同値分割の簡単な説明 ➤ RPGゲームでのレベルアップ進化システム ➤ 進化前モンスターのレベルがレベルアップによりLv.10以上 になったとき、進化イベントが発⽣する。(初期Lv:1) ➤ 「Lv.2になった時は、進化イベントが発⽣しない」 ➤ 「Lv.3になった時は、進化イベントが発⽣しない」 ➤ 「Lv.4では…」 ➤ 「これ全部テストする必要あるんだっけ?」 8
  9. 9. ドメイン分析勉強会 2016/2/20 同値分割の簡単な説明 ➤ 「Lv.2になった時に進化しない」ことが確認できれば、Lv.3 とかLv.4になった時も進化しないって⾔えるんじゃない?」 ➤ 「Lv.2」「Lv.3」「Lv.4」は同値である 9
  10. 10. ドメイン分析勉強会 2016/2/20 同値分割の簡単な説明 10 Lv:2Lv:0 Lv:11Lv:3 Lv:4 無効同値クラス (エラー) 有効同値クラス (進化前) 有効同値クラス (進化)
  11. 11. ドメイン分析勉強会 2016/2/20 同値分割の簡単な説明 11 Lv:2Lv:0 Lv:11Lv:3 Lv:4 無効同値クラス (エラー) 有効同値クラス (進化前) 有効同値クラス (進化)
  12. 12. ドメイン分析勉強会 2016/2/20 境界値分析の簡単な説明 ➤ 「同値だと思われるまとまりで分けて、そのまとまりの境界 値と、その隣の値を選んでテストする⼿法」のことです。 ➤ そもそもなぜ、境界値分析が必要になるのでしょうか? 12
  13. 13. ドメイン分析勉強会 2016/2/20 境界値分析の簡単な説明 ➤ RPGゲームでのレベルアップ進化システム ➤ 進化前モンスターのレベルがレベルアップによりLv.10以上 になったとき、進化イベントが発⽣する。(初期Lv:1) ➤ 実際のコードがこんな感じだったら(あくまでも例です) if(evl_lv_tbl[mon_id] < current_lv) evl_flag = 1; ➤ このコードにはバグがあります ➤ こういったバグは経験的に多いと⾔われています 13
  14. 14. ドメイン分析勉強会 2016/2/20 境界値分析の簡単な説明 ➤ 「さっきみたいなバグを⾒つけるには、進化するレベルピッ タリの場合と、その直前のレベルの場合をテストしておけば いいんじゃないか?」 ➤ 「Lv.9になった時、進化イベントは発⽣しない」 ➤ 「Lv.10になった時、進化イベントが発⽣する」 ➤ 「Lv.10」という境界に着⽬した境界値分析 ➤ ここで、10をOnポイント、9をOffポイントと呼びます (後述) 14
  15. 15. ドメイン分析勉強会 2016/2/20 境界値分析の簡単な説明 15 Lv:1Lv:0 Lv:10Lv:9
  16. 16. ドメイン分析勉強会 2016/2/20 境界値分析の簡単な説明 16 Lv:1Lv:0 Lv:10Lv:9 Onポイント Onポイント Offポイント Offポイント
  17. 17. ドメイン分析勉強会 2016/2/20 ドメイン分析概要説明 ➤ 先のRPGの例では、モンスターの進化に関わるパラメータは 「レベル」だけであった ➤ これが、「なつき度」など別のパラメータも含む場合、ど うやってテストするか? ➤ 複数のパラメータを同時にテストしなければならない ➤ ドメイン分析テストをしよう! 17
  18. 18. ドメイン分析勉強会 2016/2/20 ドメイン分析概要説明 ➤ ドメイン分析テストにおける基本的な概念 ➤ Onポイント ➤ 仕様上、定義されている境界値 ➤ Offポイント ➤ Onポイントから⾒て、境界を挟んだ向こう側かつ、境界に 隣接した値 ➤ Inポイント ➤ 定義域(ドメイン)内部の値 18
  19. 19. ドメイン分析勉強会 2016/2/20 ドメイン分析 サンプル問題 ➤ 具体例:RPGゲームでのレベルアップ進化システム ➤ 進化前モンスターのレベルがレベルアップによりLv.10以 上になったとき、進化イベントが発⽣する。 ➤ 初期Lv:1、最⼤Lv:100 ➤ ただし、主⼈公が所持しているジムバッチが3個未満の場 合、進化イベントは発⽣しない。 ➤ 初期所持数:0、最⼤所持数:8 ➤ 以下、レベルを変数X、ジムバッチの所持数をYとします 19
  20. 20. ドメイン分析勉強会 2016/2/20 1 同値クラス、境界値を⾒つける ➤ モンスターのレベルについて ➤ X ≧ 1(Lv.0以下はエラー) ➤ X ≧ 10(レベルアップによりレベルが10以上になった 時、進化イベントが発⽣) ➤ X ≦ 100(レベル最⼤値:100) ➤ ジムバッチの所持数について ➤ Y ≧ 3(主⼈公が所持しているジムバッチが3個未満の場 合、進化イベントは発⽣しない。) ➤ Y ≦ 8(バッチ所持数の最⼤値:8) 20
  21. 21. ドメイン分析勉強会 2016/2/20 2 グラフにしてみる 21
  22. 22. ドメイン分析勉強会 2016/2/20 3 ONポイント、OFFポイントを探す ➤ Onポイント(仕様上、定義されている境界値) ➤ X: 1(レベル初期値), 10(進化イベント発⽣レベル)、100(最⼤ 値) ➤ Y: 3(進化イベント発⽣のバッチ所持数), 8(最⼤値) ➤ Offポイント(Onポイントから⾒て、境界を挟んだ向こう側かつ、境界に 隣接した値) ➤ X: 0(エラー), 9(進化しない), 101(エラー) ➤ Y: 2(進化しない), 9(エラー) ➤ Inポイント(定義域(ドメイン)内部の値) ➤ X: 12(有効かつ、進化イベント発⽣レベル) ➤ Y: 5(有効かつ、進化イベント発⽣のバッチ所持数) 22
  23. 23. ドメイン分析勉強会 2016/2/20 3 ONポイント、OFFポイントを探す 23
  24. 24. ドメイン分析勉強会 2016/2/20 4 組み合わせる(BINDERのドメインテストマトリックス) 24 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 項目1 条件1 ON OFF 条件2 ON OFF 条件3 ON OFF IN 項目2 条件4 ON OFF 条件5 ON OFF IN 期待結果
  25. 25. ドメイン分析勉強会 2016/2/20 4 組み合わせる(BINDERのドメインテストマトリックス) 25 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 X (レベル) 条件1 ON OFF 条件2 ON OFF 条件3 ON OFF IN Y (バッチ数) 条件4 ON OFF 条件5 ON OFF IN 期待結果 パラメータを埋める
  26. 26. ドメイン分析勉強会 2016/2/20 4 組み合わせる(BINDERのドメインテストマトリックス) 26 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 X (レベル) X ≧ 1 ON OFF X ≧ 10 ON OFF X ≦ 100 ON OFF IN Y (バッチ数) Y ≧ 3 ON OFF Y ≦ 8 ON OFF IN 期待結果 条件式を埋める
  27. 27. ドメイン分析勉強会 2016/2/20 4 組み合わせる(BINDERのドメインテストマトリックス) 27 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 X (レベル) X ≧ 1 ON 1 OFF 0 X ≧ 10 ON 10 OFF 9 X ≦ 100 ON 100 OFF 101 IN Y (バッチ数) Y ≧ 3 ON 3 OFF 2 Y ≦ 8 ON 8 OFF 9 IN 期待結果 ON/OFF ポイント を埋める
  28. 28. ドメイン分析勉強会 2016/2/20 4 組み合わせる(BINDERのドメインテストマトリックス) 28 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 X (レベル) X ≧ 1 ON 1 OFF 0 X ≧ 10 ON 10 OFF 9 X ≦ 100 ON 100 OFF 101 IN 12 11 10 9 Y (バッチ数) Y ≧ 3 ON 3 OFF 2 Y ≦ 8 ON 8 OFF 9 IN 7 6 5 4 5 6 期待結果 IN ポイント を埋める
  29. 29. ドメイン分析勉強会 2016/2/20 4 組み合わせる(BINDERのドメインテストマトリックス) 29 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 X (レベル) X ≧ 1 ON 1 OFF 0 X ≧ 10 ON 10 OFF 9 X ≦ 100 ON 100 OFF 101 IN 12 12 12 12 Y (バッチ数) Y ≧ 3 ON 3 OFF 2 Y ≦ 8 ON 8 OFF 9 IN 5 5 5 5 5 5 期待結果 進化 しない エラー 進化 する 進化 しない 進化 する エラー 進化 する 進化 しない 進化 する エラー 期待結果を埋める
  30. 30. ドメイン分析勉強会 2016/2/20 4 組み合わせる(BINDERのドメインテストマトリックス) 30 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 X (レベル) X ≧ 1 ON 1 OFF 0 X ≧ 10 ON 10 OFF 9 X ≦ 100 ON 100 OFF 101 IN 12 12 12 12 Y (バッチ数) Y ≧ 3 ON 3 OFF 2 Y ≦ 8 ON 8 OFF 9 IN 5 5 5 5 5 5 期待結果 進化 しない エラー 進化 する 進化 しない 進化 する エラー 進化 する 進化 しない 進化 する エラー
  31. 31. ドメイン分析勉強会 2016/2/20 4 組み合わせる(BINDERのドメインテストマトリックス) 31 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 X (レベル) X ≧ 1 ON 1 OFF 0 X ≧ 10 ON 10 OFF 9 X ≦ 100 ON 100 OFF 101 IN 12 12 12 12 Y (バッチ数) Y ≧ 3 ON 3 OFF 2 Y ≦ 8 ON 8 OFF 9 IN 5 5 5 5 5 5 期待結果 進化 しない エラー 進化 する 進化 しない 進化 する エラー 進化 する 進化 しない 進化 する エラー ごめんなさい。 実はこれ、間違ってます。
  32. 32. ドメイン分析勉強会 2016/2/20 4 組み合わせる(BINDERのドメインテストマトリックス) 32 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 X (レベル) X ≧ 1 ON 1 OFF 0 X ≧ 10 ON 10 OFF 9 X ≦ 100 ON 100 OFF 101 IN 12 12 12 12 12 12 Y (バッチ数) Y ≧ 0 ON 0 OFF -1 Y ≧ 3 ON 3 OFF 2 Y ≦ 8 ON 8 OFF 9 IN 5 5 5 5 5 5 期待結果 進化 しない エラー 進化 する 進化 しない 進化 する エラー 進化 しない エラー 進化 する 進化 しない 進化 する エラー
  33. 33. ドメイン分析勉強会 2016/2/20 4 組み合わせる(BINDERのドメインテストマトリックス) 33 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 X (レベル) X ≧ 1 ON 1 OFF 0 X ≧ 10 ON 10 OFF 9 X ≦ 100 ON 100 OFF 101 IN 12 12 12 12 12 12 Y (バッチ数) Y ≧ 0 ON 0 OFF -1 Y ≧ 3 ON 3 OFF 2 Y ≦ 8 ON 8 OFF 9 IN 5 5 5 5 5 5 期待結果 進化 しない エラー 進化 する 進化 しない 進化 する エラー 進化 しない エラー 進化 する 進化 しない 進化 する エラー ⾃明な仕様値を ⾒逃さないように!
  34. 34. ドメイン分析勉強会 2016/2/20 ⾒落としやすいポイント ➤ 先のバッチ所持数の最⼩値のように、⾃明な仕様値は⾒落と しやすいので注意が必要 ➤ 仕様に出てきた値をマークするなどして、Onポイント、Off ポイントを漏れなく抽出すること 34
  35. 35. ドメイン分析勉強会 2016/2/20 ⾒落としやすいポイント ➤ Inポイントは同じ値を⼊れるのではなく、少しずつずらす ➤ 値をずらすことで、“傾き”が正しいかの判断ができる 35 Inポイントをずらした場合 Inポイントを同じ値にした場合
  36. 36. ドメイン分析勉強会 2016/2/20 ⾒落としやすいポイント ➤ Inポイントは同じ値を⼊れるのではなく、少しずつずらす ➤ 値をずらすことで、“傾き”が正しいかの判断ができる 36 Inポイントをずらした場合 Inポイントを同じ値にした場合 傾きが誤っていた場合に、 誤りを検出できる 傾きが誤っていても、 誤りを検出できない
  37. 37. ドメイン分析勉強会 2016/2/20 ONポイント、OFFポイント、INポイントを導⼊する理由 ➤ ⼀気に全部の変数をテストしようとすると、もし不良を発⾒ しても何の不良なのかわからない ➤ 結果に関わる変数を⼀つずつテストしていきたい ➤ そのための概念がOnポイント、Offポイント、Inポイント 37
  38. 38. ドメイン分析勉強会 2016/2/20 ドメイン分析テストの具体的⼿順まとめ 1. 同値クラス、境界値を⾒つける(式で表してみる) 2. グラフにしてみる 3. Onポイント、Offポイントを探す 4. 組み合わせる(Binderのドメインテストマトリクス) ➤ 参考:わりとディープ?同値分割↔境界値分析 ➤ http://www.slideshare.net/scarletplover/ ss-56911349 38
  39. 39. ドメイン分析勉強会 2016/2/20 ドメイン分析演習 ➤ この勉強会では、講師による解説は⾏いません。 ➤ 解答後、グループでのディスカッションタイムを設けます。 ➤ そこで、他の⼈の解答と⾃分の解答を⾒⽐べたり、議論した りすることで理解を深めます。 39
  40. 40. ドメイン分析勉強会 2016/2/20 ドメイン分析演習1 40 ➤ RPGゲームでのレベルアップ進化システム ➤ モンスターのレベル(X)がLv.20以上に到達したとき、 進化する。 ➤ 初期Lv:1、最⼤Lv:100 ➤ ただし、モンスターのなつき度(Y)が200未満の場合、 レベルがLv.20以上になっても進化しない。 ➤ 初期なつき度:0、最⼤なつき度:255 ➤ レベル、なつき度は整数に制限されるものとする。 ➤ ドメイン分析を実施しなさい。
  41. 41. ドメイン分析勉強会 2016/2/20 ドメイン分析ディスカッション1 ➤ 周りの⼈と、解答を⾒⽐べてみましょう。 ➤ 間違えたかな?と思うところがあったら聞いてみてください。 41
  42. 42. ドメイン分析勉強会 2016/2/20 ドメイン分析演習2 ➤ 婚活サイト利⽤者Aさんが、サイトを利⽤して結婚相⼿候補者 を検索する。以下の条件に合格するものが検索結果に現れる ことをテストしたい。なお、⼊⼒値は整数に制限されるもの とする。 ➤ 年齢(X):20以上、30未満 ➤ ⾝⻑(Y):175以上 ➤ 年収(Z):600万円以上 ➤ ドメイン分析を実施しなさい。 42
  43. 43. ドメイン分析勉強会 2016/2/20 ドメイン分析ディスカッション2 ➤ ディスカッション2回⽬です。 ➤ 問題の解答についての議論、1問⽬の問題との違いについて 話してみましょう。 43
  44. 44. ドメイン分析勉強会 2016/2/20 参考⽂献 ➤ JaSST ʼ11 Shikoku 実践!同値分割と境界値分析とドメイン 分析 秋⼭ 浩⼀ ➤ http://www.jasst.jp/archives/jasst11t/pdf/ s2-1.pdf ➤ わりとディープ?同値分割↔境界値分析 ➤ http://www.slideshare.net/scarletplover/ ss-56911349 ➤ ポケモンWiki(サンプル問題作成のために参考にしました) ➤ http://wiki.ポケモン.com/wiki/メインページ 44

×