jstqb test analyst-chap3

42
テスト技術者資格制度 Advanced Level テストアナリスト 第3章 テスト技法 藤沢 耕助

Upload: kosuke-fujisawa

Post on 26-Jan-2017

692 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Jstqb test analyst-chap3

テスト技術者資格制度 Advanced Level テストアナリスト 第3章 テスト技法

藤沢 耕助

Page 2: Jstqb test analyst-chap3

アジェンダ

1. イントロダクション

2. 仕様ベースの技法

3. 欠陥ベースの技法

4. 経験ベースの技法

2

Page 3: Jstqb test analyst-chap3

イントロダクション

3

1. イントロダクション

2. 仕様ベースの技法

3. 欠陥ベースの技法

4. 経験ベースの技法

Page 4: Jstqb test analyst-chap3

イントロダクション

4

• テスト設計技法の分類

• 仕様ベース(または動作ベース、ブラックボックス)

• 欠陥ベース

• 経験ベース

• これらの技法は補完的である

• 実施するテストレベルに関係なく、どのようなテスト活動にも使用できる

• 一般的に、技法を組み合わせてテストケースを完成させる

Page 5: Jstqb test analyst-chap3

仕様ベースの技法

5

1. イントロダクション

2. 仕様ベースの技法

3. 欠陥ベースの技法

4. 経験ベースの技法

Page 6: Jstqb test analyst-chap3

仕様ベースの技法

6

1. 同値分割

2. 境界値分析

3. デシジョンテーブル

4. 原因結果グラフ

5. 状態遷移テスト

6. 組合せテスト

7. ユースケーステスト

8. ユーザストーリーテスト

9. ドメイン分析

Page 7: Jstqb test analyst-chap3

仕様ベースの技法

7

・コンポーネントまたはシステムの内部構造を参照しない

・状態遷移図、デシジョンテーブルなどのモデル ・テスト技法に従ってテスト設計時に作成 ・テスト条件は、これらのモデルから体系的に導き出す

・カバレッジ基準を満たすことの意味 ・仕様ベースドテストは通常、システム要件ドキュメントに基づく →要件からテストケースを導出する作業は多くの場合、システム動作のテストの一部となる

Page 8: Jstqb test analyst-chap3

同値分割

8

・入力、出力、内部値、および時間関連の値の処理を  効率的にテストする ・同値クラスから1つの代表値を選択する

・境界値分析と組み合わせて使用すると強力

・分割点は注意深く選択すること ・最適な分割を決定するために、基になる処理を理解することが重要

Page 9: Jstqb test analyst-chap3

同値分割

9

郵便の例 ・定型封書料金  - 25g : 80円  - 25g~50g : 90円-20g 15g 30g 70g

0g 50g25g

•数直線を書いて、同値クラスを見つける •テストデータとして-20g, 15g, 30g, 70gを入力 •エラー、80円、90円、それ以上の場合に分けてテストする

Page 10: Jstqb test analyst-chap3

境界値分析

10

・2つの値を用いる場合と3つの値を用いる場合がある ・どちらを選択するかはリスクに基づいて判断する

・数値変数、ループ、物理オブジェクト(メモリ含む)、  時間により判定される活動 ・同値分割の正確な識別に依存する

・境界のずれ、欠落を発見できる  「より大きい」「より小さい」のずれ ・非機能欠陥を発見するためにもこの技法を使用する

Page 11: Jstqb test analyst-chap3

境界値分析

11

例題:「4月1日時点で年齢が満6歳以上の人は 小学校に入学できる」という仕様の年齢に対する境界値

・仕様にある「6歳」 ・「6歳」と境界を挟んだ最も近い値である「5歳」

5 6

無効同値クラス(入学できない) 有効同値クラス(入学できる)

Page 12: Jstqb test analyst-chap3

デシジョンテーブル

12

・条件の組み合わせ間の相互作用をテストするために使用する ・デシジョンテーブルテストのゴールは、条件、関係、および制約の  すべての組み合わせを確実にテストすること

・可能な組み合わせすべてをテストしようとすると、  デシジョンテーブルが非常に大きくなることがある ・デシジョンテーブルを簡単化する ・簡単化したものを利用するかは、リスクに基づいて判断する

・テスト担当者は、すべての条件の組み合わせに対する期待結果を仕様またはテストオラクルから導出する必要がある

・境界値分析、同値分割はデシジョンテーブル技法を補完する

Page 13: Jstqb test analyst-chap3

デシジョンテーブル(駐車場料金割引の例)

13

