Weitere ähnliche Inhalte Ähnlich wie 探索的テスト入門 (20) Kürzlich hochgeladen (11) 探索的テスト入門3. 目次
• 1.
探索的テストの概要
– 探索的テストとは
– 探索的テストの定義
– 探索的テストの歴史的経
緯
– 探索的テストの適用領域
– 探索的テストの位置づけ
についての注意点
– 探索的テストのメリット・デ
メリット
– 探索的テストの主な用途
• 2.
探索的テストの基礎
– 探索的テストの入出力
– 探索的テストの実施者に
求められるもの
– 探索的テストのスタイル
– 探索的テストの進め方
• フリースタイルの探索的テ
スト
• テストチャータを用いる探
索的テスト
• テストチャータの例
• セッションベースドテスト
– 探索的テストの自動化
• 3.探索的テストの実践
3
6. 1.1
探索的テストとは(2つのパラダイム)
6
●探索的テスト
・テスト手順のドキュメ
ント化を行わない
・事前分析情報、実施
者の能力、動かして得
られたフィードバックな
どを活用して、テストの
構築と実施を並行的に
行う
●スクリプトテスト
・テスト設計を行い、事
前にテスト手順をドキュ
メント化する
・テスト手順にしたがっ
てテストを実施する
テスト手順の管理
テスト実施
8. 1.2
探索的テストの定義(James
Bach)
• 「Exploratory
tes9ng
is
simultaneous
learning,
test
design,
and
test
execu9on.
」
(探索的テストは、学習、テスト設計、テスト実行を
並行して実施するものだ)
– James
Bach,
Exploratory
Tes9ng
Explained(v.1.3
4/16/03)
• 探索的テストの定義として引用されていることが
多い
8
9. 1.2
探索的テストの定義(Cem
Kaner)
• Exploratory
soRware
tes9ng
– is
a
style
of
soRware
tes9ng
– that
emphasizes
the
personal
freedom
and
responsibility
– of
the
individual
tester
– to
con9nually
op9mize
the
value
of
her
work
– by
trea9ng
• test-‐related
learning,
• test
design,
• test
execu9on,
and
• test
result
interpreta9on
– as
mutually
suppor9ve
ac9vi9es
– that
run
in
parallel
throughout
the
project.
(Cem
Kaner,
A
Tutorial
in
Exploratory
Tes9ng)
• こちらも探索的テストの定義として引用されることが多い
9
10. 1.2
探索的テストの定義(Cem
Kaner)
• Exploratory
soRware
tes9ng
– is
a
style
of
soRware
tes9ng
– that
emphasizes
the
personal
freedom
and
responsibility
– of
the
individual
tester
– to
con9nually
op9mize
the
value
of
her
work
– by
trea9ng
• test-‐related
learning,
• test
design,
• test
execu9on,
and
• test
result
interpreta9on
– as
mutually
suppor9ve
ac9vi9es
– that
run
in
parallel
throughout
the
project.
(Cem
Kaner,
A
Tutorial
in
Exploratory
Tes9ng)
• こちらも探索的テストの定義として引用されることが多い
10
●ソフトウェアテストのスタイル
●テスター一人一人の自由意思
と責務に基づく
●各々の価値に合わせて洗練さ
せていく
●テスト関係の学習、テスト設計、
テスト実施、テスト結果の説明を
扱う
●プロジェクトを通して並行実施さ
れる補完的な活動
11. 1.3
探索的テストの歴史的経緯
• ソフトウェア開発初期
– 探索的テストは一般的なテストアプローチ。ソフトウェア開発が始まっ
た初期から実施されてきた
• 1980年代〜
– 手順書に依存せずに分析やフィードバックを活用するアプローチとし
て、探索的テストという名前で概念を明確化する
• 1983年にCem
Kanerが命名
– それまで探索的なアプローチとアドホックテストは区別されておらず。
知的なアプローチ(=探索的テスト)とそれ以外のアプローチを区別
するため、探索的テストという考え方を確立した
• 1990年代後半〜
– 専門の文献が整備され、テスト手法の一分野として確立する
• Ex)「Exploratory
SoRware
Tes9ng:
Tips,
Tricks,
Tours,
and
Techniques
to
Guide
Test
Design」
• 「How
to
Break
SoRware:
A
Prac9cal
Guide
to
Tes9ng」
– (いずれもJames
A.
WhiFaker)
11
13. 1.5
探索的テストの位置づけについての注意点
• アドホックテスト≠探索的テスト
– 探索的テストの歴史的経緯の通り、
知的でないアドホックテストは探索的テストではない
• 課題となるのは「探索的テストの生産性をどう高
めるか?」
– 探索的テストの効果はやり方によって大きく変動する
– 暗黙的・非明示的なものも含めて、探索的テストはす
でに多くの現場で実践されている
– 多くの場面で課題となるのが、探索的テストの効果を
どう活かしていくか?/生産性をどう高めていくか?
13
14. 1.6
探索的テストのメリット・デメリット
スクリプトテストに対するメリット
• 軽快
– テスト設計・実装コストを削減
– 必要なところをピンポイントでテスト
• 柔軟性が高い
– テスト手順の変更コストを削減
– 実物に合わせながらテストを構築できる
– 人間の知能を使って次のようなものにも柔軟に対応できる
• 仕様やテスト設計の穴
• 明文化しにくい操作や動作
• 人間の能力を活用しやすい
– 暗黙知や明文化しにくいノウハウを活用できる
14
欠陥検出での
高い生産性
テストの保守コ
スト削減
検出困難な欠
陥検出の実現
15. 1.7
探索的テストのメリット・デメリット
スクリプトテストに対するデメリット
• 属人性が高い
– 人によって効果が変動する
• 能力のない人間が担当するとアドホックテストと変わらなくなる
• テスト設計の品質がわかりにくい
– 漏れ・だぶり・網羅率がわかりにくい
– テストの品質を保証しにくい
• 記録が残りにくい
– テストのエビデンスや監査証跡の記録を保証しにくい
– テストの再現性を保証しにくい
• テスト設計段階でのバグの予防効果が低い場合がある
– テスト分析・設計による問題検出効果が属人的
15
16. 1.8
探索的テストの主な用途
• 他のテスト手法の補完
– 最も多い用途
– Ex)スクリプトテストの補完
– Ex)テスト終了後の追加テスト
• テスト漏れの確認。不具合ではないが怪しい現象の調査
• 軽快さの確保
– Ex)スモークテストとしての実施
• 長大なスクリプトテストの直前に実施。手戻りを防ぐ
• テストの保守コストの削減
– Ex)反復開発でのイテレーションごとのテストとして実
施
16
17. 1.8
探索的テストの主な用途
(スクリプトテストの補完)
• 一般的に探索的テストとスクリプトテストは相互補完
の形で活用される
• テストケースの網羅度の補完
– 詳細なスクリプトテストは高コスト
• テスト設計・実装コスト・変更対応コスト・保守コスト
• テストの効果がテストのコストに見合わなくなることがある
– 保証のためのテストをスクリプトテストで構築しつつ、詳細
な欠陥検出のテストは探索的テストで補完する
• 変化への対応
– スクリプトテストは変更コストが高い
– テストの変動部分は探索的テストで担保することで変更コ
ストを削減する
17
20. 2.2
探索的テストの実施者に求められるもの
• 製品知識
– Ex)対象の構成がわかる/対象の弱点がわかる
• テスト技術
– Ex)テスト要求に応じて必要なテストのアプローチやテ
ストケースを柔軟に組み立てられる/各種テスト技術を
扱える
• バグの知識
– 欠陥のBad
Smellを感覚的に感じ取れる/欠陥の特徴
を理解している/欠陥の傾向を柔軟に学習できる
20
22. 2.4
探索的テストの進め方
• 手順
– 準備
• 計画・学習
– 必要な能力・情報を特定し確保する
– テスト目的やミッションを明確化する
• 設計
– テストチャータを確保する
– 実施
• 実施・学習・舵取り
– 報告
• テスト実施結果を報告する
• テストの十分性を評価する
22
※探索的テストは様々な進め方がある。あくまで一例
23. 2.5
探索的テストの進め方
• 手順
– 準備
• 計画・学習
– 必要な能力・情報を特定し確保する
– テスト目的やミッションを明確化する
• 設計
– テストチャータを確保する
– 実施
• 実施・学習・舵取り
– 報告
• テスト実施結果を報告する
• テストの十分性を評価する
23
フリースタイルの探索的テスト
・テストチャータを
用いる探索的テスト
・セッションベースドテスト
※探索的テストは様々な進め方がある。あくまで一例
24. 2.5.1
フリースタイルの探索的テスト
• フリースタイルの探索的テスト
– テスト実施者の責任に基づいて、自由意思により探索的
テストを実施する
– ソフトウェア開発では珍しくない。Bad
Smellや不安の調査、
デバッグなどを知的に行おうとすると、しばしばこのスタイ
ルとなる
– 実施時の基本サイクル
1. 実施
– テストを実施する
2. 学習
– テスト結果から知見を得る
3. 舵取り(Steering)
– 学習結果も加味してテストの方向性を補正する
24
反復する
25. 2.5.1
フリースタイルの探索的テスト
• フリースタイルの探索的テストの手順の例
– 仮説検証型
1. システムについて仮説(メンタルモデル)を作る
2. 仮説を反証するようなテストを設計する
3. テストを実行し結果を得る
4. 仮説に反する結果を評価する
• 仮説が証明されるか反証されるまで上記を繰り返す
– 学習型
1. 学習の対象やミッションを選ぶ
2. 対象の動きを探索し、必要な知見を学習する
(リー・コープランド,「はじめて学ぶソフトウェアのテスト技法」)
25
26. 2.5.2
テストチャータを用いる探索的テスト
• テストの目的とテストチャータ
– テストチャータを用いる探索的テストでは、準備段階で
テストの目的(or
ミッション or
テストのゴール)と、その
達成のためのテストチャータを用意する
– テストの目的
• テストの実施で達成したい目的
• Ex)「XSSの脆弱性がないことを確認する」「ユーザマニュアル
と実際の動作が合致することを確認する」
– テストチャータ
• テストの目的達成のための方針や目印
• 抽象度の高いテストケース、機能リスト、リスクリスト等
26
27. 2.5.3テストチャータの例
27
テストの目的
テストチャータ
テストの進め方
マニュアルとの合致性を確認
する
マニュアル
・マニュアルで説明される操作
に対して、探索的テストを実施
・これをマニュアルの最初から
最後まで実施
あるUIのセキュリティバグを検
出する
一般的なセキュリティリ
スクや攻撃手法、典型
的バグをまとめたリスト
・リストの各項目についてのバ
グがないか、順々に探索的テス
トを実施
作りかけのあるテストケース
で、バグが検出されないことを
確認する
テスト未実装の上位の
テストケース
・テストケースごとにバグがない
か探索的テストを実施。テスト
実装は探索的に行う
・これを上位のテストケース1つ
1つで実施
ある変更でリグレッションが発
生していないことを確認する
リグレッションのリスク
分析結果をまとめたリ
スクリスト
・リスクリストの項目ごとにバグ
がないか、順々に探索的テスト
を実施
・これを上位リスクを網羅するよ
うに実施する
28. 2.5.3
テストチャータの例(James
A.
WhiFaker)
シナリオに基づいた探索的テスト
• 探索的テストではシナリオをテストチャータとして活用する
手法がある
– James
A.
WhiFaker「Exploratory
SoRware
Tes9ng:
Tips,
Tricks,
Tours,
and
Techniques
to
Guide
Test
Design」
• シナリオに基づく探索的テストは、スクリプトテストでのシナ
リオテストと異なるもの
– スクリプトテストでのシナリオ
• 具体的なテスト手順
– 探索的テストのシナリオ
• 実施の方針や大まかな流れを示すものである。実施者の判断で手順を
派生させたり、気になった箇所を追加で深堀りしたりして良い
• 形式としては最低限達成すべき手順やテスト条件、ベースとする手順
(実施中に派生させたり補強したりする)、上位のテストケース(テスト実
装は探索的に行う)など
28
29. 2.5.3
テストチャータの例(James
A.
WhiFaker)
ランドマークツアーテスト
• ランドマークツアーテストはシナリオに基づく探索的テス
トの一つ
– James
A.
WhiFaker「Exploratory
SoRware
Tes9ng:
Tips,
Tricks,
Tours,
and
Techniques
to
Guide
Test
Design」
• テスト対象の状態やイベントをランドマークとする。ランド
マークの網羅方針や遷移の網羅方針をテストチャータと
する
29
画面A
画面B
画面C
画面D
Ex)テストの方針
探索的テストで、各ランド
マーク(例では画面)の遷移
をひと通り網羅する
30. 2.5.3
テストチャータの例(Explore
It!)
Explore
Itのチャータフォーマット
• Given/When/Thenのシナリオフォーマットのように、形式的にテ
ストシナリオを記述し、それをテストチャータとする場合がある。
ここでのチャータはセッションのタイムボックスに合わせて粒度
が調整される
• テストチャータテンプレートの例
– フォーマット(Elisabeth
Hendrickson「Explore
It!」)
• Explore
(target)
• with
(resources)
• to
discover
(informa9on)
– 上記フォーマットの()の項目に以下の内容を記述する
• Target
– 探索する対象
• Resources
– テストで使用するリソース。ツールや技術、データ等
• Informa9on
to
discover
– 見つけるべきものについての情報。観点や特定のバグ、品質特性など
30
31. 2.5.3
テストチャータの例(Explore
It!)
Explore
Itのチャータフォーマット
• テストチャータテンプレートの例
– Target:
• Target
– アップデートシステム
• Resources
– 指定のExploitを使用する
• Informa9on
to
discover
– フォーマットに違反する不正アップデートデータによるアップデート
31
33. 2.5.4
セッションベースドテスト
基礎用語
• セッション
– 1時間弱から2時間程度のタイムボックス。各セッショ
ンはミッションとテストチャータを持つ。
– セッションベースドテストでは、セッションを構成要素と
して、テストの設計・実施を行う
• テスト設計は、セッションで構成する。
• テスト設計では、テストの目的をセッションのミッション・テス
トチャータまでブレークダウンする
• テスト実施では、セッションの単位で計画や工数確保を行う
• ミッション
– セッションで達成を目指すテストの目的
33
34. 2.5.4
セッションベースドテスト(進め方の例)
• 計画・設計
– テストの目的を各セッションのミッション(=テストの目的)
にブレークダウンする。またセッションのミッションに応じた
テストチャータを作成する
• 実施
– セッション単位でテストを実施する。
– セッションが指定する時間内で、セッションの示すテスト
チャータに従って探索的テストを実施し、セッションのミッ
ション達成を目指す
• 報告
– 指定の形式に従ってセッションレポートを作成する
– また各セッションの結果から、テストの全体網羅性などを
評価する
34
36. 2.6
探索的テストの自動化
• 探索的テストの作業支援ツールの例
– 品質分析のためのツール
• 静的解析ツール、レビュー支援ツール
– 操作のツール
• キャプチャ&リプライツール、デバッガ、データジェネレータ、ファ
ジングツール
– 記録のツール
• ロギングツール
– 思考支援のためのツール
• マインドマップツール
– Cem
Kanerが挙げているもの
• Test
Explorer、BBTest
Assisntant、Atlas.9等
36
38. 3.1
探索的テストの実施例
スクリプトテストの補完
1. スクリプトテストを実施中に以下を留意事項とし
てリスト化していく
– 期待値に反していないが不具合の可能性がある現象
– テスト設計・実装の間違いや不足部分
– その他調査が要因
2. 上記リストをテストチャータとして、スクリプトテス
ト終了後に探索的テストを実施する
38
39. 3.2
探索的テストの実施例
リスクベースドテスト
• 品質リスクの分析を行う
– 例えば開発者や要求定義者などを交えたブレストで
発生が予期されるバグをリストアップする
– バグのリスクレベルを定義する
• 上記リスクリストをテストチャータとし、リスクレベ
ルの高いものにフォーカスを当てて探索的テスト
を実施する
39
40. まとめ
• 1.
探索的テストの概要
– 探索的テストとは
– 探索的テストの定義
– 探索的テストの歴史的経
緯
– 探索的テストの適用領域
– 探索的テストの位置づけ
についての注意点
– 探索的テストのメリット・デ
メリット
– 探索的テストの主な用途
• 2.
探索的テストの基礎
– 探索的テストの入出力
– 探索的テストの実施者に
求められるもの
– 探索的テストのスタイル
– 探索的テストの進め方
• フリースタイルの探索的テ
スト
• テストチャータを用いる探
索的テスト
• テストチャータの例
• セッションベースドテスト
– 探索的テストの自動化
• 3.探索的テストの実践
40