テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
DESCRIPTION
TRANSCRIPT
+
テスト分析入門 - 「ゆもつよメソッド」を例に -
WACATE 実行委員 朱峰錦司@ kjstylepp
+参考文献
ソフトウェア・テスト PRESS 総集編 ソフトウェア・テスト PRESS Vol.10
特集 1 :今こそ聞きたいテストの上流設計 Vol.10 自体の販売はすでに終了 総集編の PDF 収録版は入手可能
http://www.amazon.co.jp/exec/obidos/ASIN/4774147338/wacate-22/ref=nosim/
JIS X 25010 :システム及びソフトウェアの品質モデル http://kikakurui.com/x25/X25010-2013-01.html
マインドマップから始めるソフトウェアテスト http://www.amazon.co.jp/exec/obidos/ASIN/4774131318/wacate-22/ref=nosim/
2014/06/21WACATE 2014 Summer
2
+自己紹介
所属 某豊洲の SIer 勤務
〜 2014.3 テストプロセスおよびツールの研究開発
2014.4 〜 アジャイルプロセスおよびツールの研究開発
WACATE 実行委員会 テスト自動化研究会
専門 テスト分析・設計方法論
TOPSE 7 期生 修了 JSTQB Foundation Level テスト設計コンテスト’ 14 決勝戦 3 位
スクラム 認定スクラムマスター
2014/06/21WACATE 2014 Summer
3
+目次
1. テストケースの再利用
2. テスト分析・設計
3. ゆもつよメソッド
4. ゆもつよメソッドの実践1. テスト対象分析2. テスト目的分析3. テスト条件検討
5. 既存テストケースの分析
6. まとめ2014/06/21WACATE 2014 Summer
4
+
1. テストケースの再利用
2014/06/21WACATE 2014 Summer
5
+1.1. ソフトウェア開発プロジェクトの現状
半分以上が差分/派生/保守プロジェクト テストケースの再利用が発生するケースは多い
出典: IPA ソフトウェア産業の実体把握に関する調査
42%
54%
5%
新規
差分 / 派生 / 保守
その他
2014/06/21WACATE 2014 Summer
6
+1.2. 再利用のポイント
どんな問題があるか? テストケースしか残っていない
必要十分なテストケースかどうかの判断が難しい そのまま流用していいのか、仕様変更にあわせて内容を変更し
ないといけないのかの判断が難しい
テストの意図を理解することが重要 テスト分析・設計方法論を活用すると効果的 ある程度コストのかかる作業だが、メリットは大きい
既存資産に対する適切な理解 以降の開発におけるテスト分析・設計の容易化
2014/06/21WACATE 2014 Summer
7
+
2. テスト分析・設計
2014/06/21WACATE 2014 Summer
8
+2.1. テストプロセス
ISTQB 国際的なテスト技術者資格認定期間による定義
Test.SSF 日本のテスト技術スキルフレームワークによる定義
タスクは定義されるが細かな実施手順は提供されない 手順を定義した方法論を参考にする
テスト分析
テスト設計
テスト実装
テスト実行
終了基準の評価とレポート
テスト要求分析
テストアーキテクチャ
設計
テスト詳細設計
テスト実装
テスト実行
テスト報告
テスト評価
2014/06/21WACATE 2014 Summer
9
+2.2. テスト分析・設計方法論
様々な方法論が存在 日本において有名な方法論
VSTeP HAYST 法 ゆもつよメソッド… etc
デファクトスタンダードはない プロジェクト特性などに応じて適宜選択 今回はゆもつよメソッドを扱う
2014/06/21WACATE 2014 Summer
10
+(参考)テスト設計コンテスト
ASTER(ソフトウェアテスト技術振興協会)主催のテスト分析・設計技術を競うイベント http://aster.or.jp/business/contest.html 2014年の様子
http://aster.or.jp/business/contest/contest2014.html
2014年優勝チームTFC KA・RI・YA (東海代表)出典:テスト設計コンテスト 公式サイト
2 日目のモーニングセンッションにご登壇いただきますのでお楽しみに!
2014/06/21WACATE 2014 Summer
11
+
3. ゆもつよメソッド
2014/06/21WACATE 2014 Summer
12
+3.1. 概要( 1/3)
日本 HP 湯本剛氏が考案
特徴 テスト観点を 2 つの側面で整理
何に対して ゆもつよメソッドでは「機能」と呼ぶ
どこに着眼するか ゆもつよメソッドでは「テストタイプ」「テストカテゴリ」と呼ぶ
何に対して どこに着目するか
2014/06/21WACATE 2014 Summer
13
+3.1. 概要( 2/3)
ゆもつよメソッドの全体像
実現したい品質の具体的把握
テスト箇所の選択
テストの目的設定
テスト対象アイテム特定
テストタイプ特定
機能の整理&再分類
テストカテゴリ作成
テスト条件となる仕様項目特定
テスト設計方針特定
テストケース条件特定
技法適用(モデル化) テストケース作成 テスト手順作成
テスト計画 テスト分析
テスト設計
テスト詳細設計 テスト実装
出典:ソフトウェア・テスト PRESS Vol.10
2014/06/21WACATE 2014 Summer
14
+3.1. 概要( 3/3)
今回は一部のみを解説
実現したい品質の具体的把握
テスト箇所の選択
テストの目的設定
テスト対象アイテム特定
テストタイプ特定
機能の整理&再分類
テストカテゴリ作成
テスト条件となる仕様項目特定
テスト設計方針特定
テストケース条件特定
技法適用(モデル化) テストケース作成 テスト手順作成
テスト計画 テスト分析
テスト設計
テスト詳細設計 テスト実装
出典:ソフトウェア・テスト PRESS Vol.10
2014/06/21WACATE 2014 Summer
15
+3.2. 適用手順( 1/2)
以下の 3 ステップで解説ステップ
本講義におけるプロセス
ゆもつよメソッドにおけるプロセス
1 テスト対象分析 機能の整理&再分類
2 テスト目的分析テストタイプ特定テストカテゴリ作成
3 テスト条件検討 テスト条件となる仕様項目特定
2014/06/21WACATE 2014 Summer
16
+3.2. 適用手順 (2/2)
Process Flow Diagram
機能モデル
テスト目的分析
テスト対象分析
テスト条件検討
品質モデル仕様書
機能一覧 テストカテゴリ一覧
テスト条件一覧
2014/06/21WACATE 2014 Summer
17
+
4. ゆもつよメソッドの実践
2014/06/21WACATE 2014 Summer
18
+4.0. 実践の流れ
1. プロセス概要
2. 手順
3. 考え方
4. 具体例 デジカメを例に
2014/06/21WACATE 2014 Summer
19
+
4.1. テスト対象分析
2014/06/21WACATE 2014 Summer
20
+4.1.1. プロセス概要
実施事項 仕様書に書かれた内容を構造分解し、テスト対象とすべき機能を抽出する
入力成果物 仕様書 テスト対象の仕様が書かれた成果物
出力成果物 機能一覧 テスト対象の一覧
2014/06/21WACATE 2014 Summer
21
+4.1.2. 手順
1. 仕様書から機能に該当するテスト対象を抽出し、木構造で整理する
2. 末端のテスト対象を機能一覧として列挙する
2014/06/21WACATE 2014 Summer
22
+4.1.3. 考え方のポイント
ただの仕様書目次コピペにならないように 仕様書の記述粒度がバラバラの可能性 他のドキュメントにも記述がある可能性
マインドマップの活用木構造、および要素間の関連を表現するのに有用
○○システム A機能 A-1機能
A-2機能
B機能 B-1機能
B-2機能
C機能
2014/06/21WACATE 2014 Summer
23
+4.1.4. 具体例( 1/2) - 仕様確認
準備 − 充電
− メモリ装着− 電源 ON / OFF
操作 − 撮影
・撮影モード設定・操作パネル・フラッシュ・ズーム撮影・連続撮影
− 再生・再生モード設定
・ファイルコピー
・表示レイアウト
設定 − メ
ニュー操作 − 撮影設定
その他 − 電源管理 − モニタ表示内容 − リセット − 画面メッセージ
仕様書目次
2014/06/21WACATE 2014 Summer
24
+4.1.4. 具体例( 2/2) -機能整理
設定系をグルーピング
目次にはなくても入れる必要がありそう
画面の情報などは除外
2014/06/21WACATE 2014 Summer
25
+
4.2. テスト目的分析
2014/06/21WACATE 2014 Summer
26
+4.2.1. プロセス概要
実施事項 仕様書および各種モデルから、考慮すべきテストタイプおよびテストカテゴリを抽出する
入力成果物 仕様書 テスト対象の仕様が書かれた成果物
品質モデル 考慮すべきテストタイプを決定する上で参考にする品質の考え方
機能モデル 考慮すべきテストカテゴリを決定する上で参考にするソフトウェアの構造分解の考え方
出力成果物 テストカテゴリ一覧
テストにおいての着眼点の一覧
2014/06/21WACATE 2014 Summer
27
+4.2.2. 手順
1. 品質モデルを参考に、考慮すべきテストタイプを決定する
2. 各テストタイプについて、機能モデルを参考にテストカテゴリを決定する
1. 機能テスト:機能モデルの各構成要素に着目2. 非機能テスト:機能モデルの構成要素に紐づく観点に着目
2014/06/21WACATE 2014 Summer
28
+4.2.3. 考え方のポイント( 1/5)
品質モデルの活用 ソフトウェアが満たすべき品質を網羅した観点集
代表的なものとして JIS X 25010 「システム及びソフトウェアの品質モデル」がある
出典:経済産業省 システム/ソフトウェア製品の品質要求定義と品質評価のためのメトリクスに関する調査報告書
システム / ソフトウェア製品品質
機能適合性 性能効率性 互換性 使用性 信頼性 セキュリティ 保守性 移植性
完全性正確性適切性
適切度認識性習得性運用性ユーザエ
ラー防止性ユーザインタフェースの快美性
アクセシビリティ
時間効率性資源利用性キャパシ
ティ
共存性相互運用性
成熟性可用性障害許容性回復性
機密保持性インテグリ
ティ否認防止性責任追跡性真正性
モジュール性
再利用性解析性変更性試験性
順応性設置性置換性
2014/06/21WACATE 2014 Summer
29
+4.2.3. 考え方のポイント( 2/5)
品質モデルの活用確保したい品質を確認するためのテストを選択
保守性や使用性など、テストでは保証しにくい品質もある 湯本氏による解説では、以下のモデルが用いられている
出典:技術評論社 ソフトウェア・テスト PRESS Vol.10
動的テスト システム / ソフトウェア構造の網羅性 構造テスト
機能性 機能テスト
機能組み合わせテスト
シナリオテスト
セキュリティテスト
使用性 ユーザビリティテスト
効率性 ロードテスト
ストレステスト
. . .
2014/06/21WACATE 2014 Summer
30
+4.2.3. 考え方のポイント( 3/5)
機能モデルの活用:機能テスト ソフトウェアの構造を分解したモデル 品質モデルほど普及した考え方ではないため、デファ
クトなモデルはない 湯本氏による解説では、以下のモデルが用いられている
出典:技術評論社 ソフトウェア・テスト PRESS Vol.10
管理機能
入力
サポート
出力
貯蔵
変換
2014/06/21WACATE 2014 Summer
31
+4.2.3. 考え方のポイント( 4/5)
機能モデルの活用:機能テスト 考えやすいようにカスタマイズ
構成要素名も直観とあうものに変更してよい小演習では以下のような機能モデルを使ってみる
表示
データベース操作
処理
入力チェック入力
2014/06/21WACATE 2014 Summer
32
+4.2.3. 考え方のポイント( 5/5)
機能モデルの活用:非機能テスト機能モデルの各構成要素に対して、注意すべき観点を付与したものを活用 湯本氏による解説では、以下のモデルが用いられている
機能テストと同様、扱いやすいようにカスタマイズするとよい
出典:技術評論社 ソフトウェア・テスト PRESS Vol.10
管理機能
入力
サポート
出力
貯蔵
変換
• 状態遷移のタイミング•異常モード•排他制御•同期処理
• 利用メモリ量• 利用する CPU量
•異常データ• 入力データ量• 入力データサイズ• 入力タイミング• 入力方法
• 格納データサイズ• ストレージ空き要領
• ファイルシステム /OS の変更•接続機器の変更• 他のソフトウェアと
の調整
• 出力データサイズ• 出力データ異常• 出力先 S/W 状態• 出力先 H/W 状態
2014/06/21WACATE 2014 Summer
33
+4.2.4. 具体例( 1/2) - テストタイプ
出典:技術評論社 ソフトウェア・テスト PRESS Vol.10
動的テスト システム / ソフトウェア構造の網羅性 構造テスト
機能性 機能テスト
機能組み合わせテスト
シナリオテスト
セキュリティテスト
使用性 ユーザビリティテスト
効率性 ロードテスト
ストレステスト
拡張性テスト
堅牢性テスト
回復性テスト
信頼性テスト
データ互換性テスト
構成テスト
両立性テスト
信頼性
互換性
2014/06/21WACATE 2014 Summer
34
+4.2.4. 具体例( 2/2) - テストカテゴリ
管理機能
入力
サポート
出力
貯蔵
変換
ボタン押下センサー反応
画面表示外部メモリ
内部メモリ 状態遷移
長時間起動
メディア互換
条件組合せ
機能 非機能
2014/06/21WACATE 2014 Summer
35
+
4.3. テスト条件検討
2014/06/21WACATE 2014 Summer
36
+4.3.1. プロセス概要
実施事項 検討したテストカテゴリおよび機能に対して、テストが必要な組合せを分析し、実施すべきテストのパターンを抽出する
入力成果物 テストカテゴリ一覧
テストにおいての着眼点の一覧
機能一覧 テスト対象の一覧
出力成果物 テスト条件一覧 機能とテストカテゴリの組合せに対して、具体的に実施すべきテストのパターンの一覧
2014/06/21WACATE 2014 Summer
37
+4.3.2. 手順
1. 機能とテストカテゴリの組合せに対して、テストが必要かどうかを判断する
2. テストが必要な箇所に対して、具体的に実施するべきテストのパターンを列挙する
2014/06/21WACATE 2014 Summer
38
+4.3.3. 考え方のポイント
テスト分析マトリクスの活用機能とテストカテゴリの組合せを考える際に、マトリ
クスを作成することで分析が容易になる
テストカテゴリ1
テストカテゴリ2
テストカテゴリ3
機能A
○ ○ −
機能B
○ ○ −
機能C
− − ○テストをするべきと判断した箇所について、実際に実施すべきテストパターンを詳細化
2014/06/21WACATE 2014 Summer
39
+4.3.4. 具体例( 1/2) - テスト分析マトリクス
機能テスト ロードテスト
堅牢性テスト
データ互換
テスト
ボタン押下
センサー反応
内部メモリ
状態遷移
外部メモリ
画面表示
長時間起動
条件組合せ
メディア互換
システム
電源管理 ○ ○ ○ ○ ○ ○
リセット ○ ○ ○ ○ ○
撮影 通常撮影 ○ ○ ○
ズーム撮影 ○ ○ ○
連続撮影 ○ ○ ○ ○
再生 通常再生 ○ ○
設定 撮影設定 ○ ○ ○
再生モード設定
○ ○ ○
データ メモリ装着 ○ ○ ○ ○ ○
ファイルコピー
○ ○ ○ ○
ここについてテスト条件を詳細化
2014/06/21WACATE 2014 Summer
40
+4.3.4. 具体例( 2/2) - テスト条件
機能 テストタイプ
テストカテゴリ
テスト条件
システム
電源管理
機能テスト 画面表示 カメラの電源 ON時にシステム起動画面が表示されること
カメラの電源 OFF時にシステム終了画面が表示されること
...
2014/06/21WACATE 2014 Summer
41
+4.4. ゆもつよメソッドのメリット
モデルがシンプル 他の方法論と比較して比較的手がつけやすい
機能とテストカテゴリの 2軸による分析 スプレッドシートですぐ試せる
機能分解は実践しやすい テストカテゴリを考える上での機能モデル例が示されている
2014/06/21WACATE 2014 Summer
42
+4.5. 適用上の注意点( 1/2)
テストレベルごとに分析が必要機能を分析軸とするため、機能の粒度ごとに異なる分析
が必要となる 単体テスト用の分析 システムテスト様の分析… etc
機能「間」の表現は工夫が必要 より上位のテストレベルで検討する 「機能連携」というテストカテゴリを作成する
2014/06/21WACATE 2014 Summer
43
+4.5. 適用上の注意点( 2/2)
考慮しにくいテスト観点がある モデルからトップダウンでテストカテゴリを検討する
ため、以下のようなものを考慮しにくい プロダクトリスクを軽減するようなテスト
別途リスク分析を実施
過去に発生したレアケースバグを防ぐテスト 過去バグ情報等をもとにしたボトムアップな分析からもテストカテゴリを作成する
2014/06/21WACATE 2014 Summer
44
+
5. 既存テストケースの分析
2014/06/21WACATE 2014 Summer
45
+5.1. 前準備
既存テストケースを簡単に整理 テストケースを一意に特定する ID をふる各テストケースを以下の要素ごとに整理する
事前条件 (when) 実施動作 (do) 期待結果 (then)
2014/06/21WACATE 2014 Summer
46
+5.2. 整理手順( 1/2)
Process Flow Diagram
機能モデル
テスト目的分析
テスト対象分析
テスト条件検討
品質モデル
テストケース
機能一覧 テストカテゴリ一覧
テスト分析マトリクス(テストケースのマッピング)
仕様書
2014/06/21WACATE 2014 Summer
47
+5.2. 整理手順( 2/2)
1. テスト対象分析1. 各テストケースの対象となっている機能を列挙2. 列挙された機能を整理
漏れている機能があれば随時追加
2. テスト目的分析1. 各テストケースの期待結果に着目し、何を確認するテストなのかをテ
ストカテゴリとして列挙 不明な箇所は随時関係者に確認
2. 列挙されたカテゴリを整理 漏れているテストカテゴリがあれば随時追加
3. テスト条件検討1. 各テストケースをテスト分析マトリクスのセルにマップ
マップされていないセルが本当にテスト不要かどうかを検討2014/06/21WACATE 2014 Summer
48
+
6. まとめ
2014/06/21WACATE 2014 Summer
49
+6.1. テストケースの再利用
なぜ難しいか? テストケースしか残っていない
必要十分なテストケースかどうかの判断が難しい そのまま流用していいのか、仕様変更にあわせて内容を変更し
ないといけないのかの判断が難しい
テストの意図を理解することが重要 テスト分析・設計方法論を活用すると効果的 ある程度コストのかかる作業だが、メリットは大きい
既存資産に対する適切な理解 以降の開発におけるテスト分析・設計の容易化
2014/06/21WACATE 2014 Summer
50
+6.2. テスト分析・設計方法論
様々な方法論が存在 日本において有名な方法論
VSTeP HAYST 法 ゆもつよメソッド… etc
ゆもつよメソッドのテスト分析パート
2014/06/21WACATE 2014 Summer
51
+6.3. 既存テストケースの整理
テストケースからテスト分析マトリクスをリバース
2014/06/21WACATE 2014 Summer
52
+Let’s Reverse!
2014/06/21 WACATE 2014 Summer