Slide 1

Slide 1 text

Agileな開発でも活用できる テストを実施する前に 考えるべきテストの話 (2025年版) ブロッコリー (@nihonbuson)

Slide 2

Slide 2 text

自己紹介 ● 風間裕也(ブロッコリー) ● 株式会社10X 品質管理チーム ● 副業:B-Testing(個人事業主)として ○ 株式会社MonotaRO (テストコンサルタント) ○ グロース・アーキテクチャ&チームス株式会社(共同研究) 他数社でお手伝い ● 社外活動 ○ JaSST Review(ソフトウェアレビューシンポジウム)実行委員長 ○ WACATE(テストの合宿型ワークショップ形式勉強会)実行委員長 ○ SReEE(ソフトウェアレビューをエンジニアリングっぽく 捉える会)リーダー SNS上の アイコン Whisk で作成

Slide 3

Slide 3 text

翻訳書籍 今日のメイン

Slide 4

Slide 4 text

アジェンダ ● はじめに ● テストの目的 ● 何をテストすべきか ● 早い段階で何をテストすべきか議論する ● 受け入れ基準作成の事例 ● テストの勉強方法 ● まとめ

Slide 5

Slide 5 text

はじめに https://www.pexels.com/photo/young-game-match-kids-2923/

Slide 6

Slide 6 text

注意事項 ● 話さない内容 ○ テストコードの書き方 ○ TDDのやり方 ○ 自動テストの設計方法 ● 話す内容 ○ テストの目的とは何か ○ テストファーストで行うことの本当の良さ ○ 何をテストすれば良いのか

Slide 7

Slide 7 text

今日話す内容は… テスターや QA(Quality Assurance=品質保証)チーム はどういう動きをするか

Slide 8

Slide 8 text

今日話す内容は… テスターや QA(Quality Assurance=品質保証)チーム はどういう動きをするか ↓ 開発者はどんなことをすべきか

Slide 9

Slide 9 text

こんな経験していませんか? 開発はできたけど、 テストをどうやれば良いのか 分からないよ…。 リリースしてから トラブルがいっぱい 起きるなぁ…

Slide 10

Slide 10 text

こんな経験していませんか? 開発はできたけど、 テストをどうやれば良いのか 分からないよ…。 リリースしてから トラブルがいっぱい 起きるなぁ… 品質やテストのことを学べば 解決できるかもしれない!

Slide 11

Slide 11 text

テストの目的 https://jp.freeimages.com/photo/on-target-1504936

Slide 12

Slide 12 text

質問です テストの目的って何でしょう?

Slide 13

Slide 13 text

テストの目的とは何か? ● 欠陥の検出 ● 対象ソフトウェアの品質レベルが十分なことの確認 ● 意思決定のための情報の提示 ● 欠陥の作り込みの防止 実装前に行うこともある テストの7原則①テストは「欠陥がある」ことしか示せない ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2011.J02より

Slide 14

Slide 14 text

なぜ実装前にテスト・レビューをするのか 仕様誤りの修正コスト 要求仕様 設計 実装 テスト リリース後 1倍 5倍 10倍 20倍 200倍! 出典: Alan M. Davis. ソフトウェア開発 201の鉄則. 日経BP社

Slide 15

Slide 15 text

なぜ実装前にテスト・レビューをするのか 仕様誤りの修正コスト 要求仕様 設計 実装 テスト リリース後 1倍 5倍 10倍 20倍 200倍! 出典: Alan M. Davis. ソフトウェア開発 201の鉄則. 日経BP社 修正コストを下げるには…(1) 素早くリリースしてフィードバックをもらい、 すぐに修正できる体制にする

Slide 16

Slide 16 text

なぜ実装前にテスト・レビューをするのか 仕様誤りの修正コスト 要求仕様 設計 実装 テスト リリース後 1倍 5倍 10倍 20倍 200倍! 出典: Alan M. Davis. ソフトウェア開発 201の鉄則. 日経BP社 修正コストを下げるには…(2) 早い段階で不具合を発見する

Slide 17

Slide 17 text

何をテストすべきか https://jp.freeimages.com/photo/target-1306247

Slide 18

Slide 18 text