#1 #2 #3 #4 #5 #6 #7 #8

条件

3000円以上 10000円未満 N Y N N N Y N N

10000円以上 30000円未満 N N Y N N N Y N

30000円以上 N N N Y N N N Y

シネマ利用 N N N N Y Y Y Y

期待結果

30分無料 X - - - - - - -

1時間無料 - X - - - - - -

2時間30分無料 - - X - X X X -

3時間30分無料 - - - X - - - X

Page 14: Jstqb test analyst-chap3

原因結果グラフ法

14

・機能ロジックを基に作成する ・一般的に、デシジョンテーブルを作成するための基礎として  利用する

・デシジョンテーブルと同じ状況、同じテストレベルに適用できる ・他の技法に比べ、習得するのにより多くの時間と労力を必要とする

Page 15: Jstqb test analyst-chap3

原因結果グラフ法 原因結果グラフの描き方

15

引出

ATM利用

振込

預入∧

∨手数料

夜23時~朝8時

優遇会員 ~は否定を表す

AND条件で結びつける

OR条件で結びつける

・原因と結果を結びつける

Page 16: Jstqb test analyst-chap3

状態遷移テスト

16

・状態遷移図、状態遷移表を仕様して状態を追跡する ・0スイッチ、1スイッチ、2スイッチ ・2つの連続した遷移を1スイッチ ・3つの連続した遷移を2スイッチと呼ぶ

・100%のトランザクションカバレッジは、すべての状態に遷移し、  すべての遷移を通ったことを保証する

・ループを形成する場合:ラウンドトリップカバレッジ

Page 17: Jstqb test analyst-chap3

状態遷移テスト ストップウォッチの状態遷移図

17

待機中

一時 停止中

計測中STARTボタン押下/計測開始

STOPボタン押下/ 計測停止

RESETボタン押下/ 計測時間表示リセット

Page 18: Jstqb test analyst-chap3

状態遷移テスト ストップウォッチの状態遷移表

18

・サポートされていない状態、終了しない状態、  および必要にもかかわらず存在しない遷移を見つける

STARTボタン押下 STOPボタン押下 RESETボタン押下

待機中 計測中 ー ー

計測中 ー 一時停止中 ー

一時停止中 計測中 ー 待機中

遷移後の状態

イベント

遷移前の 状態

Page 19: Jstqb test analyst-chap3

組み合わせテスト

19

・複数のパラメータを含むソフトウェアをテストする場合において、  組み合わせ数がテスト可能な数よりも多い時に適用する

・パラメータおよびそれらの値をリストする方法  (ペアワイズテスト、直交表) ・視覚的な形式(クラシフィケーションツリー)で表す方法

・値の数が非常に多い場合、組み合わせテストを適用する前に  各パラメータに同値クラスや別の抽出の仕組みを適用して  各パラメータに対する値の数を削減する

・テストを論理的に削減するということが理解されづらいことがある

Page 20: Jstqb test analyst-chap3

組み合わせテスト  クラシフィケーションツリーの例

20

定食選択

主菜 副菜

肉 おひたしサラダ魚

調理法

焼魚刺身

四角の枠で囲ったもの: クラシフィケーション

枠線のないもの: クラス

クラシフィケーションとクラスは 同値分割の関係

Page 21: Jstqb test analyst-chap3

ユースケーステスト

21

・トランザクションベース及び、シナリオベースのテストを可能にする ・通常、システムテストレベル及び受入テストレベルで適用 ・ユースケースは実際のユーザの活動を正確に反映すること

正常パス:基本フロー 想定したメインのフロー

ステップ アクション

基本フロー1 ロック解除ボタンを押す2 給湯ボタンを押す3 給湯口からお湯が出る

Page 22: Jstqb test analyst-chap3

ユースケーステスト

22

代替フロー: その他起こりうるフロー

ステップ アクション

代替フロー1 給湯ボタンを押す

2 給湯口からお湯が出ない

ステップ アクション

例外フロー

1 ロック解除ボタンを押す2 給湯ボタンを押す3 給湯口からお湯が出る4 電源コードを抜く5 ポンプが停止する

例外フロー: 通常起こりえない異常なフロー

Page 23: Jstqb test analyst-chap3

ユーザストーリーテスト

23

・ユーザストーリーは、実証可能な小さい機能ユニットを示す ・アジャイル、および類似の反復性または拡張性のある環境で使用 ・ドライバおよびスタブの作成→継続的インテグレーションモデルが有効

ユーザストーリーの例

期限切れアカウントでのログイン

