SlideShare a Scribd company logo
1 of 42
Download to read offline
テスト技術者資格制度 Advanced Level
テストアナリスト
第3章 テスト技法
藤沢 耕助
アジェンダ
1. イントロダクション
2. 仕様ベースの技法
3. 欠陥ベースの技法
4. 経験ベースの技法
2
イントロダクション
3
1. イントロダクション
2. 仕様ベースの技法
3. 欠陥ベースの技法
4. 経験ベースの技法
イントロダクション
4
• テスト設計技法の分類
• 仕様ベース(または動作ベース、ブラックボックス)
• 欠陥ベース
• 経験ベース
• これらの技法は補完的である
• 実施するテストレベルに関係なく、どのようなテスト活動にも使用できる
• 一般的に、技法を組み合わせてテストケースを完成させる
仕様ベースの技法
5
1. イントロダクション
2. 仕様ベースの技法
3. 欠陥ベースの技法
4. 経験ベースの技法
仕様ベースの技法
6
1. 同値分割
2. 境界値分析
3. デシジョンテーブル
4. 原因結果グラフ
5. 状態遷移テスト
6. 組合せテスト
7. ユースケーステスト
8. ユーザストーリーテスト
9. ドメイン分析
仕様ベースの技法
7
・コンポーネントまたはシステムの内部構造を参照しない
・状態遷移図、デシジョンテーブルなどのモデル
・テスト技法に従ってテスト設計時に作成
・テスト条件は、これらのモデルから体系的に導き出す
・カバレッジ基準を満たすことの意味
・仕様ベースドテストは通常、システム要件ドキュメントに基づく
→要件からテストケースを導出する作業は多くの場合、システム動作の
テストの一部となる
同値分割
8
・入力、出力、内部値、および時間関連の値の処理を
 効率的にテストする
・同値クラスから1つの代表値を選択する
・境界値分析と組み合わせて使用すると強力
・分割点は注意深く選択すること
・最適な分割を決定するために、基になる処理を理解することが重要
同値分割
9
郵便の例
・定型封書料金
 - 25g : 80円
 - 25g∼50g : 90円
-20g 15g 30g 70g
0g 50g25g
•数直線を書いて、同値クラスを見つける
•テストデータとして-20g, 15g, 30g, 70gを入力
•エラー、80円、90円、それ以上の場合に分けてテストする
境界値分析
10
・2つの値を用いる場合と3つの値を用いる場合がある
・どちらを選択するかはリスクに基づいて判断する
・数値変数、ループ、物理オブジェクト(メモリ含む)、
 時間により判定される活動
・同値分割の正確な識別に依存する
・境界のずれ、欠落を発見できる
 「より大きい」「より小さい」のずれ
・非機能欠陥を発見するためにもこの技法を使用する
境界値分析
11
例題:「4月1日時点で年齢が満6歳以上の人は
小学校に入学できる」という仕様の年齢に対する境界値
・仕様にある「6歳」
・「6歳」と境界を挟んだ最も近い値である「5歳」
5 6
無効同値クラス(入学できない) 有効同値クラス(入学できる)
デシジョンテーブル
12
・条件の組み合わせ間の相互作用をテストするために使用する
・デシジョンテーブルテストのゴールは、条件、関係、および制約の
 すべての組み合わせを確実にテストすること
・可能な組み合わせすべてをテストしようとすると、
 デシジョンテーブルが非常に大きくなることがある
・デシジョンテーブルを簡単化する
・簡単化したものを利用するかは、リスクに基づいて判断する
・テスト担当者は、すべての条件の組み合わせに対する期待結果を仕
様またはテストオラクルから導出する必要がある
・境界値分析、同値分割はデシジョンテーブル技法を補完する
デシジョンテーブル(駐車場料金割引の例)
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
原因結果グラフ法
14
・機能ロジックを基に作成する
・一般的に、デシジョンテーブルを作成するための基礎として
 利用する
・デシジョンテーブルと同じ状況、同じテストレベルに適用できる
・他の技法に比べ、習得するのにより多くの時間と労力を必要とする
原因結果グラフ法 原因結果グラフの描き方
15
引出
ATM利用
振込
預入
手数料
夜23時∼朝8時
優遇会員
∼は否定を
表す
AND条件で
結びつける
OR条件で
結びつける
・原因と結果を結びつける
状態遷移テスト
16
・状態遷移図、状態遷移表を仕様して状態を追跡する
・0スイッチ、1スイッチ、2スイッチ
・2つの連続した遷移を1スイッチ
・3つの連続した遷移を2スイッチと呼ぶ
・100%のトランザクションカバレッジは、すべての状態に遷移し、
 すべての遷移を通ったことを保証する