● パスワードは4文字以上12文字以下の 英数字のみを許容する。 ● パスワードを3分以内に4回以上 間違って入力すると、 アカウントを5分間ロックする。 https://www.pexels.com/photo/ man-in-brown-shirt-writing-on-notebook-3202028/ 引用:概説 テスト分析 例題(チャット禁止!)

Slide 19

Slide 19 text

例題(チャット禁止!) あなたが考えた ● テスト内容 ● 気になった内容 ● 起こりそうなバグ を、手元のメモ帳に 書いてください。 ※何個でもOK! ※チャットには  まだ書かないで! (4分) ● パスワードは4文字以上12文字以下の 英数字のみを許容する。 ● パスワードを3分以内に4回以上 間違って入力すると、 アカウントを5分間ロックする。 https://www.pexels.com/photo/ man-in-brown-shirt-writing-on-notebook-3202028/ 引用:概説 テスト分析

Slide 20

Slide 20 text

● テキストに記入 ○ 何個でも可 https://www.pexels.com/photo/ man-working-on-laptop-while-woman-takes-notes-3153199/ 例題

Slide 21

Slide 21 text

回答例 パスワードは4文字以上12文字以下の 英数字のみを許容する。 パスワードを3分以内に4回以上間違って入力すると、 アカウントを5分間 ロックする。 文字列長 文字種 誤入力期間 誤入力回数 ロック保持期間 状態遷移

Slide 22

Slide 22 text

回答例 パスワードは4文字以上12文字以下の 英数字のみを許容する。 パスワードを3分以内に4回以上間違って入力すると、 アカウントを5分間 ロックする。 文字列長 文字種 誤入力期間 誤入力回数 ロック保持期間 状態遷移 許容しないとどうなる? (ボタン制御orエラー画面) 5回目の入力はどうなる?

Slide 23

Slide 23 text

設計・開発時点

Slide 24

Slide 24 text

テスト時点

Slide 25

Slide 25 text

テスト時点 追加コストが発生! ● チケット起票のコスト ● 開発内容を思い出すコスト ● 修正するコスト ● もう一度テストするコスト ● 関連しそうな部分にデグレードが無いか確認するコスト ● 起票したチケットを完了にするコスト

Slide 26

Slide 26 text

回答例 パスワードは4文字以上12文字以下の 英数字のみを許容する。 パスワードを3分以内に4回以上間違って入力すると、 アカウントを5分間 ロックする。 文字列長 文字種 誤入力期間 誤入力回数 ロック保持期間 状態遷移 許容しないとどうなる? (ボタン制御orエラー画面) 5回目の入力はどうなる?

Slide 27

Slide 27 text

伝えたいこと ● 隣の人はあなたが気づかなかったことを 知っていませんでしたか? ○ お互いにテスト内容についても議論しましょう! ●

Slide 28

Slide 28 text

伝えたいこと ● 隣の人はあなたが気づかなかったことを 知っていませんでしたか? ○ お互いにテスト内容についても議論しましょう! ● この例では1文字もプログラムを書いていません! ○ 実装前にテストすることができる例です。 ○ もしもこの時点で指摘できれば 総コストは削減できるでしょう。 ■ 今回の場合、「許容する」をこの時点で 話し合うと、ほぼ不具合が発生しません。

Slide 29

Slide 29 text

テストの目的とは何か?(再掲) ● 欠陥の検出 ● 対象ソフトウェアの品質レベルが十分なことの確認 ● 意思決定のための情報の提示 ● 欠陥の作り込みの防止 実装前に行うこともある テストの7原則①テストは「欠陥がある」ことしか示せない ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2011.J02より

Slide 30

Slide 30 text

なぜ実装前にテスト・レビューをするのか(再掲) 仕様誤りの修正コスト 要求仕様 設計 実装 テスト リリース後 1倍 5倍 10倍 20倍 200倍! 出典: Alan M. Davis. ソフトウェア開発 201の鉄則. 日経BP社 修正コストを下げるには…(2) 早い段階で不具合を発見する

Slide 31

Slide 31 text

伝えたいこと ● 隣の人はあなたが気づかなかったことを 知っていませんでしたか? ○ お互いにテスト内容についても議論しましょう! ● この例では1文字もプログラムを書いていません! ○ 実装前にテストすることができる例です。 ○ もしもこの時点で指摘できれば 総コストは削減できるでしょう。 ■ 今回の場合、「許容する」をこの時点で 話し合うと、ほぼ不具合が発生しません。

