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.

Wacate2015summer_report

5,036 views

Published on

I made summary of YUMOTSUYO method as a report of Wacate2015summer.

Published in: Software
  • Be the first to comment

Wacate2015summer_report

  1. 1. WACATE2015夏 報告会 藤沢耕助
  2. 2. 1. はじめに 2. ゆもつよメソッド ワークショップ (1)ワークショップの流れ (2)ワークショップ内容(メイン) 3. おわりに 2
  3. 3. はじめに • 今回の発表は、WACATE2015夏のメインテーマである「ゆも つよメソッド」に主眼を置いたものです。 • 作者のドメイン、理解度により資料には偏りがあります。あ らかじめご了承ください。 • できるだけ湯本さんの使った表現をそのまま使っています。   • 他のコンテンツに関しては以下ブログを参照ください。   • http://mhlyc.hatenablog.com 3
  4. 4. はじめに(WACATE2015夏アジェンダ) 1. ポジションペーパーセッション 2. BPPセッション   3. オリエンテーションとエンジニアのモチベーション   4. 「ゆもつよメソッド」ワークショップ(本発表の対象) 5. 夜の分科会   6. テスト設計コンテスト優勝者セッション   7. 「ゆもつよメソッド」ワークショップ2(本発表の対象) 4
  5. 5. ワークショップの流れ • 「演習1-A」実務経験でのやり方で演習してみる • 「ゆもつよメソッド解説1」(入力、出力、変換、貯蔵について) • 「演習1-B」仕様項目の特定(サポート、相互作用除く) • 「ゆもつよメソッド解説2」(サポート、相互作用について) • 「演習1-C」仕様項目の特定(サポート、相互作用含む) • 「演習2」題材を変えて仕様項目の特定 5
  6. 6. 「演習1-A」 実務経験でのやり方で演習してみる • 「演習1-A」実務経験でのやり方で演習してみる • 「ゆもつよメソッド解説1」(入力、出力、変換、貯蔵について) • 「演習1-B」仕様項目の特定(サポート、相互作用除く) • 「ゆもつよメソッド解説2」(サポート、相互作用について) • 「演習1-C」仕様項目の特定(サポート、相互作用含む) • 「演習2」題材を変えて仕様項目の特定 6
  7. 7. • テストベース配布(ヘッドセット) • 実務経験でのやり方で、テストパラメータと値、実施する操作と その期待結果を書き出し 時間が足りない! 「演習1-A」 実務経験でのやり方で演習してみる 7
  8. 8. なぜ時間が足りないのか? • 普段からそもそも時間を意識してテストケースを作成していない • 普段からそもそもちゃんとテストベースを読めていない • テストベースを順序通り詳細に読み進めているため、細かい仕様に ばかり目がいってしまい、全体の仕様把握に時間がかかる(湯本さ んの指摘) • まずは全体を大きく捉え、テスト対象を網羅しているかわかりやす く整理するべき • ゆもつよメソッドの利点 8
  9. 9. 「ゆもつよメソッド解説1」 (入力、出力、変換、貯蔵について) • 「演習1-A」実務経験でのやり方で演習してみる • 「ゆもつよメソッド解説1」(入力、出力、変換、貯蔵について) • 「演習1-B」仕様項目の特定(サポート、相互作用除く) • 「ゆもつよメソッド解説2」(サポート、相互作用について) • 「演習1-C」仕様項目の特定(サポート、相互作用含む) • 「演習2」題材を変えて仕様項目の特定 9
  10. 10. 「ゆもつよメソッド解説1」 (入力、出力、変換、貯蔵について) • テストプロセスについて • ISTQBの定義するテストプロセスについて • テスト開発プロセスのおさらい • ゆもつよメソッドについて • ブラックボックステストにおけるテスト分析の課題 • テストカテゴリをベースにしたテスト分析の方法 • ゆもつよメソッドのメリット 10
  11. 11. 「ゆもつよメソッド解説1」 (入力、出力、変換、貯蔵について) • テストプロセスについて • ISTQBの定義するテストプロセスについて • テスト開発プロセスのおさらい • ゆもつよメソッドについて • ブラックボックステストにおけるテスト分析の課題 • テストカテゴリをベースにしたテスト分析の方法 • ゆもつよメソッドのメリット 11
  12. 12. 「ゆもつよメソッド解説1」 テストプロセスについて • テスト実行だけでは、「なぜその行為をするのか?」が不明 • ISTQBでは、テストプロセスを以下の活動に分けて考えるとしている • 分析する:テストを作れるように、テスト対象を分解する • 設計する:テスト分析の結果をもとに、目的に沿ったテストを作る • 実装する:テストを実行できるようにする(手順を決める、テストスクリプトを 書くなど、テスト実行にさらに近い作業) 計画 テスト終了基準の 評価と報告 テスト終了 作業 設計コントロール 分析 実装 実行 ↓テスト開発プロセス 12
  13. 13. 「ゆもつよメソッド解説1」 テストケースの構造とプロセス 13 テスト分析 フライト予約 テスト対象フィーチャ 購入金額の計算(料金クラス 人数に税率をかけた金額になること) テスト条件(仕様項目と期待結果) テスト設計 方針 テスト詳細 設計 テスト技法を 活用 テストパラメータ - クラス - 人数 - 日程 値 - エコノミー - 3人 - 06280900- アクション 1.フライト予約画 面起動 2.必須項目を入力 期待結果 - 15万 3 1.08 =48.6万 - 金額欄に表示 テストケース
  14. 14. 「ゆもつよメソッド解説1」 テストケースの構造とプロセス 14 テスト分析 フライト予約 テスト対象フィーチャ 購入金額の計算(料金クラス 人数に税率をかけた金額になること) テスト条件(仕様項目と期待結果) テスト設計 方針 テスト詳細 設計 テスト技法を 活用 テストパラメータ - クラス - 人数 - 日程 値 - エコノミー - 3人 - 06280900- アクション 1.フライト予約画 面起動 2.必須項目を入力 期待結果 - 15万 3 1.08 =48.6万 - 金額欄に表示 テストケース ゆもつよメソッドのターゲット
  15. 15. 「ゆもつよメソッド解説1」 (入力、出力、変換、貯蔵について) • テストプロセスについて • ISTQBの定義するテストプロセスについて • テスト開発プロセスのおさらい • ゆもつよメソッドについて • ブラックボックステストにおけるテスト分析の課題 • テストカテゴリをベースにしたテスト分析の方法 • ゆもつよメソッドのメリット 15
  16. 16. 「ゆもつよメソッド解説1」 ブラックボックステストにおけるテスト分析の課題 • ブラックボックステストのテスト設計では、漏れや重複が起こり やすい 16 ホワイトボックス テスト ブラックボックス テスト テスト対象の構造を分析し、網羅 テスト対象の仕様を分析し、網羅 詳細化する際に、コードの構造を ベースにできる →一貫性を確保しやすい 詳細化する際に、ルールに一貫性 がない →経験則に頼ることが多い
  17. 17. • 「大項目」「中項目」「小項目」といった分解、詳細化の問題点 • 個人的には耳が痛いです。 17 大項目 中項目 小項目1 小項目2 小項目3 テストケース 印刷 設定 印刷部数 - - 100部印刷した 場合 設定 プリント 設定 「印刷部数が99部 を超えました」と 表示されること 同じテストケースを実行して しまっている 「ゆもつよメソッド解説1」 ブラックボックステストにおけるテスト分析の課題
  18. 18. • ブラックボックステストで行うテスト分析(仕様項目特定)のためのルールを提案 • テストカテゴリを活用する • 通称:ゆもつよメソッド • 概要(4つのポイント) • 論理的機能構造 • テストカテゴリ • ドキュメントフォーマットと実施順序のルール化 • 仕様項目特定パターン 18 「ゆもつよメソッド解説1」 テストカテゴリをベースにしたテスト分析の方法
  19. 19. • 大きく捉えて、テスト対象を網羅しているかわかりやすい • 細かいことではなく、テストしなければならないことを先に洗 い出すことができる 19 「ゆもつよメソッド解説1」 ゆもつよメソッドのメリット よくある問題 1. 当たり前すぎる仕様はドキュメントに書かれないことがある → 仕様書を細かく見ているだけだと当たり前なテストが漏れる 2. 仕様書には機能についての説明が散漫しているため、細かく見てい ると重複する かといって、多すぎるからと全体を捉えずに省くと、漏れる テスト条件(仕様項目)の段階でテストが十分か、 漏れがないかといった確認が可能になる
  20. 20. • テスト対象の仕様を機能一覧として整理 • 論理的機能構造(次ページ参照)は、フィーチャの中の構造を想 定しMECEにテストするための参照モデル • 論理的機能構造の各要素は必要なテスト条件(仕様項目)を見つ けるためのガイドになる • フィーチャ:「該当のテストレベルから見た機能」と同義 20 「ゆもつよメソッド解説1」 テストカテゴリをベースにしたテスト分析の方法
  21. 21. 21 外部観察 できる仕様 機能組合せ 外部 出力調整入力調整 変換 貯蔵 エクスターナル サポート 相互作用 フィーチャ フィーチャ フィーチャ 内部に関わる 仕様 テスト実行
  22. 22. 22 外部観察 できる仕様 機能組合せ 外部 出力調整入力調整 変換 貯蔵 エクスターナル サポート 相互作用 フィーチャ フィーチャ フィーチャ 内部に関わる 仕様 メインでやること テスト実行
  23. 23. 23 外部観察 できる仕様 機能組合せ 外部 出力調整入力調整 変換 貯蔵 エクスターナル サポート 相互作用 フィーチャ フィーチャ フィーチャ 内部に関わる 仕様 テスト実行 メインの処理をやりやすく する。(DB格納など)
  24. 24. • テストカテゴリについて • テスト条件(仕様項目)を見つける際に、一貫性のある解釈をする ために、論理的機能構造の各要素ごとに、テスト対象から見てふさ わしい名前付けをしたもの • テストカテゴリは、テスト対象とフォールトの知識から導出される • 決定したテストカテゴリに対して、合意形成をする 24 「ゆもつよメソッド解説1」 テストカテゴリをベースにしたテスト分析の方法
  25. 25. • テストカテゴリ 25 「ゆもつよメソッド解説1」 テストカテゴリをベースにしたテスト分析の方法 論理的構造 テストカテゴリ 意味付け(想定する欠陥) 入力調整 画面入力 入力チェック、入力画面の制御 ボタン操作 画面遷移のルール、処理起動 出力調整 表示 処理結果の表示、出力数の制御 帳票出力 印刷内容、印刷フォーマット 変換 計算 料金計算 貯蔵 検索 検索条件の組合せ、検索結果 登録/更新/削除 DB処理 相互作用 反映 DB処理結果の他機能への反映 サポート エラー処理 エラー復旧処理 論理的機能構造 テスト対象の知識 過去に遭遇した欠陥の 知識
  26. 26. • ドキュメントフォーマットと実施順序のルール化 26 「ゆもつよメソッド解説1」 テストカテゴリをベースにしたテスト分析の方法 Step1. テスト対象フィーチャを選択 Step2. テストカテゴリを決めて合意 Step3. 仕様項目と期待結果を特定して整理 Step4. テストパラメータを特定して整理 Step5. テスト条件一覧をチェック 論理的機能構造 テスト対象 フィーチャ一覧 テストカテゴリ テスト条件一覧 テスト分析マトリクス 仕様項目/期待結果 テストパラメータ テスト分析の実施ステップ
  27. 27. • テスト実行時のデータ入出力パターン • テストとは、データを入力し、出力したデータを確認する行為で ある 27 「ゆもつよメソッド解説1」 テストカテゴリをベースにしたテスト分析の方法 テスト実行のデータの入出力は 9パターン(3 3)に集約できる 両方への出力 内部からの入力 両方からの入力 外部への出力 内部への出力データ出力 データ入出力 外部からの入力 データ入力
  28. 28. 28 外部観察 できる仕様 機能組合せ 外部 出力調整入力調整 変換 貯蔵 エクスターナル サポート 相互作用 フィーチャ フィーチャ フィーチャ 内部に関わる 仕様 テスト実行 テスト実行時のデータ入出力パターンをシミュレーション
  29. 29. 仕様項目の特定 (サポート、相互作用除く) • 「演習1-A」実務経験でのやり方で演習してみる • 「ゆもつよメソッド解説1」(入力、出力、変換、貯蔵について) • 「演習1-B」仕様項目の特定(サポート、相互作用除く) • 「ゆもつよメソッド解説2」(サポート、相互作用について) • 「演習1-C」仕様項目の特定(サポート、相互作用含む) • 「演習2」題材を変えて仕様項目の特定 29
  30. 30. 演習の進め方 (演習1-B、演習1-C、演習2共通) • テストすべき仕様項目を特定する(前提:テストカテゴリは決定済 み) • まずは仕様を読み込み、データの入出力をシミュレーションする →論理的機能構造のモデルを活用 • 論理的機能構造の、どこの箱の結果を確認するか?で仕様項目をテ ストカテゴリに割り振る • テストカテゴリは特定した仕様項目を分類し、見やすくしている • 今までの経験から、仕様項目に不足がないか見直す 30
  31. 31. 「演習1-B」仕様項目の特定 (サポート、相互作用除く) • 感想 • テストカテゴリのどこに割り振るかで混乱する(ヘッドセットの 「着信」は、対向機入力?音声出力?) • 結果として同じテストケースとなる(かぶる)ことはあり得る • ただし、その場合でもテストパラメータの選び方は異なること がある。(「着信すること」を確かめるのか、「着信音が鳴る こと」を確かめるのかでテストパラメータは異なるはず) 31
  32. 32. 1日目終了 • 続きは2日目 32
  33. 33. 「ゆもつよメソッド解説2」 (サポート、相互作用について) • 「演習1-A」実務経験でのやり方で演習してみる • 「ゆもつよメソッド解説1」(入力、出力、変換、貯蔵について) • 「演習1-B」仕様項目の特定(サポート、相互作用除く) • 「ゆもつよメソッド解説2」(サポート、相互作用について) • 「演習1-C」仕様項目の特定(サポート、相互作用含む) • 「演習2」題材を変えて仕様項目の特定 33
  34. 34. 「ゆもつよメソッド解説2」 テストカテゴリを活用したテスト分析の方法 (解説続き) 34 • テスト条件は、テストの視点から見たテスト対象の仕様項目である • ブラックボックステストは外部観察によるテスト設計なので、テス トベースに含まれるフィーチャから選択していくべき • 仕様書をそのまま利用するのではなく、フィーチャ単位で整理する • テストカテゴリとは、テストすべきフィーチャを抜け漏れなく多面 的に見るための分類である • 論理的機能構造は、テストカテゴリを導く時のベースとなるモデル →構造を推測する
  35. 35. 35 テストパラメータアクション テストすべきフィーチャ テストカテゴリ 欠陥の知識論理的機能構造テストベース 仕様項目 期待結果 事後条件出力値 事前条件 事前入力 1..* 1..* 1..* 1 1..* 1 1 * 1 1 * 1..* 1 テスト分析結果である、 テスト条件の構造 0..*
  36. 36. 36 テストパラメータアクション テストすべきフィーチャ テストカテゴリ 欠陥の知識論理的機能構造テストベース 仕様項目 期待結果 事後条件出力値 事前条件 事前入力 1..* 1..* 1..* 1 1..* 1 1 * 1 1 * 1..* 1 テスト分析結果である、 テスト条件の構造 0..*
  37. 37. 37 テストパラメータアクション テストすべきフィーチャ テストカテゴリ 欠陥の知識論理的機能構造テストベース 仕様項目 期待結果 事後条件出力値 事前条件 事前入力 1..* 1..* 1..* 1 1..* 1 0..* 1 * 1 1 * 1..* 1 テスト分析結果である、 テスト条件の構造
  38. 38. 38 テストパラメータアクション テストすべきフィーチャ テストカテゴリ 欠陥の知識論理的機能構造テストベース 仕様項目 期待結果 事後条件出力値 事前条件 事前入力 1..* 1..* 1..* 1 1..* 1 1 * 1 * 1..* 1 テスト条件 テスト分析結果である、 テスト条件の構造 10..*
  39. 39. 39 テストパラメータアクション テストすべきフィーチャ テストカテゴリ 欠陥の知識論理的機能構造テストベース 仕様項目 期待結果 事後条件出力値 事前条件 事前入力 1..* 1..* 1..* 1 1..* 1 1 * 1 * 1..* 1 テスト条件 「XXな場合、⃝⃝すると □□となること」 テスト分析結果である、 テスト条件の構造 10..*
  40. 40. 「ゆもつよメソッド解説2」 テストカテゴリの作成方法 40 • 入力、出力、変換、貯蔵に該当するテストカテゴリについて • 機能仕様書から該当するキーワードを洗い出し、リスト(次ペー ジ参照)に入れていく • そのキーワードを象徴するような名前をつける • 名前付けしたテストカテゴリの意味をメンバーで共有する • 入力、出力、変換、貯蔵に該当するテストカテゴリは、テスト対 象を理解した結果である
  41. 41. 41 入力 出力 変換 貯蔵 サポート 相互作用 起動/終了 パワーボタ ン ピープ音 終了処理の 対向機反映 BlueTooth 接続 パスワード 入力 対向機機器 名表示 ペアリング 実施 ペアリング 対向機情報 接続状態 ペアリング 対向機反映 ワイヤレス再 生 対向機の音 声入力 音楽再生 ストリーミ ング 停止状態 再生状態 スイッチリモ コン ボタン 再生開始/ 停止 停止状態 再生状態 ボリュームコ ントロール ピープ音 ボリューム 音量の保存 音量設定変 更可/不可 音量設定値 の共用 ハンズフリ ー通話 接続 着信 音声再生 ボイスダイ ヤル 音声出力先 の変更 初期化/リセ ット 設定初期化 機能一覧 テストカテ ゴリ
  42. 42. 「ゆもつよメソッド解説2」 テストカテゴリの作成方法 42 • サポート、相互作用に該当するテストカテゴリについて • テスト対象フィーチャのテストによって、内部的に呼び出される 別処理の結果確認のこと • 自処理の操作で完結するテストを「サポート」と呼ぶ • 他処理との連携操作が必要なテストを「相互作用」と呼ぶ
  43. 43. 「ゆもつよメソッド解説2」 テストカテゴリの作成方法 43 • サポート、相互作用に該当するテストカテゴリについて • 「連動処理」「割り込み」「リソース共有」「反映(副作用)」に該当するも のを仕様からピックアップ • 自処理実行中に確認できるものを「サポート」、他処理で確認するものを「相 互作用」に分類 • そのキーワードを象徴するような名前をつける • 名前付けしたテストカテゴリの意味をメンバーで共有する • サポート、相互作用に該当するテストカテゴリは、テスト対象の内部を理解し た結果である
  44. 44. 44 入力 出力 変換 貯蔵 サポート 相互作用 起動/終了 パワーボタ ン ピープ音 終了処理の 対向機反映 BlueTooth 接続 パスワード 入力 対向機機器 名表示 ペアリング 実施 ペアリング 対向機情報 接続状態 ペアリング 対向機反映 ワイヤレス再 生 対向機の音 声入力 音楽再生 ストリーミ ング 停止状態 再生状態 スイッチリモ コン ボタン 再生開始/ 停止 停止状態 再生状態 ボリュームコ ントロール ピープ音 ボリューム 音量の保存 音量設定変 更可/不可 音量設定値 の共用 ハンズフリ ー通話 接続 着信 音声再生 ボイスダイ ヤル 音声出力先 の変更 初期化/リセ ット 設定初期化 機能一覧 テストカテ ゴリ
  45. 45. 仕様項目の特定 (サポート、相互作用含む) • 「演習1-A」実務経験でのやり方で演習してみる • 「ゆもつよメソッド解説1」(入力、出力、変換、貯蔵について) • 「演習1-B」仕様項目の特定(サポート、相互作用除く) • 「ゆもつよメソッド解説2」(サポート、相互作用について) • 「演習1-C」仕様項目の特定(サポート、相互作用含む) • 「演習2」題材を変えて仕様項目の特定 45
  46. 46. • 感想 • サポート、相互作用に何が当てはまるのか、考え方に慣れるのが難しい • ボリュームコントロール機能の例では、「音量設定の変更可能/不可 能」を「サポート」、「ヘッドセット・対向機での音量設定値の共用」 を「相互作用」で確認するとしている • サポート、相互作用はあくまでメインの処理ではなく、別処理の結果を 確認する項目。キーワードは「反映」や「割り込み」、「共有」など • 特に相互作用は、他の処理を動かさなければ確認できない項目 46 仕様項目の特定 (サポート、相互作用含む)
  47. 47. 47 外部観察 できる仕様 機能組合せ 外部 出力調整入力調整 変換 貯蔵 エクスターナル サポート 相互作用 フィーチャ フィーチャ フィーチャ 内部に関わる 仕様 テスト実行 別処理の結果を 確認する
  48. 48. 「演習2」 題材を変えて仕様項目の特定 • 「演習1-A」実務経験でのやり方で演習してみる • 「ゆもつよメソッド解説1」(入力、出力、変換、貯蔵について) • 「演習1-B」仕様項目の特定(サポート、相互作用除く) • 「ゆもつよメソッド解説2」(サポート、相互作用について) • 「演習1-C」仕様項目の特定(サポート、相互作用含む) • 「演習2」題材を変えて仕様項目の特定 48
  49. 49. 「演習2」 題材を変えて仕様項目の特定 • 感想 • 仕様項目の特定はある程度できた(題材がヘッドセット→フラ イト予約に変わったのもある?) • やはり、仕様項目をテストカテゴリごとに分類するところで、 解釈の差が生まれる(テスト対象のとらえ方の違い?) 49
  50. 50. おわりに • ゆもつよメソッドを完全に修得することは非常に難しいです。 • 資料を読み返しても、理解度の浅い部分がありました。 • しかし、湯本さんの繰り返し強調されたポイント(分析と設計を 分けたい理由、モデリングして考える理由、最初に全体をとらえ る理由など)は少し理解できた気がします。 • 引き続き、テスト分析・設計に関しては学習を継続していこうと 思います。 50
  51. 51. おわりに • 個人的に、ゆもつよメソッドで業務に活用できそうなこと • 「はじめから仕様書を詳細に読み込むのはやめて、最初は全体 像をつかむことを大切にすること」 • 「ブラックボックステストを考えるとき、構造を推定するため にモデルを用いて、入出力のシミュレーションをしながら考え ていくこと」 • これらは、ゆもつよメソッドに限らずエンジニアリングとして 基礎的かつ重要なことだと考えます。 51
  52. 52. おまけ  湯本さんにtwitterでした質問 • 質問1:「テストカテゴリは、論理的機能構造とフォールトの知識 から導出されるもの」という考え方は合っていますか? • A: 論理的機能構造をベースにして、テスト対象とフォールトの 知識から導出されるもの、です。テスト対象の知識も必要です • 質問2:テストカテゴリは同一階層であるとは限らず、階層構造が ある場合もあると思うのですが… • A: テストレベルごとのテストカテゴリがあって良いと思うの で、そういう意味では階層構造を持ちます。ただ、より内部に 入っていくと内部構造を推定する必要はなくなります 52

×