Upgrade to Pro — share decks privately, control downloads, hide ads and more …

上手な探索的テストとその上達方法について

matsu802
March 13, 2024

 上手な探索的テストとその上達方法について

matsu802

March 13, 2024
Tweet

Other Decks in Programming

Transcript

  1. © LayerX Inc. 3 経歴 • 株式会社ヒューマンクレスト (2013年 〜 2015/12)

    • 株式会社メルカリ(2016/01 〜 2023/08) • 株式会社LayerX(2023/11 〜) 画像を入れてね 自己紹介 matsu
  2. © LayerX Inc. 5 • ET = Explorer Testing •

    リリース前に開発メンバーが集まって探索的テストを行う • テスト対象はリリースされる機能または変更 • チームにもよるが30分〜1時間程度の限られた時間 • 2週間に1回程度のペース LayerXのET会 導入
  3. © LayerX Inc. 7 • そもそも探索的テストってどういうもの? → 探索的テストがどういうものかわかるけど、人に教えるとなるとうーん、、 課題に対する最初の所感 導入

    • なんとなく探索的テストをやっているが、やり方があっているのかわからない → とりあえずチャーターとかツアーを使ったら上手くできるんじゃないかな? • もっとクリティカルなバグを見つけたいが、今のやり方だと難しいのではないか → テスターに依存するテスト手法なので、上手くなるのはセンスとか経験が必要だよなぁ
  4. © LayerX Inc. 10 • 個々のテスターの個人的な自由と責任を強調し、テスト関連の学習、テストデザイン、テスト実行、および テスト結果の解釈を相互にサポートする活動として捉え、プロジェクト全体を通じて作業の品質を継続 的に最適化することを重視するソフトウェアテストのスタイル。 • A

    style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of his/her work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project. by Cem Kaner 探索的テストという言葉の意味
  5. © LayerX Inc. 11 • システムについて学ぶために同時にテストを設計および実行し、前回の実験からの洞察を次の実験に活 かします。 • Simultaneously designing

    and executing tests to learn about the system, using your insights from the last experiment to inform the next. by Elisabeth Hendrickson 探索的テストという言葉の意味 • 探索的テストでは、テスターはアプリケーションと自由に対話し、アプリケーションが提供する情報を活 用して反応し、進路を変更し、一般的には制約なしにアプリケーションの機能を探索することができま す。 • In exploratory testing, testers may interact with the application in whatever way they want and use the information the application provides to react, change course, and generally explore the application’s functionality without restraint. by James A. Whittaker
  6. © LayerX Inc. 16 • 広範囲のドメイン知識を使って、より多くの仮説を立てられること ◦ 機能仕様・実装ロジック・データ設計・ガイドページ・関連機能の知識・過去発生した不具合 etc… •

    有限な時間の中でより優先度の高い仮説から検証できること ◦ 多くの仮説を立てたいからと言って全量的なテストや(当たり前だが)見当違いな仮説を検証しな いこと • 多様な視点で探索的テストにアプローチができること ◦ ガイドブックツアー・FedExツアー・知的ツアー・カウチポテトツアー etc… 上手な探索的テストとは 上手な探索的テスト
  7. © LayerX Inc. 17 • 適切な自由度を設定したチャーター ◦ 時間 x テスト対象の範囲によって適切な自由度は変わる

    ◦ チャーターには探索できる遊びが必要 ◦ 逆に自由度が高すぎると優先度の高い箇所が疎かになる可能性がある • テスト対象に効果的なツアーが設定されている ◦ テスト対象の性質によって有効なアプローチの方法は変わる ◦ 例えば徹夜ツアーは有効期限を持った機能に対して有効など 良質な仮説を立てられる探索的テストの条件 上手な探索的テスト
  8. © LayerX Inc. 20 Explore It • explore [target] •

    with [resource] • to discover [information] Scenario Based Explorations In general, a useful scenario will do one or more of the following: • Tell a user story • Describe a requirement • Demonstrate how a feature works • Demonstrate an integration scenario • Describe setup and installation • Describe cautions and things that could go wrong チャーターの種類 チャーター・ツアーの扱い方 自由度が低い 自由度が高い
  9. © LayerX Inc. 21 効率的なチャーターの使い方 チャーター・ツアーの扱い方 • セッションで区切る必要がある場合(限定的な時間しか使えない) ◦ Explore

    Itのフォーマットは短い時間で区切られた場合、自由度が低い分resorceで定義され た変数を追うだけのスクリプトテストに近い状態になってしまう場合がある。 ◦ Scenario Based Explorationsのフォーマットでは自由度が高い分、短い時間の中でも仮説 と検証を繰り返すことができる。 • セッションで区切る必要がない場合(ある程度時間を使える場合) ◦ Explore Itのフォーマットはある程度時間を確保できる場合、変数ごとに仮説・検証を繰り返し、 学習することで質の高い探索的テストを実施できる。また、テスト実施者が何をテストしているか 分かりやすく、目的が明確な分テストの漏れが少ない。 ◦ Scenario Based Explorationsのフォーマットはテスト実施者に依存する部分が大きく、また 必要以上に時間をかけてしまう場合がある。ツアーを使うなどしてアプローチを限定的な状態に したほうが良いことがある。
  10. © LayerX Inc. 23 ツアーの種類 チャーター・ツアーの扱い方 • ガイドブックツアー The Guidebook

    Tourユーザーマニュアルに基づき、主要なポイントのみを外さないように操作を進める。 • ランドマークツアー The Landmark Tour対象のソフトウェアにおけるランドマークをリスト化し、ランドマークからランドマークへの遷移をたどる。ここでい うランドマークとは、ソフトウェアの状態やイベント。たとえば「ユーザ登録が終わった時点」などを指している。 • FedExツアー The FedEx Tourソフトウェアの中を流れるデータを特定し、そのライフサイクルを最初から最後まで追う。 • 知的ツアー The Intellectual Tour入力値などについて、ソフトウェアにとって可能な限り厳しい使い方を選んで進める。 • カウチポテトツアー The Couch Potato Tour必要最低限の操作で機能を使う。画面系なら、すべてのフィールドをデフォルト値にしたまま先に進めるな ど。 • 徹夜ツアー The All-Nighter Tourファイルを開きっぱなしにするなど、中途半端な状態で放置する。 • ゴミ収集車ツアー The Garbage Collector’s Tour細部にはこだわらず、画面ごと、ダイアログごとに、明らかにおかしいことがないかをチェックする。 • マネーツアー The Money Tour営業の人間が見込み客向けに行うデモをなぞってテストする。 • スーパーモデルツアー The Supermodel Tour見た目や第一印象だけで、可否を判断する。パッと見の画面の様子や性能などの問題をターゲットにして いる。 • 強迫観念ツアー The Obsessive-Compulsive Tour同じ操作を何度も何度も繰り返す。 • 嫌な隣町ツアー The Bad-Neighborhood Tourバグは偏在する傾向があるので、すでにバグの出た箇所を狙う。 • 美術館ツアー The Museum Tourレガシーコードの残っているあたりを叩く。 • 裏通りツアー The Back Alley Tourユーザに使われそうにない機能を叩く。
  11. © LayerX Inc. 24 • 探索的テストをする際にツアーを設定して実施するのではなく、探索的テストをする中でツアーに近しい 視点を持ってテストにアプローチする。特定の視点でのテストに縛る必要はなく、様々な視点を持って探 索的テストをするためにツアーを活用する。 • 有効なアプローチ例

    ◦ ガイドブックツアー: ある程度普遍的に有効。ただし、 UIを持たない機能や管理ツールなど利用者の理解度を一定求められる 機能はあまり有効ではない。 ◦ ランドマークツアー: ある程度普遍的に有効。ただし、複数のランドマークを立てるのが難しいチャーターでは使えない。 ◦ FedExツアー: 仕様が難しいと思う機能に有効。ランドマークツアーのデータ版みたいなイメージ。 ◦ 知的ツアー: 入力値が多い機能に有効。 ◦ カウチポテトツアー: 何かを作成するような機能に有効。知的ツアーと合わせて行うことが多い。 ◦ 徹夜ツアー: 有効期限をもった機能に有効。 効率的なツアーの使い方 チャーター・ツアーの扱い方
  12. © LayerX Inc. 25 • シナリオベースのチャーター • リソースを設定 • 仮説と検証内容を記載

    • ツアーの設定はせずに概念のインプットにとどめる 画像を入れてね チャーター・ツアーの扱い方 ET会で使用したフォーマット
  13. © LayerX Inc. 32 • どのような仮説でバグを見つけたか共有する取り組み、他のみなさんがどのような視点で ET してる のか分かり、とても良いと思いました! •

    ツアーという概念を知って、テスト観点のコツ?みたいなものの解像度が上がりました!セルフQAにも 活かせそう • 思考過程わかるのめっちゃ良い • なんなくガチャガチャするだけだったので、まず明確に仮説を立てるという準備を挟むのは「学習」や 「成長(前よりアウトカムを出す)」という観点でちゃんと数を重ねるごとにスキルアップできそうだなと 思いました。 • 他の人の仮説やチャーターリソースをみると「この機能はxxxにも影響があるのか」と知ることができて よさそう。 開発メンバーの感想 実践と振り返り
  14. © LayerX Inc. 34 • 仮説・検証のループを言語化することで、個人のスキルに留まらずチームの資産として共有する • 基本的なアプローチの視点であるツアーの概念を理解する • テスト対象によって有効なアプローチの視点を考えて実施すること

    • テスト対象のドメイン知識を増やすこと。人によって持っているドメイン知識に偏りがあるのはある程度仕 方が無いことなのでより多くの人が関わることが必要。 探索的テストを上達するためのポイント まとめ