テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

53
+ テテテテテテテ - テテテテテテテテテテテテ 「」 - WACATE テテテテ テテテテkjstylepp

Upload: kinji-akemine

Post on 13-Nov-2014

3.190 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+

テスト分析入門 - 「ゆもつよメソッド」を例に -

WACATE 実行委員 朱峰錦司@ kjstylepp

Page 2: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+参考文献

ソフトウェア・テスト 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

Page 3: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+自己紹介

所属 某豊洲の SIer 勤務

〜 2014.3 テストプロセスおよびツールの研究開発

2014.4 〜 アジャイルプロセスおよびツールの研究開発

WACATE 実行委員会 テスト自動化研究会

専門 テスト分析・設計方法論

TOPSE 7 期生 修了 JSTQB Foundation Level テスト設計コンテスト’ 14 決勝戦 3 位

スクラム 認定スクラムマスター

2014/06/21WACATE 2014 Summer

3

Page 4: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+目次

1. テストケースの再利用

2. テスト分析・設計

3. ゆもつよメソッド

4. ゆもつよメソッドの実践1. テスト対象分析2. テスト目的分析3. テスト条件検討

5. 既存テストケースの分析

6. まとめ2014/06/21WACATE 2014 Summer

4

Page 5: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+

1. テストケースの再利用

2014/06/21WACATE 2014 Summer

5

Page 6: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+1.1. ソフトウェア開発プロジェクトの現状

半分以上が差分/派生/保守プロジェクト テストケースの再利用が発生するケースは多い

出典: IPA ソフトウェア産業の実体把握に関する調査

42%

54%

5%

新規

差分 / 派生 / 保守

その他

2014/06/21WACATE 2014 Summer

6

Page 7: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+1.2. 再利用のポイント

どんな問題があるか? テストケースしか残っていない

必要十分なテストケースかどうかの判断が難しい そのまま流用していいのか、仕様変更にあわせて内容を変更し

ないといけないのかの判断が難しい

テストの意図を理解することが重要 テスト分析・設計方法論を活用すると効果的 ある程度コストのかかる作業だが、メリットは大きい

既存資産に対する適切な理解 以降の開発におけるテスト分析・設計の容易化

2014/06/21WACATE 2014 Summer

7

Page 8: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+

2. テスト分析・設計

2014/06/21WACATE 2014 Summer

8

Page 9: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+2.1. テストプロセス

ISTQB 国際的なテスト技術者資格認定期間による定義

Test.SSF 日本のテスト技術スキルフレームワークによる定義

タスクは定義されるが細かな実施手順は提供されない 手順を定義した方法論を参考にする

テスト分析

テスト設計

テスト実装

テスト実行

終了基準の評価とレポート

テスト要求分析

テストアーキテクチャ

設計

テスト詳細設計

テスト実装

テスト実行

テスト報告

テスト評価

2014/06/21WACATE 2014 Summer

9

Page 10: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+2.2. テスト分析・設計方法論

様々な方法論が存在 日本において有名な方法論

VSTeP HAYST 法 ゆもつよメソッド… etc

デファクトスタンダードはない プロジェクト特性などに応じて適宜選択 今回はゆもつよメソッドを扱う

2014/06/21WACATE 2014 Summer

10

Page 11: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+(参考)テスト設計コンテスト

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

Page 12: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+

3. ゆもつよメソッド

2014/06/21WACATE 2014 Summer

12

Page 13: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+3.1. 概要( 1/3)

日本 HP 湯本剛氏が考案

特徴 テスト観点を 2 つの側面で整理

何に対して ゆもつよメソッドでは「機能」と呼ぶ

どこに着眼するか ゆもつよメソッドでは「テストタイプ」「テストカテゴリ」と呼ぶ

何に対して どこに着目するか

2014/06/21WACATE 2014 Summer

13

Page 14: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+3.1. 概要( 2/3)

ゆもつよメソッドの全体像

実現したい品質の具体的把握