・ループを形成する場合:ラウンドトリップカバレッジ
状態遷移テスト ストップウォッチの状態遷移図
17
待機中
一時
停止中
計測中
STARTボタン押下/計測開始
STOPボタン押下/
計測停止
RESETボタン押下/
計測時間表示リセット
状態遷移テスト ストップウォッチの状態遷移表
18
・サポートされていない状態、終了しない状態、
 および必要にもかかわらず存在しない遷移を見つける
STARTボタン押下 STOPボタン押下 RESETボタン押下
待機中 計測中 ー ー
計測中 ー 一時停止中 ー
一時停止中 計測中 ー 待機中
遷移後の状態
イベント
遷移前の
状態
組み合わせテスト
19
・複数のパラメータを含むソフトウェアをテストする場合において、
 組み合わせ数がテスト可能な数よりも多い時に適用する
・パラメータおよびそれらの値をリストする方法
 (ペアワイズテスト、直交表)
・視覚的な形式(クラシフィケーションツリー)で表す方法
・値の数が非常に多い場合、組み合わせテストを適用する前に
 各パラメータに同値クラスや別の抽出の仕組みを適用して
 各パラメータに対する値の数を削減する
・テストを論理的に削減するということが理解されづらいことがある
組み合わせテスト 
クラシフィケーションツリーの例
20
定食選択
主菜 副菜
肉 おひたしサラダ魚
調理法
焼魚刺身
四角の枠で囲ったもの:
クラシフィケーション
枠線のないもの:
クラス
クラシフィケーションとクラスは
同値分割の関係
ユースケーステスト
21
・トランザクションベース及び、シナリオベースのテストを可能にする
・通常、システムテストレベル及び受入テストレベルで適用
・ユースケースは実際のユーザの活動を正確に反映すること
正常パス:基本フロー
想定したメインのフロー
ステップ アクション
基本フロー
1 ロック解除ボタンを押す
2 給湯ボタンを押す
3 給湯口からお湯が出る
ユースケーステスト
22
代替フロー:
その他起こりうるフロー
ステップ アクション
代替フロー
1 給湯ボタンを押す
2 給湯口からお湯が出ない
ステップ アクション
例外フロー
1 ロック解除ボタンを押す
2 給湯ボタンを押す
3 給湯口からお湯が出る
4 電源コードを抜く
5 ポンプが停止する
例外フロー:
通常起こりえない異常なフロー
ユーザストーリーテスト
23
・ユーザストーリーは、実証可能な小さい機能ユニットを示す
・アジャイル、および類似の反復性または拡張性のある環境で使用
・ドライバおよびスタブの作成→継続的インテグレーションモデルが有効
ユーザストーリーの例
期限切れアカウントでのログイン
・通常のログインができる
・期限切れログインはリダイレクトされる
・適切なエラーメッセージを表示する
・ユーザーが存在しない場合への対処
ドメイン分析
24
・1次元のドメイン分析→同値分割と境界値分析を使用
・分割領域を定義したら、各分割領域から領域内(IN)、領域外(OUT)、
 領域の境界上(ON)、および領域境界に隣接する値(OFF)を選択する
・これらの境界条件を使用して各分割領域をテストする
・あるドメインのOUTの値が別のドメインのINである場合など、
 値が重複した場合はテストする必要は無い
ドメイン分析
25
・多次元ドメインで適用するとき
→テストケース数は変数の数が多くなるに従って指数的に増加する
→多くの場合コンピュータの支援を必要とする
・多くの変数がありデシジョンテーブルで扱いづらいとき、
 ドメイン分析を適用することが多い
