• 検索結果がありません。

自己紹介 熊川一平 ( くまがわいっぺい ) 株式会社 NTTデータ技術革新統括本部システム技術本部生産技術部プロジェクトマネジメント ソリューションセンタ課長代理 テスト 品質保証に関する技術支援 研究開発テスト自動化ツールの適用検討など社内案件の支援に従事 執筆 講演歴 ITPro( 日経 BP

N/A
N/A
Protected

Academic year: 2021

シェア "自己紹介 熊川一平 ( くまがわいっぺい ) 株式会社 NTTデータ技術革新統括本部システム技術本部生産技術部プロジェクトマネジメント ソリューションセンタ課長代理 テスト 品質保証に関する技術支援 研究開発テスト自動化ツールの適用検討など社内案件の支援に従事 執筆 講演歴 ITPro( 日経 BP"

Copied!
47
0
0

読み込み中.... (全文を見る)

全文

(1)

Session Based Test Managementによる

探索的テストの実践

(2)

熊川 一平 (くまがわ いっぺい)  株式会社NTTデータ 技術革新統括本部 システム技術本部 生産技術部 プロジェクトマネジメント・ソリューションセンタ 課長代理  テスト・品質保証に関する技術支援、研究開発 テスト自動化ツールの適用検討など社内案件の支援に従事  執筆・講演歴  ITPro(日経BP社) 実践!テスト自動化の勘所~実装・実行の自動化 http://itpro.nikkeibp.co.jp/article/COLUMN/20121023/431821/  Micro Focus テストソリューション カンファレンス テストツールを使ったプロセス改善のコツ、NTTデータが教えます http://special.nikkeibp.co.jp/ts/article/ac0g/147403/  Borlandソリューションカンファレンス テスト自動化を成功させるには? ~NTTデータの事例~ http://special.nikkeibp.co.jp/ts/article/acab/158682/  JaSST’14 Tokyo ★ベストスピーカー賞★ 「探索的テストを活用したシステム開発手法」 http://www.jasst.jp/symposium/jasst14tokyo/pdf/C4-2.pdf

 ソフトウェア品質シンポジウム2017 ★SQiP Best Report Effective Award★ 「Session Based Test Managementによる探索的テストの実践」

http://www.nttdata.com/jp/ja/insights/trend_keyword/

(3)
(4)

Exploratory testing is simultaneous learning,

test design, and test execution. (James Bach)

探索的テストは、学習、テスト設計、テスト実行を並行して実施するものである

(5)

探索的テストとは?

単体テスト 結合テスト システムテスト 受入テスト 機能テスト 非機能テスト 性能テスト 負荷テスト セキュリティテスト ユーザビリティ テスト ブラックボックス テスト ホワイトボックス テスト 境界値テスト 組合せテスト モンキーテスト ビッグバンテスト アドホックテスト 回帰テスト ユニットテスト 総合テスト スモークテスト ベータテスト 探索的テスト

○○テストという言葉は

山ほど存在する

(6)

 Ad-hoc Testing •

アドホック(ad hoc)は、「特定の目的のための」「限定目的の」などと

いった意味のラテン語の語句である。(wikipediaより)

• その場で思い付いた項目を実行するだけで、テスト計画なしに行われ るソフトウェアテストのこと。 • 経験あるテスト技術者によるアドホックテストは、計画的なテストが行 き詰っている場合に有益なテストとみなされることがある。これは、伝 統的にはエラー推測、近年では探索的テストとも呼ばれる。(ITmedia より)  Monkey Testing • プログラムのテスト方法の一つで、猿に実機を渡して無茶苦茶にイベ ントを発生させ、装置が問題なく動くかどうかを確認するストレステス ト。アドホックテストともいう。(通信用語の基礎知識より)  Exploratory Testing • テスト対象として与えられたソフトウェアにおいて起こりそうなバグを 推測して、それを検出するテストケースを設計すること。経験ベース

探索的テストと、探索的テストに似ているもの

(7)

バグを「探索」するということ

(8)

バグを「探索」するということ

https://sites.google.com/site/exploratorytestingjapan/ 猿のように何も考えず打鍵するのではない。 考えて、頭の中でテストケースを設計して テストを行うのが探索的テストだ。 ≠モンキーテスト

(9)

バグを「探索」するということ

https://sites.google.com/site/exploratorytestingjapan/ その場で思いついたことをやるだけではな い。実行した結果を「観察」して、さらに思考 を深めてテストを実行していくのが探索的テ ストだ。≠アドホックテスト

(10)

例:「探索する」ということ

_□× 乗り換え案内 出発日時: 出発地 ↓ 目的地 検索 出発日時が自由入力できる… 存在しない日付を入れてみた らどうなるだろう?

(11)

例:「探索する」ということ

_□× 乗り換え案内 出発日時: 出発地 ↓ 目的地 2017/13/32 検索 _□× 乗り換え案内 システムエラーが発生しました! java.xxxx.DateFormatException ・・・・・・・・・・・:line 28 ・・・・・・・・・・・:line 127 TOPページに戻る やった! バグ発見!! 検索ボタンを押して 数秒後・・・

(12)

例:「探索する」ということ

_□× 乗り換え案内 出発日時: 出発地 ↓ 目的地 2017/13/32 検索 _□× 乗り換え案内 システムエラーが発生しました! java.xxxx.DateFormatException ・・・・・・・・・・・:line 28 ・・・・・・・・・・・:line 127 TOPページに戻る やった! バグ発見!! 検索ボタンを押して 数秒後・・・

ここで終わるのが

アドホックテストだと思う

(13)

例:「探索する」ということ

他にシステムエラーを 起こせないか? 他のFormatException はないか? 例外のログからセキュ リティホールをつけな いか? システムエラーの後 TOPページに戻ると状態が 変わっていないか? 妙に処理時間が長い。 無駄な処理をしている? 存在しない出発地や 目的地だとどうなる?

(14)

例:「探索する」ということ

他にシステムエラーを 起こせないか? 他のFormatException はないか? 例外のログからセキュ リティホールをつけな いか? システムエラーの後 TOPページに戻ると状態が 変わっていないか? 妙に処理時間が長い。 無駄な処理をしている? 存在しない出発地や 目的地だとどうなる?

テスト実行後のふるまいを観察し

て更なるテストにつなげて

バグを「探索」する

(15)
(16)

ITサービス業界におけるSIerの役割

発注者

ハードベンダー 各社 ソフト会社パッケージ ソフトハウス各社 通信会社 完成責任 要求条件 ITノウハウの支援

システム・インテグレーター(SIer)

(全体のコーディネイト) ハードウエア ソフトウエアパッケージ ソフトウエア開発 ネットワーク ITコンサル

(17)

当社における探索的テストの利用方法

両者を組み合わせた テストプロセス 両者を上手に組み合わせることで、システ ムの不具合を抽出することを狙っている。 Verificationの役割を担う Validationの役割を担う

(18)

当社における探索的テスト適用の課題(一例)

テストケース表 テスト結果報告書 結果や状況が監査可能 な状態で残らない? 報告 報告 進捗報告資料

(19)

SIerにおけるテストプロセスの特徴

SI

自社開発 日曜プログラマ 利用者 責任 期間

他人

なことが多い

大きい

長い

ことが多い 自分/他人 大きい 長い 自分 小さい 短い 投資者

他人

なことが多い 自分 自分

SIerのテストでは、テストに可監査性・客観性が強く求められる

結果や状況が報告されないテスト≒管理されていないテスト

はSIerの業務では受け入れられがたい。

(20)

探索的テストのテスト管理を改善する

テスト管理のカテゴリ (JSTQB Foundation Levelシラバスより) 探索的テスト実施時のテスト管理 上の問題点 改善目標 テスト計画作業と見積もり  テストの内容や作業量はテス ターに依存しており、テストの 総量がわからない。  事前にリソース割り当てを計画できること。  作業量の見積もりができること。  テストの開始/終了基準が明確にできること。 テスト進捗のモニタリングとコ ントロール  総量が不明確なため、テストの進捗状況を把握することが できない。  テストの実施内容が、テス ターに依存しており不透明 になっている。  進捗状況をメトリクスで確認できること。  テストレポートが残されること。  テストの結果やレポートによって方向性をコントロール できること。 テスト組織  テスター任せになっており、明確 な役割(ロール)が存在しな い。  テストに関わる担当者の役割(ロール)が明確にで きること。 構成管理  どのバージョンのアプリケーション に対して、どの程度テストを行っ たかわからない。  テスト対象アプリケーションのバージョンごとに、テストを 行った総量が確認できること。 リスクとテスト  テストの実施順序や優先度 はテスター任せである。  テストの優先度が設定できること。  リスクの再評価が可能であること。 インシデント管理  テストに関する記録がなく、軽 微なインシデントや、改善項目 の報告が開発者の混乱を産ん  開発担当者や関係者に必要に応じて問題の特定・ 抽出・解決に向けたフィードバックができること。

(21)
(22)

このような問題に対し、当社では「Session-based Test Management(*1)」を 用いた探索的テストの管理手法を実践しています。

Session-based Test Managementでは、テストを

”セッション”と呼ばれる時

間枠(2時間未満ぐらい)で管理

します。 こうした管理単位を持つことが管理の一助になります。 例えば見積もりや進捗では、”セッション”を単位とした報告が可能となります。 (例) • セッション単位で見積もりと進捗管理を行うことができる • セッション単位でテストの指示とレポートを行うことができる

“セッション”の単位を導入してテストを管理する

記述式テスト 探索的テスト 事前に定義したテス トケースを使って管 理する。 セッションと呼ばれ る時間の枠を使って 管理する。 セッション 1 セッション 2 セッション 3

(23)

セッション単位で見積もりと進捗管理を行う

テスターが1日に実施するセッション数の上限を定義することで、

セッション数の見積も

(24)

セッションではセッションシートと呼ばれるアイテムを利用します。

テスト管理者は、セッションシートを用いてテスターへ指示を行うことができま す。また、テスターはテスト結果をセッションシートに記入することができます。

(25)

チャーター部の記入内容

事前にテスト内容を決めす ぎると、記述式テストに近づ いて行ってしまう。 厳格 曖昧 完全にテスター任せにすると 管理されたテストにはならない テスト仕様の明文化度合い

探索的テスト“らしさ”を失わず、かつ管理可能な

ちょうどいいレベルでチャーターを書くために

ツアー(*2)の概念を導入。

何をテストするか? 購入取り消し業務 どんなバグを見つけたいか? 取り消しに失敗してしまうバグ そのためにどんなアイテムを使うか? ユーザーマニュアル ツアー 利用するツアー名 ガイドブックツアー チャーター ミッション

(26)

レポート部の記入内容

レポート 豊洲 太郎 バグの探索とテスト実行(分) 40 バグの調査とレポーティング(分) 10 テストの準備やセッションシートの執筆(分) 20 80% テスト中の気付き テスト中に遭遇した 課題 2 バグの概要 ・取り消しボタン押下後のレスポンスが遅い。 ・購入取り消し画面に行く方法がわかりづらい。 ・商品データベースの更新に時間が掛かってしまう。 ・テスト環境に関する問い合わせが多く、テストが中断されがちになっている。 見つけたバグの数(個) 1.同じ商品の購入取り消しを複数回実施すると、出力される帳票の区別がつかなくなって しまい、オペレーターの業務に支障が出る可能性がある。 2.エンドユーザーが商品購入手続きを行っている最中に、オペレーターが別の商品の購入 を取り消すとエラーが発生して購入取り消しができない。 テスター名 実施時間 チャーター適合率(%) 探索以外のことに時間をとら れていないか確認するため に時間を記入する(超概算) チャーター部の狙いが遂行 されたか確認するため適合 率を記入する(超概算) 次のテストのヒントにするた めに、気付いたことは何でも 書けるようにしておく

(27)

テストの結果を分析する

機能一覧 ガ イ ド ブ ッ ク ツ ア ー マ ネ ー ツ ア ー ラ ン ド マ ー ク ツ ア ー … 登録機能 9 3 1 照会機能 5 2 4 削除機能 5 4 8 … 0 5 10 15 20 25 30 35 登録機能 照会機能 削除機能 … 探索的テストに

セッションという単位を持ち込むことで、結果の集計/分析が可能

になる。 テスト対象×ツアーのマトリクスを書き 実施したセッション数を集計することで テストの偏りを確認することが出来る。 テスト対象ごとのバグ摘出数と、完了 セッション数を対比することで、バグ発 生源の偏りを確認することができる。

(28)

テストの方向性を制御する

前述のようなテスト結果の分析や、セッションシート(レポート部)からのフィードバックを

(29)

日次で分析するために、全テスター+テスト管理者で報告会を開催する。 前頁のテストの方向性を見直す材料を引き出せるだけでなく、テスター間の情 報共有&教育を行うことができる。 テスト管理者は、上記の5つの観点を引き出せるように報告会を運営する。 また、テストの方向性を制御する以外にも、テスターがバグを探索する上での 阻害要因を特定し、排除するように活動する責務を負う。

テスター間の情報共有

P(Past) セッション中に起きたこと R(Result) セッションで達成できたこと O(Obstacles) テストを実施する上で邪魔になっていること O(Outlook) 次に実施すること、または継続して実施すること F(Feeling) テスト中に感じたこと 報告会の5つの観点(PROOF)

(30)

■ドメイン知識を育てる • 製品や機能の使い方/目的 • ユーザの目線/感じ方 • 製品や機能の一貫性 ■バグへの嗅覚を育てる • 他のテスターがどんなことを考えてテストをしているか • どんなバグが実際に見つかっているか • どんなことから怪しさを感じているか • 他のテスターがやっていないことは何か

情報共有は「テスターを育てる」

(31)

探索的テストにおける結果検証

_□× 乗り換え案内 出発日時: 出発地 ↓ 目的地 2017/3/10 豊洲 飯田橋 検索 _□× 乗り換え案内 豊洲 ↓ 有楽町線 有楽町 ↓ 山手線 東京 ↓ 中央線 飯田橋 豊洲から有楽町線で1本で行け るはず!おかしい!バグだ!

(32)

探索的テストにおける結果検証

_□× 乗り換え案内 出発日時: 出発地 ↓ 目的地 2017/3/10 飯田橋 検索 _□× 乗り換え案内 飯田橋 ↓ 徒歩 飯田橋 出発地を省略したら 目的地だけで検索された。 これはいいのか・・・?

(33)

探索的テストにおける結果検証

_□× 乗り換え案内 出発日時: 出発地 ↓ 目的地 2017/3/10 飯田橋 検索 _□× 乗り換え案内 飯田橋 ↓ 徒歩 飯田橋 出発地を省略したら 目的地だけで検索された。 これはいいのか・・・?

バグに気付くかどうか

非常に難しい

(34)

探索的テストでは仕様書からテスト項目を作らないので 期待結果が必ず仕様書にあるとは限らない。 それに、仕様書通りだからといって顧客の要求通りとは限らない。 (仕様バグがすり抜けてしまう。) 探索的テストの結果検証では「メンタルモデル」との比較を行いましょう。

※メンタルモデル(Wikipediaより)

メンタルモデルは、外界の現実を仮説的に説明するべく構築された内的な記

号または表現であり、認識と意思決定において重要な役割を果たす。メンタル

モデルが構築されると、時間とエネルギーを節約する手段として慎重に考慮さ

れた分析を置換する。

メンタルモデルとの比較

(35)

人が無意識にその対象に期待していること・振る舞いのモデル 無意識的に期待していることを裏切られた=不具合という形で利用する。 例えば…  ライオンは怖い。  野生のライオンに遭遇したら逃げるべきだ。  「×」ボタンを押したらウィンドウは閉じるはずだ。  「申請」ボタンを連続して押しても1回しか処理されないべきだ。  注文した商品の履歴は、注文履歴ページで確認できるべきだ。  シンプルなパスワード(1111,password,aaaaa)は設定できないべきだ。  エラー画面では、どんなエラーが起きたか通知すべきだ。

メンタルモデル

(36)

人によって持っているメンタルモデルは異なるので、当然結果は異なる。 そもそも仕様書に書かれていないので、それを不具合と捉えるかどうかは慎重 な判断が必要である。 但し、人のメンタルモデルは成長させることができる。

メンタルモデルの学習と成長

テストを続ける中で、観察を続け テスト対象の知識や経験を蓄積できる。 ⇒ペアテストは学習スピードを上げる

(37)

人によって持っているメンタルモデルは異なるので、当然結果は異なる。 そもそも仕様書に書かれていないので、それを不具合と捉えるかどうかは慎重 な判断が必要である。 但し、人のメンタルモデルは成長させることができる。

メンタルモデルの学習と成長

テストを続ける中で、観察を続け テスト対象の知識や経験を蓄積できる。 ⇒ペアテストは学習スピードを上げる

探索的テストでバグが見つかるか

どうかは、人に依存する。

が、人も成長させることはできる。

情報共有は人を育てる。

(38)
(39)

改善結果

テスト管理のカテゴリ (JSTQB Foundation Levelシラバスより) 改善目標 実施結果 テスト計画作業と見積も り  事前にリソース割り当てを計画できること。  作業量の見積もりができること。  テストの開始/終了基準が明確に できること。  セッションシートを使うことで、事前にリソースの割り 当てができた。  1日あたりの目標セッション数を定義することで総セッ ション数(テストの終了基準)を明確にし、作業量 の見積もりをすることが出来た。 テスト進捗のモニタリング とコントロール  進捗状況をメトリクスで確認できること。  テストレポートが残されること。  テストの結果やレポートによって方 向性をコントロールできること。  セッションシートの消化状況をメトリクスとして、進捗 状況を把握できるようになった。  セッションシートのレポート内容に次に実施すべきテス トの内容を検討し、セッションシートを追加することで、 より効率的にバグを見つけられるようテストの 方向性をコントロールすることができた。 テスト組織  テストに関わる担当者の役割 (ロール)が明確にできること。  テスト管理者とテスターを明確に分けることができた。 構成管理  テスト対象アプリケーションのバー ジョンごとに、テストを行った総量が 確認できること。  セッションシートのレポート部にテスト対象のバージョン 番号などを記載することで、セッション実施数を把握 することができた。 リスクとテスト  テストの優先度が設定できること。  リスクの再評価が可能であること。  セッションシートごとに、優先度を設定できた。  リスクの再評価に応じて、優先度の見直しができ た。 インシデント管理  開発担当者や関係者に必要に 応じて問題の特定・抽出・解決に  セッションシートに記録することで、問題のフィードバックが可能となった。また、テスト管理者が問題の一次

(40)

テスト管理者1名・テスター5名の体制で探索的テストを実施。

Session-based Test Managementを導入し、1日3セッション/人を目標値に設 定した上でテスト管理を実行。

■実際の進捗報告資料(一部抜粋)

若干の遅れが出ており、実施期間の見直しなどが指示された。

(41)

適用事例:某団体向け基幹システム更改プロジェクト

■実際の結果分析資料(一部抜粋) 機能Dにバグが集中していることから、機能Dに対して追加のセッションを計画。 また、機能Dの記述式テストの内容について再確認が指示された。 最終的に数百件のバグを抽出。 これまでの社内適用実績に比べてより効率的にバグが抽出できたことがわ

(42)

テスター/管理者の声

テスト管理者Aさん

セッションという定量的な見方

が できて、その日のノルマが見えるよう になり、実施量をキープできた。

報告する立場として

セッション数という

区切りがあったのがよかった

。上位層も セッションという内容もわかっていた。 思っていたよりもテスト管理者の負 荷が高かったが、責務がハッキリし ていてやりやすかった。 見つかったバグから、記述式テスト のテスト設計に使う観点を追加す ることが出来たのは良かった。

(43)

テスター/管理者の声

セッションシート

で指示を受け ることや、結果報告をするのが

やりやすかった

。 テスターBさん

1日にやるのは3セッションが限界

。 4セッション以降は集中力が持続しない。 バグのほかに「気になったこと」を報告する欄が 用意されているのがよかった。判断に悩む必要 がなかったし、他のテスターの考え方を知ること ができて勉強になった。 2時間やっても、まだ叩き足りない機能があった。 そういう場合はセッションの追加をお願いした。

(44)
(45)

• Session-based Test Managementの概念を利用したテスト管理手法を適 用することで、探索的テストの利点を損なうことなく、テスト管理面の改善に 寄与することがわかった。 • JSTQBのシラバスだけではなく、TPI NEXTのキーエリアとのマッピングな ど、他の基準から評価していくことも検討したい。 • テストの完了条件については、現時点では実行可能セッション数を軸とし た条件のみであり、テストの十分性や、リスクの低減度合いを評価できてい るわけではなく、課題が残っている。

まとめ

Keep

Problem

テスト管理のカテゴリ (JSTQB Foundation Levelシラバスより) 改善目標 テスト計画作業と見積も り  事前にリソース割り当てを計画できること。  作業量の見積もりができること。  テストの開始/終了基準が明

(46)

• 「どこまでテストをすれば十分か?」は永遠の課題 それでも、探索的テストの完了条件と、その合意プロセスについて、継続し てよりよい手法を検討したい。

今後に向けて

最後はみんなでモブテストをやって バグが見つからなければ終わり。とか? クオリティゲートとして責任を持つ者が 何セッションか確認をする。とか?

(47)

参照

関連したドキュメント

「自然・くらし部門」 「研究技術開発部門」 「教育・教養部門」の 3 部門に、37 機関から 54 作品

【対策 2】経営層への監視・支援強化 期待要件 4:社内外の失敗・課題からの学び 【対策 3】深層防護提案力の強化 期待要件

なお、具体的な事項などにつきましては、技術検討会において引き続き検討してまいりま

人間は科学技術を発達させ、より大きな力を獲得してきました。しかし、現代の科学技術によっても、自然の世界は人間にとって未知なことが

この標準設計基準に定めのない場合は,技術基準その他の関係法令等に

この標準設計基準に定めのない場合は,技術基準その他の関係法令等に

また、船舶検査に関するブロック会議・技術者研修会において、

 ①技術者の行動が社会的に大き    な影響を及ぼすことについて    の理解度.  ②「安全性確保」および「社会