テスト箇所の選択

テストの目的設定

テスト対象アイテム特定

テストタイプ特定

機能の整理&再分類

テストカテゴリ作成

テスト条件となる仕様項目特定

テスト設計方針特定

テストケース条件特定

技法適用(モデル化) テストケース作成 テスト手順作成

テスト計画 テスト分析

テスト設計

テスト詳細設計 テスト実装

出典:ソフトウェア・テスト PRESS Vol.10

2014/06/21WACATE 2014 Summer

14

Page 15: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+3.1. 概要( 3/3)

今回は一部のみを解説

実現したい品質の具体的把握

テスト箇所の選択

テストの目的設定

テスト対象アイテム特定

テストタイプ特定

機能の整理&再分類

テストカテゴリ作成

テスト条件となる仕様項目特定

テスト設計方針特定

テストケース条件特定

技法適用(モデル化) テストケース作成 テスト手順作成

テスト計画 テスト分析

テスト設計

テスト詳細設計 テスト実装

出典:ソフトウェア・テスト PRESS Vol.10

2014/06/21WACATE 2014 Summer

15

Page 16: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+3.2. 適用手順( 1/2)

以下の 3 ステップで解説ステップ

本講義におけるプロセス

ゆもつよメソッドにおけるプロセス

1 テスト対象分析 機能の整理&再分類

2 テスト目的分析テストタイプ特定テストカテゴリ作成

3 テスト条件検討 テスト条件となる仕様項目特定

2014/06/21WACATE 2014 Summer

16

Page 17: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+3.2. 適用手順 (2/2)

Process Flow Diagram

機能モデル

テスト目的分析

テスト対象分析

テスト条件検討

品質モデル仕様書

機能一覧 テストカテゴリ一覧

テスト条件一覧

2014/06/21WACATE 2014 Summer

17

Page 18: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+

4. ゆもつよメソッドの実践

2014/06/21WACATE 2014 Summer

18

Page 19: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.0. 実践の流れ

1. プロセス概要

2. 手順

3. 考え方

4. 具体例 デジカメを例に

2014/06/21WACATE 2014 Summer

19

Page 20: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+

4.1. テスト対象分析

2014/06/21WACATE 2014 Summer

20

Page 21: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.1.1. プロセス概要

実施事項 仕様書に書かれた内容を構造分解し、テスト対象とすべき機能を抽出する

入力成果物 仕様書 テスト対象の仕様が書かれた成果物

出力成果物 機能一覧 テスト対象の一覧

2014/06/21WACATE 2014 Summer

21

Page 22: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.1.2. 手順

1. 仕様書から機能に該当するテスト対象を抽出し、木構造で整理する

2. 末端のテスト対象を機能一覧として列挙する

2014/06/21WACATE 2014 Summer

22

Page 23: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.1.3. 考え方のポイント

ただの仕様書目次コピペにならないように 仕様書の記述粒度がバラバラの可能性 他のドキュメントにも記述がある可能性

マインドマップの活用木構造、および要素間の関連を表現するのに有用

○○システム A機能 A-1機能

A-2機能

B機能 B-1機能

B-2機能

C機能

2014/06/21WACATE 2014 Summer

23

Page 24: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.1.4. 具体例( 1/2) - 仕様確認

準備 − 充電

− メモリ装着− 電源 ON / OFF

操作 − 撮影

・撮影モード設定・操作パネル・フラッシュ・ズーム撮影・連続撮影

− 再生・再生モード設定

・ファイルコピー

・表示レイアウト

設定 − メ

ニュー操作 − 撮影設定

その他 − 電源管理 − モニタ表示内容 − リセット − 画面メッセージ

仕様書目次

2014/06/21WACATE 2014 Summer

24

Page 25: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.1.4. 具体例( 2/2) -機能整理

設定系をグルーピング

目次にはなくても入れる必要がありそう

画面の情報などは除外

2014/06/21WACATE 2014 Summer

