Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

wacate2013s「分けてみよう 悩んでみよう 同値分割・境界値分析」

2,686 views

Published on

WACATE2013夏のセッション資料。
http://wacate.jp/
テスト技法の同値分割・境界値分析をとりあげたセッションでした。

This is the material of the study session about the equivalence partitioning and boundary value analysis.

  • Be the first to comment

wacate2013s「分けてみよう 悩んでみよう 同値分割・境界値分析」

  1. 1. Copyright (C) 2013 Kumiko Ohmi All rights reserved 分けてみよう 悩んでみよう 同値分割・境界値分析 ― ランチの前に ― ※公開用(当日資料より一部、削除・更新しています) WACATE2013 夏 2013/06/23 近江 久美子 (WACATE実行委員会)
  2. 2. Copyright (C) 2013 Kumiko Ohmi All rights reserved そのワーク、実施 発表はお楽しみ頂けましたか? お昼はカレー! の前に… ワークの時間です! – 3分間で考えて下さい • 質問は受付ません • 発表はしません。途中まででも大丈夫 – 行き詰まった方は、無理に解かずに疑問点をメ モしておけばOKです 2
  3. 3. Copyright (C) 2013 Kumiko Ohmi All rights reserved そのテスト、検討 • ある買い物サイトの送料判定処理のテスト – 別機能で計算された購入数量を入力にして、送料を判 定する機能 • テストに必要な購入個数を考えて下さい – メモしたい方はPCか机の白紙をどうぞ • 具体的な値を書ききれない場合は、代わりに、ど んな値が必要かを書いて下さい 3  購入個数が1個以上のときに送料がかかる。10 個以上なら送料半額、50個以上なら送料0円。 他は割引なし。
  4. 4. Copyright (C) 2013 Kumiko Ohmi All rights reserved そのワーク、解説 回答例1 0 1 2 3 … 回答例2(同値分割) 0 1 5 30 200 回答例3 (同値分割、境界値分析) 0 1 9 10 49 50 回答例4 (同値分割、境界値分析) 0 1 9 10 49 50 「購入個数」の上限 値を確認してそれも入れる “a”など数字以 外の文字列 4
  5. 5. Copyright (C) 2013 Kumiko Ohmi All rights reserved そのワーク、再考 • なぜ、同値分割・境界値分析を使いました か?/使いませんでしたか? – 上司や先輩に、理由を聞かれたらどうしましょ う? • どんなところで、困りましたか? – 必要な情報がない、どこまでテストすべきか不 明、… では、改めて本題に入りましょう! 5
  6. 6. Copyright (C) 2013 Kumiko Ohmi All rights reserved 分けてみよう 悩んでみよう 同値分割・境界値分析 ※公開用(当日資料より一部、削除・更新しています) WACATE2013 夏 2013/06/23 近江 久美子 (WACATE実行委員会)
  7. 7. Copyright (C) 2013 Kumiko Ohmi All rights reserved 7 自己 紹介 過去に担当し たセッショ ン:CFD , デシジョン テーブルなど 本資料は 後日公開 します 写真 好き 他,バグ票 ワーストプ ラクティス 研究会,STAR, データ分析 勉強会など
  8. 8. Copyright (C) 2013 Kumiko Ohmi All rights reserved はじめに この時間は、同値分割・境界値分析と 更に仲良くなって頂くための時間です。 8
  9. 9. Copyright (C) 2013 Kumiko Ohmi All rights reserved はじめに 仲良くなるためには、 相手の素敵な面は勿論、 9 困った面も 知る必要があります。
  10. 10. Copyright (C) 2013 Kumiko Ohmi All rights reserved はじめに 同値分割・境界値分析は どんなときに使えるか? どんな顔を持つのか? …気にしながらお付き合 い頂ければ幸いです。 10
  11. 11. Copyright (C) 2013 Kumiko Ohmi All rights reserved 目次 同値分割・境界値分析とは? ワーク2 ワーク2 解説とヒント ワーク3 まとめ 11
  12. 12. Copyright (C) 2013 Kumiko Ohmi All rights reserved 目次 同値分割・境界値分析とは? ワーク2 ワーク2 解説とヒント ワーク3 まとめ 12
  13. 13. Copyright (C) 2013 Kumiko Ohmi All rights reserved 同値分割、境界値分析とは? • テスト技法の1つ • 考え方は、1960年台の論文や1970年台の書籍にも発表されている 13 網羅的、ブラックボッ クス・ホワイトボック スの中間 「テスト技法ポジショニングマップ」は、 http://www.hayst.com/Pages/positioning.aspx より
  14. 14. Copyright (C) 2013 Kumiko Ohmi All rights reserved 同値分割、境界値分析の手順 ある買い物サイトの送料判定処理のテストを 同値分割・境界値分析で考える 14  購入個数が1個以上のときに送料がかかる。10 個以上なら送料半額、50個以上なら送料無料。 他は割引なし。  入力は、0または正の整数のみ  1個~150個まで買い物が可能
  15. 15. Copyright (C) 2013 Kumiko Ohmi All rights reserved 同値分割とは? • 必要なテストは確保したままで、テストの数 を減らす • 「同値クラス」にグルーピングする – ある同値クラスにグルーピングされた値で欠陥が 検出されると、同じ同値クラスの他の値でも同じ 欠陥が検出されるように分割する – 勉強カイザーより チケット数:0枚(予約不可) /1枚以上(予約可能) • 入力、出力、繰り返し数などに適用可能 15
  16. 16. Copyright (C) 2013 Kumiko Ohmi All rights reserved 16 同値分割→分ける
  17. 17. Copyright (C) 2013 Kumiko Ohmi All rights reserved 同値分割 • ① どんな観点での分割が必要かを考える • ② テスト対象の全体を確認する • ③ 同値クラスにわける • ④ 同値クラスごとにテストに使う値を選ぶ 境界値分析 • ① 対象の同値クラスの端を見つける • ② ①の端と隣合わせの外側の値を見つける 同値分割、境界値分析の手順 17
  18. 18. Copyright (C) 2013 Kumiko Ohmi All rights reserved ① どんな観点での分割が必要かを考える • どこに着目したテストが必要か明らかにする – 個数(数値)の大きさ(購入可否・送料の割引率) – 状況によっては、その他「文字の種類」などが考えられる • ここから先は、観点ごとに考える ② テスト対象の全体を確認する • 何を分割する? • 今回…「入力は、0または正の整数のみ」 0、正の整数 同値分割の手順 18 全体
  19. 19. Copyright (C) 2013 Kumiko Ohmi All rights reserved ③ 同値クラスに分ける • まずは、有効同値、無効同値にわける – 有効同値=目的の機能が動作するはずの値 • 送料判定が行われるはずの値 – 無効同値=有効同値以外 • 機能が動作しない場合も考慮する 無効同値 0、 1,00,000、… 有効同値 10、 50、… 同値分割の手順 19 今回は1より 小さい値と 150より大き い値 「0、正の整数」
  20. 20. Copyright (C) 2013 Kumiko Ohmi All rights reserved 同値分割の手順 20  購入個数が1個以上のときに送料がかかる。10 個以上なら送料半額、50個以上なら送料無料。 他は割引なし。  入力は、0または正の整数のみ  1個~150個まで買い物が可能 10 150 151 • ③ 同値クラスに分ける 購入不可 (無効同値) 購入なし (無効同値) 送料有料 送料無料送料半額
  21. 21. Copyright (C) 2013 Kumiko Ohmi All rights reserved 同値分割の手順【TODO:説明】 21  購入個数が1個以上のときに送料がかかる。10 個以上なら送料半額、50個以上なら送料無料。 他は割引なし。  入力は、0または正の整数のみ  1個~150個まで買い物が可能 購入不可 (無効同値) 購入なし (無効同値) 10 150 1519 10 送料有料 送料無料 49 50 送料半額 • ③ 同値クラスに分ける
  22. 22. Copyright (C) 2013 Kumiko Ohmi All rights reserved 同値分割の手順 ④ 同値クラスごとにテストに使う値を選ぶ 購入なし(無効同値) →0 送料有料 →1~9 例 5 送料半額 →10~49 例 30 送料無料 →50~150 例 100 購入不可(無効同値) →151~ 例 200 22 どの同値クラスに 属するかも明記し、 その値がなぜ必要か、 明確にします。
  23. 23. Copyright (C) 2013 Kumiko Ohmi All rights reserved 境界値分析とは? • 範囲を持つ同値クラスから値を選ぶ際に 「境界」を狙う – 処理が変わるところに一番近い2点を選ぶ • 境界には欠陥が入りやすい – 等号・不等号の間違い – 条件となる値の間違い 23 if (kosuu > 50)
  24. 24. Copyright (C) 2013 Kumiko Ohmi All rights reserved 境界値分析とは? 24 境界値分析 →境界を狙う
  25. 25. Copyright (C) 2013 Kumiko Ohmi All rights reserved • 同値分割 • ① どんな観点での分割が必要かを考える • ② テスト対象の全体を確認する • ③ 同値クラスにわける • ④ 同値クラスごとにテストに使う値を選ぶ • 境界値分析 • ① 対象の同値クラスの端を見つける • ② ①の端と隣合わせの外側の値を見つける 同値分割、境界値分析の手順 25
  26. 26. Copyright (C) 2013 Kumiko Ohmi All rights reserved 境界値分析とは? 2626 購入不可 (無効同値) 購入なし (無効同値) 10 150 1519 10 送料有料 送料無料 49 50 送料半額 ① 対象の同値クラスの端を見つける ② ①の端と隣合わせの外側の値を見つける – ある同値クラスに入る値から見て、お隣の同値クラスの中 でそれに一番近い値を見つける – 最小単位を気にする必要あり • 小数点第何位?/分? 秒? マイクロ秒? – 例 今回は整数なので、小数点は考慮不要
  27. 27. Copyright (C) 2013 Kumiko Ohmi All rights reserved 境界値分析とは? ② ①の端と隣合わせの外側の値を見つける 購入なし(無効同値) →0 送料有料 →1、9 送料半額 →10、49 送料無料 →50、150 購入不可(無効同値) →151 27 どの同値クラスに 属するか明記も忘 れずに。
  28. 28. Copyright (C) 2013 Kumiko Ohmi All rights reserved 2種類の境界値の選び方 ① 0 1 … 150 151 ② 0 1 2 … 149 150 151 境界のちょっと上/下の値も含む 不等号の間違いの検出 厳密にテストを減らす? 念のため多めにテスト? →トレードオフ、状況次第 28 10 2 else if (kosuu == 1) // 1以上 購入なし (無効同値) 送料有料  1個~150個まで 買い物が可能
  29. 29. Copyright (C) 2013 Kumiko Ohmi All rights reserved • 図にすると他にないか考えやすい – 数直線 – 同値分割図 例→ • 隠れた同値クラス・境界値があることも 同値クラス、境界値を探すにあたって – 1と2では同じ処理でな い可能性あり – 大抵はこのように書く (はず) 29 if (kosuu < 1) … else if (kosuu < 50) … if (kosuu == 1) … else if (kosuu == 2) … 入力なし 入力あり パスワード
  30. 30. Copyright (C) 2013 Kumiko Ohmi All rights reserved 目次 同値分割・境界値分析とは? ワーク2 ワーク2 解説とヒント ワーク3 まとめ 30
  31. 31. Copyright (C) 2013 Kumiko Ohmi All rights reserved 更に仲良くなっちゃいましょう! 「悩んでみよう」 ということで 問題には 困ってしまう点 を織り込んでいます 31
  32. 32. Copyright (C) 2013 Kumiko Ohmi All rights reserved 更に仲良くなっちゃいましょう! • 10分間で3つのワークをといてください – 解けるところまででよいです – 結果や疑問は、PCか白紙にメモしておくのが オススメです • どんな困ってしまう点・気をつけたい点が あるか、考えながら解いてみてください ※次ページから解説 32
  33. 33. Copyright (C) 2013 Kumiko Ohmi All rights reserved 目次 同値分割・境界値分析とは? ワーク1 ワーク1 解説とヒント ワーク2 まとめ 33
  34. 34. Copyright (C) 2013 Kumiko Ohmi All rights reserved ワーク2-1 解説 • 例 10.0、10.1、20.0、20.1、30.0、 30.1、 35.0、 35.1 • 上限は?「5.0kg増えるごとに」をどこまで確認? • どこまでわける? – 仕様書にあわせれば、0.1kg単位。 – マウスや電池は100gを切るかも→0.01kg単位? 34 ある電器店の商品配送料の計算アプリが、重さに応じた送料が表示さ れることを確認したい。(略)  ~10.0kg 300円、  ~20.0kg 500円  ~30.0kg 700円  30.0kgを超える場合、900円を基本料金として5.0kg増えるごとに +100円
  35. 35. Copyright (C) 2013 Kumiko Ohmi All rights reserved ワーク2-3 • 例 – 1977年の勉強会前日と当日 – 1977年6月22日、 1977年6月23日 • いつが基準? 勉強会当日? 申込み日? • 年月日として無効な値だったら? 数字以外は? • 年齢の下限、上限は考慮不要? – 乳児の参加者? 200歳の参加者? 35 2013年6月開催のとある勉強会には、事前申し込みシステムがありま す。その一部である、参加費算出機能をテストします。(略)  ユーザが「生年月日」の欄に入力した値を元に、判定した参加費 を出力する。  参加費は、35歳以下は22,000円。36歳以上は25,000円。 ヒント 2013年に36歳になるのは 1977年生れ
  36. 36. Copyright (C) 2013 Kumiko Ohmi All rights reserved ワーク2-2 解説 • 「金券」? ⇔ 「A社の商品券、B社の商品券、C 社の商品券」? – 同値分割の粒度を変える(ズームイン、ズームアウト) • 「現金・クレジットカード」「金券」? • 後続処理が異なるので確認したい場合なら? – 例 「現金」「クレジットカード」「A社」 「B社」「C 社」 36 A社の割引券発行管理システムの以下処理について、(略)  支払方法には、現金、クレジットカード、金券がある。  金券は、 A社の商品券、提携会社B社の商品券、別の提携会社C社 の商品券が対象。  現金、または、クレジットカード払いの場合は、次回から使える 100円割引券を渡す。
  37. 37. Copyright (C) 2013 Kumiko Ohmi All rights reserved ワーク解説より 情報不足、 曖昧な記述、… 同値分割・境界値分析はすぐ行き詰まる 37
  38. 38. Copyright (C) 2013 Kumiko Ohmi All rights reserved ワーク解説より 情報不足、曖昧な記述…どうする? – すぐ確認する または… – テストの目的・理由や前提、リスク、他 の処理との関係等を踏まえて、確認する • 例 –前の処理で無効な値は精査済み –人命が関わる場合、お金を左右する場合 –見つかった問題を後日修正してもほとん ど影響ない場合 38
  39. 39. Copyright (C) 2013 Kumiko Ohmi All rights reserved ワーク解説より情報不足や曖昧さが潜む所を テスト前から見つけるチャンス 39
  40. 40. Copyright (C) 2013 Kumiko Ohmi All rights reserved 同値分割・境界値分析のヒント 1/3 • ループの境界 – ループ上限が指定されていない場合 • システム上の都合で生じる境界 – データベースなどのカウンターの上限、変数の 型が扱える最大値 – 例 • 「西暦2038年問題」 – http://itpro.nikkeibp.co.jp/members/NC/ITARTICLE/20 040325/1/ より 40
  41. 41. Copyright (C) 2013 Kumiko Ohmi All rights reserved 同値分割・境界値分析のヒント 2/3 • 日付・時間 – 存在しない日付 例 2/31 – 閏年、閏日 • 文字列 – 文字コード「SHIFT-JIS」、正規表現[あ-ん]で分割 すると「ぁ」が漏れる – 文字コード変換での仕様の認識違いや想定違い • 例 文字コードを変換するメソッドで、半角カナを全角 に変換するものがある • 数値 – 丸め誤差 – 負の数、小数 41
  42. 42. Copyright (C) 2013 Kumiko Ohmi All rights reserved 同値分割・境界値分析のヒント 3/3 • 同じ言葉でも違う意味 – 「60分以上で金額に加算処理」→00秒?59秒? • カラオケの延長時間計測なら? • 配達時間遅延時のキャッシュバック計算なら? • 背景による • 同値分割・境界値分析「だけ」に基いてテストす ればよい? – よく使う値、経験上ハイリスクな値 • やり始めるとキリがない場合もある。目的、コス ト意識を忘れずに! 42
  43. 43. Copyright (C) 2013 Kumiko Ohmi All rights reserved 目次 同値分割・境界値分析とは? ワーク1 ワーク1 解説とヒント ワーク2 まとめ 43
  44. 44. Copyright (C) 2013 Kumiko Ohmi All rights reserved ワーク2 • まず個人で回答、その後グループで共有 – 最初の3分程度で、グループで1番若い方が自分の答えを話してく ださい。 – 残りの時間で、回答の違いや設計・仕様担当に確認したい内容を 順に話してください。 • 一部の班に気づきを発表して頂きます – 印象に残った点をメモしておいてください。 – 発表しなくても次のふりかえりで役立つはず…。 • 問題用紙は、セッション後回収します – 回答用紙、白紙はお持ち帰りOKです。 ※問題は非公開です 44
  45. 45. Copyright (C) 2013 Kumiko Ohmi All rights reserved 発表 以下を1点ずつ、発表してください 1. 仕様担当者への質問(情報不足の部 分や曖昧な部分など) 2. 班内で意見がわかれたところ、また は、印象にのこったところ 45
  46. 46. Copyright (C) 2013 Kumiko Ohmi All rights reserved 目次 同値分割・境界値分析とは? ワーク1 ワーク1 解説とヒント ワーク2 まとめ 46
  47. 47. Copyright (C) 2013 Kumiko Ohmi All rights reserved その同値分割・境界値分析、再考 同値分割・境界値分析、テストに携わる人にとって身近なテスト技法の1 つですが、手順や特徴を知れば使いこなせるのでしょうか? (もちろん、手順や特徴を知ることも、重要なことですよ♪ 念のため) 使いこなすために必要なことって、なんでしょう? 使ってみて直面する素敵な面/困る面を沢山学ぶこと がひとつかな、と私は思います。実体験したり、見聞きしたりして。 そして、テストの目的(理由)が踏まえられていることも重要。 あなたが同値分割・境界値分析を使う理由は、テストの目的と繋 がりますか? 1日目に考えて頂いた「自分がテストする理由」のために、 同値分割・境界値分析は活用できそうですか? 47
  48. 48. Copyright (C) 2013 Kumiko Ohmi All rights reserved ワーク3 回答例(一部) 48 いろいろな面を学ぶこと。 目的に沿って活用すること。 いつも気づくとすぐ傍にいる同値分割・境界値分析、 たまにはよりよく使いこなすために再考しませんか?
  49. 49. Copyright (C) 2013 Kumiko Ohmi All rights reserved まとめ 同値分割・境界値分析。分けて悩んで、再考して頂きました。 – 同値分割は、必要なテストは確保したままで、テストの数を減らす – 境界値分析は、欠陥が入りやすい「境界」を狙う – 隠れた同値クラス・境界値があるかもしれない – 情報不足や曖昧さがあると行き詰まる – 仕様に潜む情報不足や曖昧さをテスト前に見つけるためにも使える 同値分割・境界値分析と仲良くなって、 どうぞ、より良いテストを! 49 感謝! レビュー、ヒントや励まし、誤謬指摘等、ありがとうございました: WACATE実行委員の皆さん&レビュー参加者の皆さん・秋山さん・井芹 さん・上田さん・加瀬さん・静さん・並木さん・細川さん(五十音順)
  50. 50. Copyright (C) 2013 Kumiko Ohmi All rights reserved 参考文献 • 「2012年度 秋山浩一のソフトウェアテスト技法ドリルセミナー」 テキスト 一般財団法 人 日本科学技術連盟, 2012年 • 「ISTQBテスト技術者資格制度 Foundation Levelシラバス日本語版 Version 2011.J01」 – http://jstqb.jp/dl/JSTQB-Syllabus.Foundation_Version2011.J01.pdf • 「Ruby 1.8.7 リファレンスマニュアル module function Kconv.#tosjis」 – http://rurema.clear-code.com/1.8.7/method/Kconv/m/tosjis.html • 「Ruby 1.9.3 リファレンスマニュアル module function Kconv.#tosjis」 – http://rurema.clear-code.com/1.9.3/method/Kconv/m/tosjis.html • 「Ruby 2.0.0 リファレンスマニュアル module function Kconv.#tosjis」 – http://rurema.clear-code.com/2.0.0/method/Kconv/m/tosjis.html • WACATE2010冬 セッション「テスト技法の基礎の基礎 ~同値分析・境界値分析~」資料 奥村 健二、加瀬 正樹、加文字 諭 • WACATE2010冬 セッション「かいてみようCFD」資料 近江 久美子 • 「詳説 FL 表」 – http://www.hayst.com/Documents/FL-table.pdf •「実践!同値分割と境界値分析とドメイン分析」 秋山 浩一 –http://www.jasst.jp/archives/jasst11t/pdf/s2-1.pdf •「仙台ソフトウェアテスト勉強会のブログ 同値分割・境界値分析の2値の選択と3値の選択」 –http://ameblo.jp/sendai-test/entry-11417704966.html 50
  51. 51. Copyright (C) 2013 Kumiko Ohmi All rights reserved 参考文献 • 「ソフトウェア・テスト PRESS 総集編」 ソフトウェア・テストPRESS編集部 編 (著), ソフ トウェア・テストPRESS編集部 (編集) , 技術評論社, 2011年 – 付属CD内 ソフトウェア・テスト PRESS Vol.9 「ソフトウェアテストの未来を知る ヒント ソフトウェアテスト・ヒストリー」 辰巳 敬三 •「ソフトウェアテスト技法ドリル―テスト設計の考え方と実際」 秋山 浩一 (著) ,日科技連出版 社, 2010年 •「ソフトウェアテスト実践ワークブック」 レックス・ブラック (著), 成田 光彰 (翻訳) ,日経BP 社,2007年 •「ソフトウェア・テストの技法 第2版」J. マイヤーズ (著), M. トーマス (著), T. バジェット (著), C. サンドラー (著), Glenford J. Myers (原著), Todd M. Thomas (原著), Tom Badgett (原著), Corey Sandler (原著), 長尾 真 (翻訳), 松尾 正信 (翻訳) , 近代科学社, 2006年 •「ソフトウェア品質知識体系ガイド―SQuBOK Guide」SQuBOK策定部会 (編集) , オーム社, 2007年 •「ー旅立ちの準備ー JaSST’13 Tokyo テスト初心者セッション」 小山 竜治, 坂 静香 –http://www.jasst.jp/symposium/jasst13tokyo/pdf/E2.pdf •「テストの実践手法を理解する Part3 ブラックボックス技法」 –http://itpro.nikkeibp.co.jp/article/lecture/20070209/261628/ •「はじめて学ぶソフトウェアのテスト技法」 リー・コープランド (著), 宗 雅彦 (翻訳) ,日経BP 社, 2005年 51

×