・関係性がある複数の変数を同時にテストするのに使う
・複数の変数の境界値が関係したバグを摘出できる
・ソフトウェアを十分に理解していることが前提
ドメイン分析
26
Binderのドメイン分析
ある変数の境界値を確認するため、他の変数を有効同値のIn値としている。
Onポイント: 仕様で指定されている境界ポイント
Offポイント: 境界を挟んでOnポイントに最も近い値
変数 タイプ #1 #2 #3 #4 #5 #6
On ⃝
Off ⃝
In ⃝ ⃝ ⃝ ⃝
Y
On ⃝
Off ⃝
In ⃝ ⃝ ⃝ ⃝
Z
On ⃝
Off ⃝
In ⃝ ⃝ ⃝ ⃝
期待結果 -
仕様ベースの技法
27
・技法を組み合わせてテストケースを作成することがある
・適用する特定の技法を選択する場合、テストアナリストは、
 技法の適用、制限・注意事項、およびテストの目標を、
 カバレッジと検出すべき欠陥の観点から考慮する必要がある
・技法を組み合わせると多くの場合、最も完全なカバレッジを
 達成するが、それぞれの技法を正しく適用するための
 十分な時間とスキルが必要になる
欠陥ベースの技法
28
1. イントロダクション
2. 仕様ベースの技法
3. 欠陥ベースの技法
4. 経験ベースの技法
欠陥ベースの技法の使用
29
・テスト対象のソフトウェアから完全に独立している欠陥分類法
 (つまり、分類された一覧)からテストを導出する
・分類法は、欠陥のタイプ、根本原因、故障の兆候、および欠陥に
 関するその他のデータの一覧を含む
・識別したリスクおよびリスクシナリオの一覧も、テスト対象を
 絞るための基礎として使用することがある
・一般的にシステムテストに適用する
・欠陥ベースの技法のカバレッジ基準は、仕様ベースの技法に比べて
 体系的ではない傾向にある
欠陥分類法
30
・欠陥分類法は、欠陥のタイプを分類した一覧のこと
例
・テキスト欄
・有効なデータが受け付けられない
・入力長が検出されない
・日付欄
・無効な日付が拒否されない
・ユーザは誤りのあるデータを修正できない
欠陥分類法
31
・欠陥分類法を作成する手順
1. ゴールを作成し、期待する度合いの詳細を定義する
2. 基準として使用する特定の分類法を選択する
3. 値と、組織内または外部での実践で発生した一般的な欠陥を定義
する
・分類法の詳細度を高めるほど、開発とメンテナンスに
 時間がかかるが、より高い再現性をもたらす
・適切な分類法を選択したら、テスト条件とテストケース作成に利用
できる
・リスクベースの分類法は、特定のリスク領域に焦点をあてて
 テストするのに役立つ
経験ベースの技法
32
1. イントロダクション
2. 仕様ベースの技法
3. 欠陥ベースの技法
4. 経験ベースの技法
経験ベースの技法
33
・テスト担当者のスキル、直感、および類似のアプリケーションや
 技術での経験を活用する
・特定のカバレッジを達成したり、再利用可能なテスト手順を
 生成するのには他の技法ほど適していない
・システムドキュメントが適切でない場合、テスト時間が厳しく制限
されている場合、またはテストチームがテスト対象のシステムに精通
している場合に優れた方法になる
エラー推測
34
・潜在的なエラーを推測する
例
・無効なパスワードを入力すると故障するのでは?
・さまざまな異なる値をパスワード欄に入力するように
 テストを設計する
・カバレッジを評価するのは困難。テストアナリストの能力や
 経験に応じて異なる
・テスト対象のコードに共通して取り込まれる欠陥の種類に
 精通している、熟練のテスト担当者が使用する場合に最善となる
・他の形式のテストに比べ、再現性が劣っていることがある
チェックリストベースドテスト
35
・経験を積んだテストアナリストは、メモ、チェック、
 または記憶するためのアイテムを、高位レベルで汎用化した
 リストや、プロダクトに対して検証を行うツール、
 および基準のセットを利用する。
・これらのチェックリストは、標準、経験、および他の考慮事項の
 セットに基づいて構築する。
・詳細な手順が省略されており、メンテナンスに手間がかからない
・高位レベルのチェックリストという特性は、テスト結果の再現性に
 影響をおよぼす
・テスト担当者によって解釈が異なることもある
・実際のテストではテスト担当者の判断に依存する
探索的テスト
36
・テスト担当者はプロダクトとその欠陥の学習、完了すべき
 テスト作業の計画、テストの設計と実行、および結果の報告を
 同時に行う
・テスト担当者は、テスト実行時にテスト目標を動的に調整し、
 軽量のドキュメントのみを準備する
・探索的テストはしっかり計画されており、相互作用的で創造的
・カバレッジはまとまりがなく、再現が困難
 (記録のためのツールを利用することもある)