25

Page 26: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+

4.2. テスト目的分析

2014/06/21WACATE 2014 Summer

26

Page 27: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.2.1. プロセス概要

実施事項 仕様書および各種モデルから、考慮すべきテストタイプおよびテストカテゴリを抽出する

入力成果物 仕様書 テスト対象の仕様が書かれた成果物

品質モデル 考慮すべきテストタイプを決定する上で参考にする品質の考え方

機能モデル 考慮すべきテストカテゴリを決定する上で参考にするソフトウェアの構造分解の考え方

出力成果物 テストカテゴリ一覧

テストにおいての着眼点の一覧

2014/06/21WACATE 2014 Summer

27

Page 28: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.2.2. 手順

1. 品質モデルを参考に、考慮すべきテストタイプを決定する

2. 各テストタイプについて、機能モデルを参考にテストカテゴリを決定する

1. 機能テスト:機能モデルの各構成要素に着目2. 非機能テスト:機能モデルの構成要素に紐づく観点に着目

2014/06/21WACATE 2014 Summer

28

Page 29: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.2.3. 考え方のポイント( 1/5)

品質モデルの活用 ソフトウェアが満たすべき品質を網羅した観点集

代表的なものとして JIS X 25010 「システム及びソフトウェアの品質モデル」がある

出典:経済産業省 システム/ソフトウェア製品の品質要求定義と品質評価のためのメトリクスに関する調査報告書

システム / ソフトウェア製品品質

機能適合性 性能効率性 互換性 使用性 信頼性 セキュリティ 保守性 移植性

完全性正確性適切性

適切度認識性習得性運用性ユーザエ

ラー防止性ユーザインタフェースの快美性

アクセシビリティ

時間効率性資源利用性キャパシ

ティ

共存性相互運用性

成熟性可用性障害許容性回復性

機密保持性インテグリ

ティ否認防止性責任追跡性真正性

モジュール性

再利用性解析性変更性試験性

順応性設置性置換性

2014/06/21WACATE 2014 Summer

29

Page 30: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.2.3. 考え方のポイント( 2/5)

品質モデルの活用確保したい品質を確認するためのテストを選択

保守性や使用性など、テストでは保証しにくい品質もある 湯本氏による解説では、以下のモデルが用いられている

出典:技術評論社 ソフトウェア・テスト PRESS Vol.10

動的テスト システム / ソフトウェア構造の網羅性 構造テスト

機能性 機能テスト

機能組み合わせテスト

シナリオテスト

セキュリティテスト

使用性 ユーザビリティテスト

効率性 ロードテスト

ストレステスト

. . .

2014/06/21WACATE 2014 Summer

30

Page 31: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.2.3. 考え方のポイント( 3/5)

機能モデルの活用:機能テスト ソフトウェアの構造を分解したモデル 品質モデルほど普及した考え方ではないため、デファ

クトなモデルはない 湯本氏による解説では、以下のモデルが用いられている

出典:技術評論社 ソフトウェア・テスト PRESS Vol.10

管理機能

入力

サポート

出力

貯蔵

変換

2014/06/21WACATE 2014 Summer

31

Page 32: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.2.3. 考え方のポイント( 4/5)

機能モデルの活用:機能テスト 考えやすいようにカスタマイズ

構成要素名も直観とあうものに変更してよい小演習では以下のような機能モデルを使ってみる

表示

データベース操作

処理

入力チェック入力

2014/06/21WACATE 2014 Summer

32

Page 33: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.2.3. 考え方のポイント( 5/5)

機能モデルの活用:非機能テスト機能モデルの各構成要素に対して、注意すべき観点を付与したものを活用 湯本氏による解説では、以下のモデルが用いられている

機能テストと同様、扱いやすいようにカスタマイズするとよい

出典:技術評論社 ソフトウェア・テスト PRESS Vol.10

管理機能

入力

サポート

出力

貯蔵

変換