・通常のログインができる ・期限切れログインはリダイレクトされる ・適切なエラーメッセージを表示する ・ユーザーが存在しない場合への対処

Page 24: Jstqb test analyst-chap3

ドメイン分析

24

・1次元のドメイン分析→同値分割と境界値分析を使用

・分割領域を定義したら、各分割領域から領域内(IN)、領域外(OUT)、  領域の境界上(ON)、および領域境界に隣接する値(OFF)を選択する ・これらの境界条件を使用して各分割領域をテストする

・あるドメインのOUTの値が別のドメインのINである場合など、  値が重複した場合はテストする必要は無い

Page 25: Jstqb test analyst-chap3

ドメイン分析

25

・多次元ドメインで適用するとき →テストケース数は変数の数が多くなるに従って指数的に増加する →多くの場合コンピュータの支援を必要とする

・多くの変数がありデシジョンテーブルで扱いづらいとき、  ドメイン分析を適用することが多い

・関係性がある複数の変数を同時にテストするのに使う

・複数の変数の境界値が関係したバグを摘出できる

・ソフトウェアを十分に理解していることが前提

Page 26: Jstqb test analyst-chap3

ドメイン分析

26

Binderのドメイン分析 ある変数の境界値を確認するため、他の変数を有効同値のIn値としている。Onポイント: 仕様で指定されている境界ポイント Offポイント: 境界を挟んでOnポイントに最も近い値

変数 タイプ #1 #2 #3 #4 #5 #6On ◯Off ◯In ◯ ◯ ◯ ◯

YOn ◯Off ◯In ◯ ◯ ◯ ◯

ZOn ◯Off ◯In ◯ ◯ ◯ ◯

期待結果 -

Page 27: Jstqb test analyst-chap3

仕様ベースの技法

27

・技法を組み合わせてテストケースを作成することがある

・適用する特定の技法を選択する場合、テストアナリストは、  技法の適用、制限・注意事項、およびテストの目標を、  カバレッジと検出すべき欠陥の観点から考慮する必要がある

・技法を組み合わせると多くの場合、最も完全なカバレッジを  達成するが、それぞれの技法を正しく適用するための  十分な時間とスキルが必要になる

Page 28: Jstqb test analyst-chap3

欠陥ベースの技法

28

1. イントロダクション

2. 仕様ベースの技法

3. 欠陥ベースの技法

4. 経験ベースの技法

Page 29: Jstqb test analyst-chap3

欠陥ベースの技法の使用

29

・テスト対象のソフトウェアから完全に独立している欠陥分類法  (つまり、分類された一覧)からテストを導出する ・分類法は、欠陥のタイプ、根本原因、故障の兆候、および欠陥に  関するその他のデータの一覧を含む

・識別したリスクおよびリスクシナリオの一覧も、テスト対象を  絞るための基礎として使用することがある

・一般的にシステムテストに適用する

・欠陥ベースの技法のカバレッジ基準は、仕様ベースの技法に比べて  体系的ではない傾向にある

Page 30: Jstqb test analyst-chap3

欠陥分類法

30

・欠陥分類法は、欠陥のタイプを分類した一覧のこと

例 ・テキスト欄 ・有効なデータが受け付けられない ・入力長が検出されない

・日付欄 ・無効な日付が拒否されない ・ユーザは誤りのあるデータを修正できない

Page 31: Jstqb test analyst-chap3

欠陥分類法

31

・欠陥分類法を作成する手順

1. ゴールを作成し、期待する度合いの詳細を定義する 2. 基準として使用する特定の分類法を選択する 3. 値と、組織内または外部での実践で発生した一般的な欠陥を定義する

・分類法の詳細度を高めるほど、開発とメンテナンスに  時間がかかるが、より高い再現性をもたらす ・適切な分類法を選択したら、テスト条件とテストケース作成に利用できる ・リスクベースの分類法は、特定のリスク領域に焦点をあてて  テストするのに役立つ

Page 32: Jstqb test analyst-chap3

経験ベースの技法

32

1. イントロダクション

2. 仕様ベースの技法

3. 欠陥ベースの技法

4. 経験ベースの技法

Page 33: Jstqb test analyst-chap3

経験ベースの技法

33

・テスト担当者のスキル、直感、および類似のアプリケーションや  技術での経験を活用する ・特定のカバレッジを達成したり、再利用可能なテスト手順を  生成するのには他の技法ほど適していない

・システムドキュメントが適切でない場合、テスト時間が厳しく制限されている場合、またはテストチームがテスト対象のシステムに精通している場合に優れた方法になる