Slide 32

Slide 32 text

機能を作る≠顧客へ価値を提供する https://www.ipa.go.jp/files/000045962.pdf#page=13

Slide 33

Slide 33 text

使用性の例 次の画像を見て判断してください。 化粧室に行くには、 左折、直進、右折の どの方向へ行けば良い? (画像が出たらすぐに投票してね)

Slide 34

Slide 34 text

使用性の例 化粧室に行くには、 左折、直進、右折の どの方向へ行けば良い?

Slide 35

Slide 35 text

使用性の例 面白いデザインだ! 採用! 看板作成者 どこに何があるのか 分からない! 利用者

Slide 36

Slide 36 text

使用性の例 並び変えるだけでも 分かりやすくなる https://note.openvista.jp/2011/redesigning-shinjuku-building-sign

Slide 37

Slide 37 text

「何をテストすべきか」で伝えたいこと ● 実装前に考えられるテストは存在する ○ 例えば設計レビューの場で 「こういうテストを考えています」 という話も聞けると良いな ● 「機能を作る」と「顧客へ価値を提供する」は 同義ではない ○ 機能を作ることに没頭せず、 顧客が本当に欲しい物が何かを考えましょう

Slide 38

Slide 38 text

早い段階で 何をテストすべきか 議論する

Slide 39

Slide 39 text

テスト実行するまでの過程 テスト実行より前に行う内容 (「テスト設計」「テスト準備」などの呼び方あり) テスト 実行 よくあるテストプロセス 参考:http://aster.or.jp/business/contest/doc/2020_U-30_V1.0.0.pdf#page=65

Slide 40

Slide 40 text

テストプロセス(JSTQBより) テスト 分析 テスト 設計 テスト 実装 テスト 実行 何をテスト するか を決定する テストスクリプト やテスト手順を 作成する テストスイート を実行する どのように テストするか を決定する ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2023V4.0.J02 を参考に作成

Slide 41

Slide 41 text

テストプロセス(JSTQBより) テスト 分析 テスト 設計 テスト 実装 テスト 実行 何をテスト するか を決定する テストスクリプト やテスト手順を 作成する テストスイート を実行する どのように テストするか を決定する ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2023V4.0.J02 を参考に作成

Slide 42

Slide 42 text

テスト分析・設計を実装前に行う 引用:レビュー体系化の経過報告:レビュー体系とレビューアーキテクチャー | JaSST Review’23

Slide 43

Slide 43 text

テスト分析をSprint前に行う 出典:品質保証活動をアジャイルプロセスに溶け込ませるためのテスト活動の再構築と、それを 支えるアジャイル・エンジニアリングの活用 | ソフトウェア品質シンポジウム2024

Slide 44

Slide 44 text

受け入れ基準作成の事例

Slide 45

Slide 45 text

テスト分析をSprint前に行う 出典:品質保証活動をアジャイルプロセスに溶け込ませるためのテスト活動の再構築と、それを 支えるアジャイル・エンジニアリングの活用 | ソフトウェア品質シンポジウム2024

Slide 46

Slide 46 text

今回の対象となる機能 ● とあるtoCのプロダクト ○ 会員登録をすることでサービスを利用できる ● 今回新たに「管理者による強制退会機能」を 開発することになった ● ユーザー本人による退会機能は既存機能として存在

Slide 47

Slide 47 text

リファインメント中の会話 PO 今回新たに 管理者による強制退会機能 を作ってほしい

Slide 48

Slide 48 text

リファインメント中の会話 「ユーザー本人の退会機能」の ロジックを流用する形で、 コストをかけずに実装できるのかな と想像してたんだけどどうだろ? PO 開発者 確かに開発コストは低いかも

Slide 49

Slide 49 text

リファインメント中の会話 QA ちょっと、今回の機能の背景を 知りたいです! どうして強制退会機能を作ろうと 思ったんでしたっけ?

Slide 50

Slide 50 text

リファインメント中の会話 QA ちょっと、今回の機能の背景を 知りたいです! どうして強制退会機能を作ろうと 思ったんでしたっけ? PO 他人に迷惑をかけるユーザーが いるので、そのユーザーはサービスを 利用できないようにしたいからです

Slide 51

Slide 51 text

