Slide 1

Slide 1 text

© LayerX Inc. 上手な探索的テストとその上達方法について LayerXでの実践とその振り返り

Slide 2

Slide 2 text

目次 Agenda ● 自己紹介 ● 探索的テストの言葉の意味 ● 上手な探索的テスト ● チャーター・ツアーの扱い方 ● 実践と振り返り ● まとめ

Slide 3

Slide 3 text

© LayerX Inc. 3 経歴 ● 株式会社ヒューマンクレスト (2013年 〜 2015/12) ● 株式会社メルカリ(2016/01 〜 2023/08) ● 株式会社LayerX(2023/11 〜) 画像を入れてね 自己紹介 matsu

Slide 4

Slide 4 text

開発者A「探索的テスト上手くなりたいんだけ ど、どうしたら良いかな?」

Slide 5

Slide 5 text

© LayerX Inc. 5 ● ET = Explorer Testing ● リリース前に開発メンバーが集まって探索的テストを行う ● テスト対象はリリースされる機能または変更 ● チームにもよるが30分〜1時間程度の限られた時間 ● 2週間に1回程度のペース LayerXのET会 導入

Slide 6

Slide 6 text

© LayerX Inc. 6 ● そもそも探索的テストってどういうもの? 開発チームの探索的テストに対する課題感 導入 ● なんとなく探索的テストをやっているが、やり方があっているのかわからない ● もっとクリティカルなバグを見つけたいが、今のやり方だと難しいのではないか

Slide 7

Slide 7 text

© LayerX Inc. 7 ● そもそも探索的テストってどういうもの? → 探索的テストがどういうものかわかるけど、人に教えるとなるとうーん、、 課題に対する最初の所感 導入 ● なんとなく探索的テストをやっているが、やり方があっているのかわからない → とりあえずチャーターとかツアーを使ったら上手くできるんじゃないかな? ● もっとクリティカルなバグを見つけたいが、今のやり方だと難しいのではないか → テスターに依存するテスト手法なので、上手くなるのはセンスとか経験が必要だよなぁ

Slide 8

Slide 8 text

© LayerX Inc. 8 ● 探索的テストの言葉の意味を今一度考え直してまとめる ● ET会で探索的テストを行うためのフォーマット(やり方)を作る ● 探索的テストの上達方法を言語化する 開発チームの課題感を解決するために行ったアクション 導入

Slide 9

Slide 9 text

探索的テストとは?

Slide 10

Slide 10 text

© 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 探索的テストという言葉の意味

Slide 11

Slide 11 text

© 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

Slide 12

Slide 12 text

© LayerX Inc. 12 「アプリケーションから得た情報を基に仮説を構築し、その検証を反復する、 柔軟かつ自由度の高いソフトウェアテストの手法」 探索的テストとは 探索的テストという言葉の意味

Slide 13

Slide 13 text

探索的テストが上手な人ってどういう人だ?

Slide 14

Slide 14 text

© LayerX Inc. 14 バグを多く見つけることができる人 上手な探索的テスト

Slide 15

Slide 15 text

© LayerX Inc. 15 バグを多く見つけることができる人 上手な探索的テスト ではなく より多くの良質な仮説を立てられる人

Slide 16

Slide 16 text

© LayerX Inc. 16 ● 広範囲のドメイン知識を使って、より多くの仮説を立てられること ○ 機能仕様・実装ロジック・データ設計・ガイドページ・関連機能の知識・過去発生した不具合 etc… ● 有限な時間の中でより優先度の高い仮説から検証できること ○ 多くの仮説を立てたいからと言って全量的なテストや(当たり前だが)見当違いな仮説を検証しな いこと ● 多様な視点で探索的テストにアプローチができること ○ ガイドブックツアー・FedExツアー・知的ツアー・カウチポテトツアー etc… 上手な探索的テストとは 上手な探索的テスト

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

チャーター・ツアーの扱い方

Slide 19

Slide 19 text

© LayerX Inc. 19 ● 探索的テストをガイドするための短い声明やミッションステートメント ● テスターに明確な焦点と目標を提供し、効率的なテスト活動を促進 ● チャーターに細かな決まりはないが一般的なフォーマットがある ○ Explore It! by Elisabeth Hendrickson ○ Scenario Based Explorations by James A. Whittaker チャーターとは? チャーター・ツアーの扱い方

Slide 20

Slide 20 text

© 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 チャーターの種類 チャーター・ツアーの扱い方 自由度が低い 自由度が高い

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

© LayerX Inc. 22 ● テスト対象となるアプリケーションを観光地を巡るツアーに例えそれを扱うアプローチの方法 ● 各ツアーには特定の焦点があり、テスターはその視点を持ってアプリケーションをテストする ● チャーターはテストの目的と範囲を定義しますが、ツアーは単一のアプローチでは不足する可能性があ る多様な視点からアプリケーションを検証する手法 ツアーとは? チャーター・ツアーの扱い方