Page 34: Jstqb test analyst-chap3

エラー推測

34

・潜在的なエラーを推測する

例 ・無効なパスワードを入力すると故障するのでは? ・さまざまな異なる値をパスワード欄に入力するように  テストを設計する

・カバレッジを評価するのは困難。テストアナリストの能力や  経験に応じて異なる ・テスト対象のコードに共通して取り込まれる欠陥の種類に  精通している、熟練のテスト担当者が使用する場合に最善となる ・他の形式のテストに比べ、再現性が劣っていることがある

Page 35: Jstqb test analyst-chap3

チェックリストベースドテスト

35

・経験を積んだテストアナリストは、メモ、チェック、  または記憶するためのアイテムを、高位レベルで汎用化した  リストや、プロダクトに対して検証を行うツール、  および基準のセットを利用する。 ・これらのチェックリストは、標準、経験、および他の考慮事項の  セットに基づいて構築する。 ・詳細な手順が省略されており、メンテナンスに手間がかからない

・高位レベルのチェックリストという特性は、テスト結果の再現性に  影響をおよぼす ・テスト担当者によって解釈が異なることもある ・実際のテストではテスト担当者の判断に依存する

Page 36: Jstqb test analyst-chap3

探索的テスト

36

・テスト担当者はプロダクトとその欠陥の学習、完了すべき  テスト作業の計画、テストの設計と実行、および結果の報告を  同時に行う

・テスト担当者は、テスト実行時にテスト目標を動的に調整し、  軽量のドキュメントのみを準備する

・探索的テストはしっかり計画されており、相互作用的で創造的

・カバレッジはまとまりがなく、再現が困難  (記録のためのツールを利用することもある)

Page 37: Jstqb test analyst-chap3

探索的テスト

37

・探索的テストのマネジメントに、  テストセッションでカバーする領域を指定したチャータと  テストで使える時間を決定するタイムボックスを使用できる

・チャータは、タスク、目的、および成果物を特定するために  作成されることがある

Page 38: Jstqb test analyst-chap3

最善の技法の適用

38

・欠陥ベースおよび経験ベースの技法は、仕様ベースの技法の  体系的な弱点により発生するテストカバレッジの差異を埋める

・1つの技法ですべての状況に対処することはできない

・テストアナリストは各技法の長所と短所を理解し、  特定の状況にとって最善の技法または複数の技法を  選択できる必要がある

Page 39: Jstqb test analyst-chap3

まとめ

39

• テスト設計技法の分類

• 仕様ベース(または動作ベース、ブラックボックス)

• 欠陥ベース

• 経験ベース

• これらの技法は補完的である

• 実施するテストレベルに関係なく、どのようなテスト活動にも使用できる

• 一般的に、技法を組み合わせてテストケースを完成させる

Page 40: Jstqb test analyst-chap3

勉強していて感じたこと

40

• 学習時間は長め(825分)に設定されているが、シラバスに記載されているのはテスト技法の概要レベル

• 別途資料や書籍をもとに学習する必要がある

• その際、シラバスと文中の表現が異なることがある。注意が必要

• 特に馴染みの薄い技法について、理解が難しかった

Page 41: Jstqb test analyst-chap3

参考文献

41

• JaSST ’11 Shikoku 秋山浩一

• http://www.jasst.jp/archives/jasst11t.html

• ソフトウェアテストの勉強室 デシジョンテーブルの解説

• http://softest.cocolog-nifty.com/blog/decision_tables.html

• ソフトウェアテストシンポジウム2010 四国 加瀬正樹

• http://jasst.jp/archives/jasst10t/pdf/s2.pdf

• 上流工程で効く,「テストの考え方」 4回 「状態遷移図」と「状態遷移表」で見えるもの 石原一宏

• http://gihyo.jp/dev/serial/01/test_up/0004

Page 42: Jstqb test analyst-chap3

参考文献

42

• クラシフィケーション・ツリー法入門 井芹 洋輝 

• http://www.slideshare.net/goyoki/ss-42412647

• ユーザ観点に基づいたテスト設計 香川大学 古川・高木研究室 Ja ︎︎SST'11 東京 テスト設計コンテスト

• http://www.jasst.jp/archives/jasst11e/pdf/A5-5-1.pdf

• テスト設計技法の紹介(3):網羅型のブラックボックス型技法

• https://appkitbox.com/knowledge/test/20130912-134

• 「アジャイルサムライ-達人開発者への道-」, 2012