リファインメント中の会話 QA そしたら、強制退会になったユーザーは 再度の会員登録はできないように しないと意味がないですかね? ああ、確かにそうですね。 PO

Slide 52

Slide 52 text

受け入れ基準の作成 【タイトル】 管理者による強制退会機能 【受け入れ基準】 ● 管理者がユーザーのアカウントを指定して 退会させることができること ● 退会させられたユーザーは同じメールアドレスで 会員登録できないこと

Slide 53

Slide 53 text

リファインメント中の会話 QA じゃあ、開発が終わってテストする時は 強制退会させられたユーザーが 会員登録できないかもテストしますね! 了解です! 開発者

Slide 54

Slide 54 text

受け入れ基準作成時に関わることの効果 ● 実装担当者が設計・実装を行う時に、 「リファインメントでこんな会話をしたな…」と 思いながら実装する ○ その部分でのバグの作り込みを防ぐことができる ● バグが発生しなければ色々な工数が削減できる ○ 実装内容を思い出すコスト ○ 修正をするコスト ○ もう一度テストするコスト ○ 影響範囲のある箇所をテストするコスト ○ バグチケットの操作をするコスト    など

Slide 55

Slide 55 text

システムを飛び出して要求を考える どうして強制 退会機能を作 ろうと? 受入基準 新たに管理者 による強制退 会機能を作っ て欲しい ユーザー本人 の退会機能の ロジックを流 用する PO 開発コスト は低くでき そう! 開発者 QA 迷惑をかける ユーザーはサー ビス利用できな いように 強制退会ユー ザーは会員再 登録できない ように! QA PO PO

Slide 56

Slide 56 text

顧客が本当に必要だった物に近づく一歩 画像出典:http://ntd.way-nifty.com/blog/2005/05/post_80fd.html

Slide 57

Slide 57 text

テストの勉強方法 (時間があれば) https://jp.freeimages.com/photo/reading-1420126

Slide 58

Slide 58 text

こんな質問が多い どうやってテストの勉強を すれば良いの? テストの勉強ができる オススメの書籍が知りたい!

Slide 59

Slide 59 text

「何をテストすべきか」でオススメの書籍 https://www.amazon.co.jp/dp/4297105063/ https://leanpub.com/bddbooks-discovery-jp オススメポイント ● テストケースの 作成前に 考えるべき 話が書かれている

Slide 60

Slide 60 text

「どうやってテストケースを作るのか」でオススメの書籍 https://www.amazon.co.jp/dp/4817197668 https://www.amazon.co.jp/dp/429711061X/ オススメポイント ● テスト技法の 解説が詳しい (左の書籍) ● テスト技法に 関する問題を 豊富に掲載 (右の書籍)

Slide 61

Slide 61 text

テスターと開発者の協働に関するオススメの書籍 https://leanpub.com/agiletesting-condensed-japanese-edition オススメポイント ● アジャイルテストについて 100ページ弱で 簡潔に語っている ● 全世界のQAやテスターの 知見が書かれている

Slide 62

Slide 62 text

最新のテスト情報収集ならJaSSTがオススメ! ● 日本最大級のテストのイベント ○ コロナ禍前のJaSST Tokyoは2日間で1600名が参 加 ● 年に10回、各地で開催 ● 2018年から新たにJaSST Reviewも開催 ○ 実行委員長は私 http://www.jasst.jp/

Slide 63

Slide 63 text

テストを実践して学ぶならWACATEがオススメ! ● 1泊2日のワークショップ形式の宿泊型イベント ● 2007年から、半年に1度開催 ● 次回は6/28,29開催 ● 参加費:¥30,000(35歳以下は¥27,000) ○ 宿泊費、4食の食事費込み ● 新卒1年目の開発・QAも多く参加 https://wacate.jp/

Slide 64

Slide 64 text

WACATEの会場はセミナー+ホテル

Slide 65

Slide 65 text

おわりに https://jp.freeimages.com/photo/bright-sky-1393231

Slide 66

Slide 66 text

まとめ ● テストの目的は欠陥の検出以外に 欠陥の未然防止がある ● テストには実装開始前に行う活動もある ● 早期のテスト活動でコストを削減できる

Slide 67

Slide 67 text

何かご相談があればB-Testingまで https://www.b-testing.net/

Slide 68

Slide 68 text

おしまい https://jp.freeimages.com/photo/track-finish-1442273