Slide 23

Slide 23 text

© 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ユーザに使われそうにない機能を叩く。

Slide 24

Slide 24 text

© LayerX Inc. 24 ● 探索的テストをする際にツアーを設定して実施するのではなく、探索的テストをする中でツアーに近しい 視点を持ってテストにアプローチする。特定の視点でのテストに縛る必要はなく、様々な視点を持って探 索的テストをするためにツアーを活用する。 ● 有効なアプローチ例 ○ ガイドブックツアー: ある程度普遍的に有効。ただし、 UIを持たない機能や管理ツールなど利用者の理解度を一定求められる 機能はあまり有効ではない。 ○ ランドマークツアー: ある程度普遍的に有効。ただし、複数のランドマークを立てるのが難しいチャーターでは使えない。 ○ FedExツアー: 仕様が難しいと思う機能に有効。ランドマークツアーのデータ版みたいなイメージ。 ○ 知的ツアー: 入力値が多い機能に有効。 ○ カウチポテトツアー: 何かを作成するような機能に有効。知的ツアーと合わせて行うことが多い。 ○ 徹夜ツアー: 有効期限をもった機能に有効。 効率的なツアーの使い方 チャーター・ツアーの扱い方

Slide 25

Slide 25 text

© LayerX Inc. 25 ● シナリオベースのチャーター ● リソースを設定 ● 仮説と検証内容を記載 ● ツアーの設定はせずに概念のインプットにとどめる 画像を入れてね チャーター・ツアーの扱い方 ET会で使用したフォーマット

Slide 26

Slide 26 text

実践と振り返り

Slide 27

Slide 27 text

© LayerX Inc. 27 1. 探索的テストの勉強会 2. チャーター、ツアーを使った探索的テストの実践 3. 探索的テストを行った時の仮説の言語化と共有 開発チームで実践したこと 実践と振り返り

Slide 28

Slide 28 text

© LayerX Inc. 28 チャーターをただ活用しても効率的な探索的テストとはいえず、環境や目的に合わせた粒度のチャーターが必 要だということ 実際に運用してわかったこと 1 実践と振り返り

Slide 29

Slide 29 text

© LayerX Inc. 29 開発チームのメンバーがチャーターを作る際に必要以上に細かく設定する傾向があったので、シナリオベース のフォーマットを採用したが、シナリオベースでも粒度が細かいチャーターを作ってしまい、探索できるほどの 遊びがないチャーターを作ってしまった。結果としてスクリプトテストと同じ設計→テスト実施のようなプロセ スになっていた。 チャーター運用の失敗 実践と振り返り チャーターを使っていれば正しく探索的テストを行えるわけではなく、あくまで環境や目的に合った自由度を 設定するための目安としてチャーターを扱う 学び

Slide 30

Slide 30 text

© LayerX Inc. 30 チャーターやツアーを活用することが探索的テストの上達であると考えていたが、実際には上達したとは言い 難く、チャーター・ツアーは個人のスキルベースを標準化するためのものだった 実際に運用してわかったこと 2 実践と振り返り

Slide 31

Slide 31 text

© LayerX Inc. 31 最初は開発チームのメンバーがチャーター作成を自分でできるようになることが探索的テスト上達のゴール だと思っていた。しかし、実際にはチャーター作成はQA側でサポートしても探索的テストの上達の妨げにはな らないことに途中から気づいた。 ゴール設定の失敗 実践と振り返り 本質的にはやり方がどうであれ質の高い仮説・検証をより多く実施できることの方が重要である 学び

Slide 32

Slide 32 text

© LayerX Inc. 32 ● どのような仮説でバグを見つけたか共有する取り組み、他のみなさんがどのような視点で ET してる のか分かり、とても良いと思いました! ● ツアーという概念を知って、テスト観点のコツ?みたいなものの解像度が上がりました!セルフQAにも 活かせそう ● 思考過程わかるのめっちゃ良い ● なんなくガチャガチャするだけだったので、まず明確に仮説を立てるという準備を挟むのは「学習」や 「成長(前よりアウトカムを出す)」という観点でちゃんと数を重ねるごとにスキルアップできそうだなと 思いました。 ● 他の人の仮説やチャーターリソースをみると「この機能はxxxにも影響があるのか」と知ることができて よさそう。 開発メンバーの感想 実践と振り返り

Slide 33

Slide 33 text

まとめ

Slide 34

Slide 34 text

© LayerX Inc. 34 ● 仮説・検証のループを言語化することで、個人のスキルに留まらずチームの資産として共有する ● 基本的なアプローチの視点であるツアーの概念を理解する ● テスト対象によって有効なアプローチの視点を考えて実施すること ● テスト対象のドメイン知識を増やすこと。人によって持っているドメイン知識に偏りがあるのはある程度仕 方が無いことなのでより多くの人が関わることが必要。 探索的テストを上達するためのポイント まとめ