• 状態遷移のタイミング•異常モード•排他制御•同期処理

• 利用メモリ量• 利用する CPU量

•異常データ• 入力データ量• 入力データサイズ• 入力タイミング• 入力方法

• 格納データサイズ• ストレージ空き要領

• ファイルシステム /OS の変更•接続機器の変更• 他のソフトウェアと

の調整

• 出力データサイズ• 出力データ異常• 出力先 S/W 状態• 出力先 H/W 状態

2014/06/21WACATE 2014 Summer

33

Page 34: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.2.4. 具体例( 1/2) - テストタイプ

出典:技術評論社 ソフトウェア・テスト PRESS Vol.10

動的テスト システム / ソフトウェア構造の網羅性 構造テスト

機能性 機能テスト

機能組み合わせテスト

シナリオテスト

セキュリティテスト

使用性 ユーザビリティテスト

効率性 ロードテスト

ストレステスト

拡張性テスト

堅牢性テスト

回復性テスト

信頼性テスト

データ互換性テスト

構成テスト

両立性テスト

信頼性

互換性

2014/06/21WACATE 2014 Summer

34

Page 35: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.2.4. 具体例( 2/2) - テストカテゴリ

管理機能

入力

サポート

出力

貯蔵

変換

ボタン押下センサー反応

画面表示外部メモリ

内部メモリ 状態遷移

長時間起動

メディア互換

条件組合せ

機能 非機能

2014/06/21WACATE 2014 Summer

35

Page 36: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+

4.3. テスト条件検討

2014/06/21WACATE 2014 Summer

36

Page 37: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.3.1. プロセス概要

実施事項 検討したテストカテゴリおよび機能に対して、テストが必要な組合せを分析し、実施すべきテストのパターンを抽出する

入力成果物 テストカテゴリ一覧

テストにおいての着眼点の一覧

機能一覧 テスト対象の一覧

出力成果物 テスト条件一覧 機能とテストカテゴリの組合せに対して、具体的に実施すべきテストのパターンの一覧

2014/06/21WACATE 2014 Summer

37

Page 38: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.3.2. 手順

1. 機能とテストカテゴリの組合せに対して、テストが必要かどうかを判断する

2. テストが必要な箇所に対して、具体的に実施するべきテストのパターンを列挙する

2014/06/21WACATE 2014 Summer

38

Page 39: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.3.3. 考え方のポイント

テスト分析マトリクスの活用機能とテストカテゴリの組合せを考える際に、マトリ

クスを作成することで分析が容易になる

テストカテゴリ1

テストカテゴリ2

テストカテゴリ3

機能A

○ ○ −

機能B

○ ○ −

機能C

− − ○テストをするべきと判断した箇所について、実際に実施すべきテストパターンを詳細化

2014/06/21WACATE 2014 Summer

39

Page 40: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.3.4. 具体例( 1/2) - テスト分析マトリクス

機能テスト ロードテスト

堅牢性テスト

データ互換

テスト

ボタン押下

センサー反応

内部メモリ

状態遷移

外部メモリ

画面表示

長時間起動

条件組合せ

メディア互換

システム

電源管理 ○ ○ ○ ○ ○ ○

リセット ○ ○ ○ ○ ○

撮影 通常撮影 ○ ○ ○

ズーム撮影 ○ ○ ○

連続撮影 ○ ○ ○ ○

再生 通常再生 ○ ○

設定 撮影設定 ○ ○ ○

再生モード設定

○ ○ ○

データ メモリ装着 ○ ○ ○ ○ ○

ファイルコピー

○ ○ ○ ○

ここについてテスト条件を詳細化

2014/06/21WACATE 2014 Summer

40

Page 41: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.3.4. 具体例( 2/2) - テスト条件

機能 テストタイプ

テストカテゴリ

テスト条件

システム

電源管理

機能テスト 画面表示 カメラの電源 ON時にシステム起動画面が表示されること

カメラの電源 OFF時にシステム終了画面が表示されること

