Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
チームのテスト力を鍛える
Search
Hiroki Iseri
September 16, 2025
Programming
3.3k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
チームのテスト力を鍛える
Hiroki Iseri
September 16, 2025
More Decks by Hiroki Iseri
See All by Hiroki Iseri
生成AI活用でQAエンジニアにどのような仕事が生まれるか/Support Required of QA Engineers for Generative AI
goyoki
1
620
開発に寄りそう自動テストの実現
goyoki
3
3.9k
自動テストを活かすためのテスト分析・テスト設計の進め方/JaSST25 Shikoku
goyoki
3
2.7k
チームのテスト力を総合的に鍛えてシフトレフトを推進する/Shifting Left with Software Testing Improvements
goyoki
6
4.8k
ソフトウェアテスト徹底指南書の紹介
goyoki
1
2.7k
プロダクト開発を成功させるためのソフトウェア品質保証のアプローチと技術/Software QA Approach for Puduct Success
goyoki
1
2.1k
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
3.6k
テスト分析入門/Test Analysis Tutorial
goyoki
12
6.7k
高品質と高スピードを両立させるソフトウェアQA/Software QA that Supports Agility and Quality
goyoki
10
6.3k
Other Decks in Programming
See All in Programming
Lessons from Spec-Driven Development
simas
PRO
0
210
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
290
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
170
Vite+ Unified Toolchain for the Web
naokihaba
0
320
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.3k
New "Type" system on PicoRuby
pocke
1
970
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
JavaDoc 再入門
nagise
1
370
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.7k
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
200
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
250
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Optimizing for Happiness
mojombo
378
71k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Designing for Timeless Needs
cassininazir
1
260
GitHub's CSS Performance
jonrohan
1033
470k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Language of Interfaces
destraynor
162
27k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
430
Transcript
チームのテスト力を鍛える 井芹 洋輝 『ソフトウェアテスト徹底指南書』に学ぶ、品質とスピードを高める実践アプローチ 2025/9/16
自己紹介 ⚫経歴 • 開発者、テストエンジニア、コンサルタント、QAエンジニアと様々な立場で 様々なプロダクトのソフトウェアテスト業務に従事 • 現在は車メーカーでQA/テストテックリードを担当 • JSTQB技術委員、テスト設計コンテストU30クラス初代審査委員長 ⚫著作・講演
• 「ソフトウェアテスト徹底指南書」(最近発売) 「テスト自動化の成功を支えるチームと仕組み」 「シフトレフトテストを支える現代的なテスト設計」 「テストの視点を活用したTDDアプローチの検討とその検証」(共著)など
ソフトウェアテスト徹底指南書 ⚫2025/6/17 発売 ⚫6月増刷決定 6月から連続で技評電子書籍月売上No.1維持 ⚫開発チームに求められるテストを総合解説 ⚫対象読者は開発チーム ⚫テストの総合力・基礎力を強化できる一冊
開発チームのテスト力を 鍛える必要性
現代的なソフトウェアプロダクトの様相 ⚫プロダクト形態がサービス化 • XaaS(SaaS、PaaS)など。 • パッケージや組込みも、継続的な改善・運用で顧客満足を支える ⚫開発ライフサイクルが長大化 • リリースして終わりではなく、サービスとしての継続運用や、継続的に改善を 行って、プロダクト価値をアップデートしていく
→同じ開発チームが継続的にプロダクトを運用・改善。 チームの総合的な開発力を鍛えてプロダクトの成功を支える
現代的なソフトウェア開発において 顧客満足を支えるチームの総合的な開発力 ⚫品質実現 ⚫開発のスピード • ユーザと開発の改善サイクルを高速化。迅速にプロダクト価値を提供 • 有限な開発リソースでより高度な品質・迅速な開発を実現 ⚫開発のレジリエンス(困難や問題に対するしなやかさ・対応力) •
ユーザの不満点・不都合を迅速に是正。よりハイリスクを許容 ⚫開発持続性 • 継続的にプロダクト価値を提供 • 持続的なプロダクト改善を実現
総合的なビジネスパフォーマンスは 開発チームの総合力に連動 ビジネス パフォーマンス エリート 高い 中間 低い 変更リードタイム 1日未満
1日~1週間 1週間~1か月 1か月~ デプロイ頻度 いつでも (1日複数回) 1日1回~ 1週間に1回 1週間に1回~ 1か月に1回 1か月に1回~ 変更失敗率 5% 20% 10% 40% 障害復旧時間 1時間未満 1日未満 1日未満 1週間から1か月 DORA Accelerate State of DevOps 2024 現代的なソフトウェア開発の成功のためには 品質実現だけではなく、開発チームのスピード、レジリエンス、 開発持続性の総合力強化が必要
テストで支えるべきチームの総合力 ⚫ソフトウェアテストでも 開発チームの品質実現/スピード/レジリエンス/開発持続性を サポートするアプローチが求められる ⚫ソフトウェアテストは、品質重視で他を犠牲にしてしまうアプローチが 見られるので留意が必要 ⚫避けるべきトレードオフのアプローチ • 独立性の高いテスト組織にテストの責務を集中 •
特定の品質ゲート(例えばシステムテスト工程)を重厚化
チームの総合力を高めるテストアプローチ ⚫開発チーム全体でテストを支え改善するアプローチが求められる テスト担当に閉じた努力では実現が難しい • チーム全体の連携 • 開発とテストの協働 • チーム全体でのテスト戦略の推進 •
チームの開発力強化 • チームの基盤インフラ整備
今回紹介するテストアプローチ ⚫テスト容易性確保×品質のシフトレフトを組み合わせる テストアプローチ ⚫ハイリスクなプロダクトで品質・開発スピード・開発のレジリエンス・開 発持続性を共立させるためにしばしば推進されている
テスト容易性
テスト容易性(試験性、テスタビリティ) ⚫テストしやすさについての内部品質特性 品質特性 内容 具体例 観測容易性 テスト対象の観測のしやすさ エラーログの充実度 制御容易性 テスト対象の操作のしやすさ
APIの充実度 セットアップ容易性 テストのセットアップのやりやすさ コンストラクタの単純さ 実行容易性 実行の容易さ テスト実行のブロック要因の少なさ 分解容易性 テスト対象の分割・置換の容易さ 接合部の充実度 網羅容易性 テストでの網羅のしやすさ デッドコードの少なさ 安定性 テスト対象の安定性・バグの少なさ 変更頻度の少なさ 環境構築容易性 テスト環境の構築のしやすさ 環境の冪等性 問題検出性 バグの特定のしやすさ 解析ログの充実度
今回のテストアプローチのためのテスト容易性の改善 ⚫疎結合アーキテクチャの推進 • アーキテクチャレベルで、バウンダリやコンポーネント間の結合性を下げ、コ ンポーネントをまたいだ影響を抑止する • 追加変更の影響範囲をコンポーネントに閉じ込める • マイクロサービスアーキテクチャやマルチコアアーキテクチャなど ⚫品質リスクの分離の推進
• 疎結合設計によって、品質リスクを特定コンポーネントに閉じ込める リスク事象を対象特定コンポーネント以外から発生しないようにする • ハイリスクプロダクト開発でのSoC(Separation of Concerns)の原則はこの 一種
テスト容易性の改善の実現 ⚫仕様化・設計・実装工程へのテストの視座の注入 • Wモデル • 受け入れテスト駆動開発 • スリーアミーゴスによるレビュー • テスト戦略に基づいたアーキテクティング、テスト中心アーキテクチャ
⚫開発とテストの並行化 • テスト駆動開発、Cover & Modify • CI/CDによるシフトレフトテスト
品質のシフトレフト
品質のシフトレフト ⚫品質エンジニアリング活動を早期から実施し、品質の確保・保証を 早期から行う。品質問題を予防・早期対策する QAへの注力 シフトレフト プロジェクトの進展 旧来の開発
今回のテストアプローチのためのシフトレフト推進手段: 開発者テストの強化 ⚫開発者のテスト力を鍛える ⚫ユニットテスト、統合テストを充実させ、開発者テストで品質を確保。 TDD、CI/CDで早期実行を行う。追加・変更をサポートさせる ⚫テストピラミッドを実現する ユニットテスト 統合テスト UIテスト 速い・早い
『Succeeding with Agile: Software Development Using Scrum』
開発者テストの習慣化 (開発の中でしっかり開発者テストが書かれるようにする)の実現 1. 習慣の定着 • ガイドラインやプロセスで納得を確保 • テスト駆動開発/Cover & Modifyの奨励
• モブプログラミング/ペアプログラミングによる習慣の伝播 • CI/CDによる自動テストの資産化 2. 習慣づけへの短期フィードバック • PRレビュー/MRレビューでの有識者によるチェック • CI/CDからのカバレッジのフィードバック • フォールトインジェクション/ミューテーションテストによる評価 3. 習慣づけへの中長期フィードバック • バグ流出を評価して改善サイクルをまわす
テスト容易性確保×シフトレフト によるチーム総合力強化
テスト容易性の改善と品質のシフトレフトによる総合力強化 低リスク 高 リスク 低 リスク ・・・ 疎結合設計で品質リスクの分離を実施 (例:接合部配備、信頼できるインターフェース手段採用、カプセ ル化/状態や副作用の局所化、インターフェースのシンプル化/
契約による設計) シフトレフトの推進 •コンポーネントレベルのQAで品質担保 •高リスクコンポーネントは、ユニットテスト・統合テスト でバグだし・品質確認
テスト容易性の改善と品質のシフトレフトによる総合力強化 ⚫コンポーネントレベルで品質確保し、システムテストを簡略化 ⚫低リスクコンポーネントのリリースやスピード重視のテストに絞る ⚫総体として品質と開発のスピード・レジリエンス・持続性の共立実現 高リスク コンポー ネント 低リスク コンポー ネント
高リスク リリースの テスト 低リスク リリースの テスト
ソフトウェアテスト徹底指南書
ソフトウェアテスト徹底指南書 ⚫現代的な開発において、開発チームが備えるべきテストの技術・アプ ローチ・知識を総合的に解説している ⚫開発チームのテスト力を総合的に強化するのがねらい • テスト活動それぞれを強化 • テストの作成・改善、実行、マネジメント、テストウェア開発 • テストと他活動の連携を強化
• テストを支えるチームインフラの強化 • テストに強いチームの構築 • 上記テストに関わる様々な活動をうまく組み合わせ、統合的にマネジメント する仕組み整備
ソフトウェアテスト徹底指南書 アウトライン ⚫ Part I ソフトウェアテストと品質マネジメント • ソフトウェアテスト/品質マネジメント ⚫ Part
II テストの戦略とプロセス • テスト戦略 • シフトレフトテスト/Wモデル • アジャイル開発、継続的デリバリ、 DevOps、SPLEを支えるテスト戦略 • テストプロセスの構築 ⚫ Part III テストの作成と実行 • テスト分析 • テストアーキテクチャ設計/VSTeP • テスト設計/テスト実装 • テスト環境構築 • テスト設計技法の活用 • テストの実行 • ユニットテスト/性能テスト/ 組み合わせテスト • リスクベースドテスト/探索的テスト /ユーザーストーリーテスト/静的テスト ⚫ Part IV 自動テストの活用 • 自動テストの開発 • 自動テストの品質作りこみ/フレーキーテスト/ 脆いテスト • 自動テストの評価/ミューテーションテスト • 自動テストの設計・実装の原則 • 自動テストコードのパターン・イディオム • 開発者テスト • テスト駆動開発 ⚫ Part V テストの計画とマネジメント • テスト計画 • テストのモニタリングとコントロール • リスクマネジメント • テストで求められる能力 • テストを担う組織の構築 ⚫ Part VI テストを支える基礎作り • CI/CDの構築 • バグ管理とバグチケット設計 • テスト容易性の確保 • テスト設計を支えるモデリング • テストを支える契約による設計 • ブランチ管理とテストの連携 • システムエンジニアリングで支えるテスト
ソフトウェアテスト徹底指南書 アウトライン ⚫ Part I ソフトウェアテストと品質マネジメント • ソフトウェアテスト/品質マネジメント ⚫ Part
II テストの戦略とプロセス • テスト戦略 • シフトレフトテスト/Wモデル • アジャイル開発、継続的デリバリ、 DevOps、SPLEを支えるテスト戦略 • テストプロセスの構築 ⚫ Part III テストの作成と実行 • テスト分析 • テストアーキテクチャ設計/VSTeP • テスト設計/テスト実装 • テスト環境構築 • テスト設計技法の活用 • テストの実行 • ユニットテスト/性能テスト/ 組み合わせテスト • リスクベースドテスト/探索的テスト /ユーザーストーリーテスト/静的テスト ⚫ Part IV 自動テストの活用 • 自動テストの開発 • 自動テストの品質作りこみ/フレーキーテスト/ 脆いテスト • 自動テストの評価/ミューテーションテスト • 自動テストの設計・実装の原則 • 自動テストコードのパターン・イディオム • 開発者テスト • テスト駆動開発 ⚫ Part V テストの計画とマネジメント • テスト計画 • テストのモニタリングとコントロール • リスクマネジメント • テストで求められる能力 • テストを担う組織の構築 ⚫ Part VI テストを支える基礎作り • CI/CDの構築 • バグ管理とバグチケット設計 • テスト容易性の確保 • テスト設計を支えるモデリング • テストを支える契約による設計 • ブランチ管理とテストの連携 • システムエンジニアリングで支えるテスト 今回解説した 内容に関連深 い箇所
ご清聴ありがとうございました ⚫ Part I ソフトウェアテストと品質マネジメント • ソフトウェアテスト/品質マネジメント ⚫ Part II
テストの戦略とプロセス • テスト戦略 • シフトレフトテスト/Wモデル • アジャイル開発、継続的デリバリ、 DevOps、SPLEを支えるテスト戦略 • テストプロセスの構築 ⚫ Part III テストの作成と実行 • テスト分析 • テストアーキテクチャ設計/VSTeP • テスト設計/テスト実装 • テスト環境構築 • テスト設計技法の活用 • テストの実行 • ユニットテスト/性能テスト/ 組み合わせテスト • リスクベースドテスト/探索的テスト /ユーザーストーリーテスト/静的テスト ⚫ Part IV 自動テストの活用 • 自動テストの開発 • 自動テストの品質作りこみ/フレーキーテスト/ 脆いテスト • 自動テストの評価/ミューテーションテスト • 自動テストの設計・実装の原則 • 自動テストコードのパターン・イディオム • 開発者テスト • テスト駆動開発 ⚫ Part V テストの計画とマネジメント • テスト計画 • テストのモニタリングとコントロール • リスクマネジメント • テストで求められる能力 • テストを担う組織の構築 ⚫ Part VI テストを支える基礎作り • CI/CDの構築 • バグ管理とバグチケット設計 • テスト容易性の確保 • テスト設計を支えるモデリング • テストを支える契約による設計 • ブランチ管理とテストの連携 • システムエンジニアリングで支えるテスト