探索的テスト
37
・探索的テストのマネジメントに、
 テストセッションでカバーする領域を指定したチャータと
 テストで使える時間を決定するタイムボックスを使用できる
・チャータは、タスク、目的、および成果物を特定するために
 作成されることがある
最善の技法の適用
38
・欠陥ベースおよび経験ベースの技法は、仕様ベースの技法の
 体系的な弱点により発生するテストカバレッジの差異を埋める
・1つの技法ですべての状況に対処することはできない
・テストアナリストは各技法の長所と短所を理解し、
 特定の状況にとって最善の技法または複数の技法を
 選択できる必要がある
まとめ
39
• テスト設計技法の分類
• 仕様ベース(または動作ベース、ブラックボックス)
• 欠陥ベース
• 経験ベース
• これらの技法は補完的である
• 実施するテストレベルに関係なく、どのようなテスト活動にも使用できる
• 一般的に、技法を組み合わせてテストケースを完成させる
勉強していて感じたこと
40
• 学習時間は長め(825分)に設定されているが、シラバ
スに記載されているのはテスト技法の概要レベル
• 別途資料や書籍をもとに学習する必要がある
• その際、シラバスと文中の表現が異なることがある。
注意が必要
• 特に馴染みの薄い技法について、理解が難しかった
参考文献
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
参考文献
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

More Related Content

More from Kosuke Fujisawa

SQuBOK読破会_まとめスライド
SQuBOK読破会_まとめスライドSQuBOK読破会_まとめスライド
SQuBOK読破会_まとめスライドKosuke Fujisawa
 
勝手にHayst法勉強会 リリカルver
勝手にHayst法勉強会 リリカルver勝手にHayst法勉強会 リリカルver
勝手にHayst法勉強会 リリカルverKosuke Fujisawa
 
テスト分析・設計について、釈然としないところ
テスト分析・設計について、釈然としないところテスト分析・設計について、釈然としないところ
テスト分析・設計について、釈然としないところKosuke Fujisawa
 
ソフトウェアテストことはじめ2016年ver
ソフトウェアテストことはじめ2016年verソフトウェアテストことはじめ2016年ver
ソフトウェアテストことはじめ2016年verKosuke Fujisawa
 
Qaアーキテクチャの話
Qaアーキテクチャの話Qaアーキテクチャの話
Qaアーキテクチャの話Kosuke Fujisawa
 
提案:Qaも実装に踏み込んでみよう
提案:Qaも実装に踏み込んでみよう提案:Qaも実装に踏み込んでみよう
提案:Qaも実装に踏み込んでみようKosuke Fujisawa
 
私の考えるテスト分析 Lt
私の考えるテスト分析 Lt私の考えるテスト分析 Lt
私の考えるテスト分析 LtKosuke Fujisawa
 
テストマネージャ試験対策勉強会
テストマネージャ試験対策勉強会テストマネージャ試験対策勉強会
テストマネージャ試験対策勉強会Kosuke Fujisawa
 
テスト酒場のご紹介
テスト酒場のご紹介テスト酒場のご紹介
テスト酒場のご紹介Kosuke Fujisawa
 
第6回マインドマップ勉強会 テスト報告
第6回マインドマップ勉強会 テスト報告第6回マインドマップ勉強会 テスト報告
第6回マインドマップ勉強会 テスト報告Kosuke Fujisawa
 
第5回マインドマップ勉強会 テスト実行
第5回マインドマップ勉強会 テスト実行第5回マインドマップ勉強会 テスト実行
第5回マインドマップ勉強会 テスト実行Kosuke Fujisawa
 
Wacate2015冬_参加報告
Wacate2015冬_参加報告Wacate2015冬_参加報告
Wacate2015冬_参加報告Kosuke Fujisawa
 
テストプロセスについて
テストプロセスについてテストプロセスについて
テストプロセスについてKosuke Fujisawa
 
Jstqb test analyst-chap7
Jstqb test analyst-chap7Jstqb test analyst-chap7
Jstqb test analyst-chap7Kosuke Fujisawa
 
Jstqb test analyst-chap6
Jstqb test analyst-chap6Jstqb test analyst-chap6
Jstqb test analyst-chap6Kosuke Fujisawa
 
Jstqb test analyst-chap5
Jstqb test analyst-chap5Jstqb test analyst-chap5
Jstqb test analyst-chap5Kosuke Fujisawa
 