...

2014/06/21WACATE 2014 Summer

41

Page 42: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.4. ゆもつよメソッドのメリット

モデルがシンプル 他の方法論と比較して比較的手がつけやすい

機能とテストカテゴリの 2軸による分析 スプレッドシートですぐ試せる

機能分解は実践しやすい テストカテゴリを考える上での機能モデル例が示されている

2014/06/21WACATE 2014 Summer

42

Page 43: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.5. 適用上の注意点( 1/2)

テストレベルごとに分析が必要機能を分析軸とするため、機能の粒度ごとに異なる分析

が必要となる 単体テスト用の分析 システムテスト様の分析… etc

機能「間」の表現は工夫が必要 より上位のテストレベルで検討する 「機能連携」というテストカテゴリを作成する

2014/06/21WACATE 2014 Summer

43

Page 44: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+4.5. 適用上の注意点( 2/2)

考慮しにくいテスト観点がある モデルからトップダウンでテストカテゴリを検討する

ため、以下のようなものを考慮しにくい プロダクトリスクを軽減するようなテスト

別途リスク分析を実施

過去に発生したレアケースバグを防ぐテスト 過去バグ情報等をもとにしたボトムアップな分析からもテストカテゴリを作成する

2014/06/21WACATE 2014 Summer

44

Page 45: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+

5. 既存テストケースの分析

2014/06/21WACATE 2014 Summer

45

Page 46: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+5.1. 前準備

既存テストケースを簡単に整理 テストケースを一意に特定する ID をふる各テストケースを以下の要素ごとに整理する

事前条件 (when) 実施動作 (do) 期待結果 (then)

2014/06/21WACATE 2014 Summer

46

Page 47: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+5.2. 整理手順( 1/2)

Process Flow Diagram

機能モデル

テスト目的分析

テスト対象分析

テスト条件検討

品質モデル

テストケース

機能一覧 テストカテゴリ一覧

テスト分析マトリクス(テストケースのマッピング)

仕様書

2014/06/21WACATE 2014 Summer

47

Page 48: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+5.2. 整理手順( 2/2)

1. テスト対象分析1. 各テストケースの対象となっている機能を列挙2. 列挙された機能を整理

漏れている機能があれば随時追加

2. テスト目的分析1. 各テストケースの期待結果に着目し、何を確認するテストなのかをテ

ストカテゴリとして列挙 不明な箇所は随時関係者に確認

2. 列挙されたカテゴリを整理 漏れているテストカテゴリがあれば随時追加

3. テスト条件検討1. 各テストケースをテスト分析マトリクスのセルにマップ

マップされていないセルが本当にテスト不要かどうかを検討2014/06/21WACATE 2014 Summer

48

Page 49: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+

6. まとめ

2014/06/21WACATE 2014 Summer

49

Page 50: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+6.1. テストケースの再利用

なぜ難しいか? テストケースしか残っていない

必要十分なテストケースかどうかの判断が難しい そのまま流用していいのか、仕様変更にあわせて内容を変更し

ないといけないのかの判断が難しい

テストの意図を理解することが重要 テスト分析・設計方法論を活用すると効果的 ある程度コストのかかる作業だが、メリットは大きい

既存資産に対する適切な理解 以降の開発におけるテスト分析・設計の容易化

2014/06/21WACATE 2014 Summer

50

Page 51: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+6.2. テスト分析・設計方法論

様々な方法論が存在 日本において有名な方法論

VSTeP HAYST 法 ゆもつよメソッド… etc

ゆもつよメソッドのテスト分析パート

2014/06/21WACATE 2014 Summer

51

Page 52: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+6.3. 既存テストケースの整理

テストケースからテスト分析マトリクスをリバース

2014/06/21WACATE 2014 Summer

52

Page 53: テスト分析入門 -「ゆもつよメソッド」を例に- #wacate

+Let’s Reverse!

2014/06/21 WACATE 2014 Summer