Jstqb test analyst-chap4
Jstqb test analyst-chap4Jstqb test analyst-chap4
Jstqb test analyst-chap4Kosuke Fujisawa
 
Jstqb test analyst-chap2
Jstqb test analyst-chap2Jstqb test analyst-chap2
Jstqb test analyst-chap2Kosuke Fujisawa
 
「マインドマップから始めるソフトウェアテスト」まとめ
「マインドマップから始めるソフトウェアテスト」まとめ「マインドマップから始めるソフトウェアテスト」まとめ
「マインドマップから始めるソフトウェアテスト」まとめKosuke Fujisawa
 
第1回盛岡ソフトウェアテスト勉強会Ed
第1回盛岡ソフトウェアテスト勉強会Ed第1回盛岡ソフトウェアテスト勉強会Ed
第1回盛岡ソフトウェアテスト勉強会EdKosuke Fujisawa
 

More from Kosuke Fujisawa (20)

SQuBOK読破会_まとめスライド
SQuBOK読破会_まとめスライドSQuBOK読破会_まとめスライド
SQuBOK読破会_まとめスライド
 
勝手にHayst法勉強会 リリカルver
勝手にHayst法勉強会 リリカルver勝手にHayst法勉強会 リリカルver
勝手にHayst法勉強会 リリカルver
 
テスト分析・設計について、釈然としないところ
テスト分析・設計について、釈然としないところテスト分析・設計について、釈然としないところ
テスト分析・設計について、釈然としないところ
 
ソフトウェアテストことはじめ2016年ver
ソフトウェアテストことはじめ2016年verソフトウェアテストことはじめ2016年ver
ソフトウェアテストことはじめ2016年ver
 
Qaアーキテクチャの話
Qaアーキテクチャの話Qaアーキテクチャの話
Qaアーキテクチャの話
 
提案:Qaも実装に踏み込んでみよう
提案:Qaも実装に踏み込んでみよう提案:Qaも実装に踏み込んでみよう
提案:Qaも実装に踏み込んでみよう
 
私の考えるテスト分析 Lt
私の考えるテスト分析 Lt私の考えるテスト分析 Lt
私の考えるテスト分析 Lt
 
テストマネージャ試験対策勉強会
テストマネージャ試験対策勉強会テストマネージャ試験対策勉強会
テストマネージャ試験対策勉強会
 
テスト酒場のご紹介
テスト酒場のご紹介テスト酒場のご紹介
テスト酒場のご紹介
 
第6回マインドマップ勉強会 テスト報告
第6回マインドマップ勉強会 テスト報告第6回マインドマップ勉強会 テスト報告
第6回マインドマップ勉強会 テスト報告
 
第5回マインドマップ勉強会 テスト実行
第5回マインドマップ勉強会 テスト実行第5回マインドマップ勉強会 テスト実行
第5回マインドマップ勉強会 テスト実行
 
Wacate2015冬_参加報告
Wacate2015冬_参加報告Wacate2015冬_参加報告
Wacate2015冬_参加報告
 
テストプロセスについて
テストプロセスについてテストプロセスについて
テストプロセスについて
 
Jstqb test analyst-chap7
Jstqb test analyst-chap7Jstqb test analyst-chap7
Jstqb test analyst-chap7
 
Jstqb test analyst-chap6
Jstqb test analyst-chap6Jstqb test analyst-chap6
Jstqb test analyst-chap6
 
Jstqb test analyst-chap5
Jstqb test analyst-chap5Jstqb test analyst-chap5
Jstqb test analyst-chap5
 
Jstqb test analyst-chap4
Jstqb test analyst-chap4Jstqb test analyst-chap4
Jstqb test analyst-chap4
 
Jstqb test analyst-chap2
Jstqb test analyst-chap2Jstqb test analyst-chap2
Jstqb test analyst-chap2
 
「マインドマップから始めるソフトウェアテスト」まとめ
「マインドマップから始めるソフトウェアテスト」まとめ「マインドマップから始めるソフトウェアテスト」まとめ
「マインドマップから始めるソフトウェアテスト」まとめ
 
第1回盛岡ソフトウェアテスト勉強会Ed
第1回盛岡ソフトウェアテスト勉強会Ed第1回盛岡ソフトウェアテスト勉強会Ed
第1回盛岡ソフトウェアテスト勉強会Ed
 

Jstqb test analyst-chap3