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
高スピードと高品質を支えるソフトウェアQA(開発変革セミナー)
Search
Hiroki Iseri
November 14, 2024
Programming
0
5
高スピードと高品質を支えるソフトウェアQA(開発変革セミナー)
Hiroki Iseri
November 14, 2024
Tweet
Share
More Decks by Hiroki Iseri
See All by Hiroki Iseri
高品質と高スピードを両立させるソフトウェアQA/Software QA that Supports Agility and Quality
goyoki
11
2.1k
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
10
3.7k
高品質と高スピードを両立させるテストアプローチ/Test Approach that Improves Quality and Agility Together
goyoki
16
16k
プレイヤーとしてのチームのテスト力UP/Improving team skills for testing
goyoki
2
1.4k
テスト設計チュートリアル/Test Design Tutorial
goyoki
11
6.3k
自動テストを活躍させるための基礎作りとテスト設計の工夫
goyoki
7
4.1k
テスト自動化の成果をどう評価し、どう次につなげるか/Test Automation Next Step
goyoki
1
840
Teams and Systems for Successful Test Automation
goyoki
0
260
テスト自動化の成功を支えるチームと仕組み/TestAutomation
goyoki
12
6.8k
Other Decks in Programming
See All in Programming
14 Years of iOS: Lessons and Key Points
seyfoyun
1
770
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
110
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
250
急成長期の品質とスピードを両立するフロントエンド技術基盤
soarteclab
0
920
Fibonacci Function Gallery - Part 1
philipschwarz
PRO
0
210
競技プログラミングへのお誘い@阪大BOOSTセミナー
kotamanegi
0
350
SymfonyCon Vienna 2025: Twig, still relevant in 2025?
fabpot
3
1.2k
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
180
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
330
ゆるやかにgolangci-lintのルールを強くする / Kyoto.go #56
utgwkk
1
360
fs2-io を試してたらバグを見つけて直した話
chencmd
0
220
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
190
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
693
190k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Side Projects
sachag
452
42k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Into the Great Unknown - MozCon
thekraken
33
1.5k
Building Your Own Lightsaber
phodgson
103
6.1k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Transcript
高品質と高スピードを両立させる ソフトウェアQA 井芹 洋輝 開発変革セミナー 2024秋 基調講演 2024/11/14
自己紹介 ⚫経歴 • 開発者、テストエンジニア、コンサルタント、QAエンジニアと様々な立場で 様々なプロダクトの品質エンジニアリングに従事 • 現在は車メーカでQA/テストテックリードを担当 • JSTQB技術委員、テスト設計コンテストU30クラスファウンダー ⚫著作・講演
• 「テスト自動化の成功を支えるチームと仕組み」 「シフトレフトテストを支える現代的なテスト設計」 「Androidアプリテスト技法」「システムテスト自動化標準ガイド」 「テストの視点を活用したTDDアプローチの検討とその検証」など
この講演について ⚫エンジニアとして現場改善をする目線で、ソフトウェア開発で高品質 と高スピードを両立するソフトウェアQAアプローチを解説します
現代的なソフトウェアQAに 求められるもの
現代的なソフトウェアQAに求められるもの ⚫高品質の実現: 顧客満足を実現する妥当な品質を確保し作りこむ力 • 戦後日本のプロダクトの競争力の源泉。普遍的に重要。啓蒙や蓄積も充実 ⚫高スピードの実現: 顧客満足を実現する品質の確保・保証を迅速に行う力 • 次頁
「高スピードの実現:品質の確保・保証を迅速に行う力」 の重要性 ⚫有限な開発リソース下では、品質のためのリソースがトレードオフ • 「開発スピードの悪化」や「QAでの開発リソースの浪費」が発生すれば、品質 確保・向上に投入できる開発リソースが不足し、品質が低下 ⚫QAの迅速性がプロダクト品質に直結するビジネス形態が増加 • ユーザのフィードバックサイクル対応の迅速化 →よりすばやくプロダクト価値が高まり、顧客満足が得られる
→厳しい競争で競合に先んじてビジネス価値を提供できる • プロダクトの障害や改善点の対応の迅速化 →ユーザの不満が即時解消される。高品質の印象を持たれる
現代的なソフトウェアQAに求められるもの ⚫ソフトウェアQAには「高品質を確保・作りこむ力」と「高スピードに品 質を確保する迅速性」の両方が不可欠 • 開発スピードを犠牲にするようなQA、ただ品質を追求すればすべて良くな る考え方のQAはしばしば品質を悪化させ、かつプロダクト価値を棄損する • 有限なリソースで開発の高スピードと高品質の両立を実現できる力がQAに 求められる
高品質と高スピードの両立を 支えるソフトウェアQA
高品質と高スピードの両立を支えるソフトウェアQA ⚫高品質のみを追求するQAアプローチでは、品質ゲートの重厚化など QAに閉じた選択肢も取りえる ⚫一方で、高スピードと高品質の両立においては、チームの開発力を 総合的に強化するQAアプローチが不可欠になる
高品質と高スピードの両立を支えるソフトウェアQA 例:サービス開発の場合 変更のリードタイム 顧客要求への迅速な対応 サービス復元時間 顧客が直面する障害への 迅速な対応
高品質と高スピードの両立を支えるソフトウェアQA 例:サービス開発の場合 変更のリードタイム 顧客要求への迅速な対応 サービス復元時間 顧客が直面する障害への 迅速な対応 迅速な変更・修正 を実現する チームの開発力
変更・修正を支える 高い保守性 高い保守性を実現する チームの開発力 • 設計・実装の総合力確保(能力確保・育成・発揮) • 設計品質を支えるプロセスや開発インフラの整備 • テストやリリース・デプロイの自動化 • デプロイメントパイプラインの洗練、など 「ものづくり」だけではなく「チームづくり」が不可欠
高品質と高スピードの両立に必要なチームづくり ⚫チームづくりの手段 人、組織、文化、プロセス、インフラ、マネジメント、技術やツール ⚫上記を活用して優先してQAで支えるべきチームの能力 • 高い有効性:より妥当な品質を確保する • 高い迅速性:より迅速に品質を確保する • 高い効率性:有限な開発リソースで得られる効果を増強する
QAでチーム 有効性・迅速性・効率性を 支えるアプローチ
QAでチームの有効性・迅速性・効率性を支えるアプローチ ⚫顧客価値のフィードバックプロセスの構築 ⚫継続的QA/シフトレフト/QAの戦略立て ⚫デプロイメントパイプラインの高度化 ⚫チーム全体アプローチ ⚫QA容易性の確保
QAでチームの有効性・迅速性・効率性を支えるアプローチ ⚫顧客価値のフィードバックプロセスの構築 ⚫継続的QA/シフトレフト/QAの戦略立て ⚫デプロイメントパイプラインの高度化 ⚫チーム全体アプローチ ⚫QA容易性の確保
顧客価値のフィードバックプロセスの構築 ⚫フィードバックサイクルをまわし、チームの方向性を適正化して、QAの 有効性・効率性を高める • 正しい方向に先導する • 探索状態の中で方向を見出す ⚫フィードバックサイクルで改善を継続して迅速性を高める
顧客価値のフィードバックプロセスの構築 開発活動内 のQA活動 ユーザ・ビジネス 視座のQA工程 実運用 【既存の活動に顧客視点を導入】 スリーアミーゴ、受け入れテスト駆動開発 【専用の顧客視点のQA工程の追加によるフィードバックサイクル】 モックアップ、プロトタイピング、ユーザテスト
【運用を巻き込んだフィードバックサイクル】 DevOps、継続的デリバリ、シフトライトテスト 開発プロジェクト
フィードバックプロセスの増強 ⚫ビジネス・顧客・運用を巻き込んだフィードバックサイクルが重要 • 理想モデル:DevOps • ビジネスからのフィードバックを積極的に開発に取り込む • シフトライトテストや市場調査・ユーザ連携でフィードバックを開発する ⚫プロダクトを進化させる前進のフィードバックサイクルを差し込む •
継続的な技術蓄積、フィージビリティスタディ • 仮説検証サイクル • 要求開発
QAでチームの有効性・迅速性・効率性を支えるアプローチ ⚫顧客価値のフィードバックプロセスの構築 ⚫継続的QA/シフトレフト/QAの戦略立て ⚫デプロイメントパイプラインの高度化 ⚫チーム全体アプローチ ⚫QA容易性の確保
継続的QA ⚫プロセスの各工程でQA活動を推進する。プロダクトライフサイクルの 全工程でQA活動を継続する ⚫後工程や品質ゲートに頼るのではなく、各工程の当事者が品質を積 み上げる
継続的QA build test release devloy operate monitor plan code ここでもQA
ここでもQA ここでもQA ここでもQA ここでもQA ここでもQA ここでもQA ここでもQA
シフトレフト ⚫品質エンジニアリング活動を早期から実施し、品質の確保・保証を 早期から行う。品質問題を予防・早期対策する QAへの注力 シフトレフト プロジェクトの進展 旧来の開発
シフトレフト ⚫品質エンジニアリング活動を早期から実施し、品質の確保・保証を 早期から行う。品質問題を予防・早期対策する • 中短期の反復開発プロセス・インクリメンタル開発プロセスの採用 • 開発者テストの充実とCI/CDへの統合 • テスト駆動開発 •
自動テストの拡充とCIへの統合 • 静的テスト/レビューの充実 • シフトレフトを支えるQA容易性・テスト容易性の作りこみ • 検証可能な仕様 • ウォーキングスケルトン(作りかけでも動かせるソフトウェア)の 確保などで早期からテスト着手可能に
QAの戦略立て ⚫継続的QA、シフトレフトを戦略立てて推進する ⚫QA活動の全体構造を工夫する • チームの様々なQA活動を漏れ・冗長さのないように整理する • 相乗効果や強みを発揮しやすいように責務分担する ⚫品質リスク・課題に戦略立てて対応する • 様々な関係者を巻き込むアプローチ・プロセスを推進する
• 一貫性の求められるQAアプローチを戦略として推進する • 難易度や複雑さの高いリスク・課題への対策を推進する
QAの戦略立て 課題の種類の例 戦略立てのアプローチ 欠陥の検出 検出したい欠陥タイプごとに検出すべきQA活動を割り当て プロダクトリスクの確認 プロダクトリスクに対し、QA活動がどう連携するか立案 品質課題の対応 品質課題に対して、QA活動でどう対応するか立案 課題の例
課題対応戦略 グローバル展開する組込み製 品の表示文言の品質確保 文言の正確性確認、翻訳品質確認:データ静的テスト、 専門部門のテクニカルレビュー 文言描画の確認: アプリケーション描画:エミュレータテストで全網羅 実機動作:自動キャプチャーテストで代表パターン確認 現地依存の本番環境確認: ローカライゼーションテスト 品質課題対応の例
QAでチームの有効性・迅速性・効率性を支えるアプローチ ⚫顧客価値のフィードバックプロセスの構築 ⚫継続的QA/シフトレフト/QAの戦略立て ⚫デプロイメントパイプラインの高度化 ⚫チーム全体アプローチ ⚫QA容易性の確保
デプロイメントパイプラインの拡充・高度化 ⚫CI/CDデプロイメントパイプラインは開発リードタイム短縮の基盤・要
デプロイメントパイプラインの拡充・高度化 ⚫デプロイメントパイプラインの拡充 • 多くの開発活動をCI/CDデプロイメントパイプラインに組み込む • 組み込めるように自動化を推進する • 環境を仮想化する • 人の活動もデプロイメントパイプラインを補強するようにプロセス設計する
• 例:PR/MRレビュー ⚫デプロイメントパイプラインの高度化 • より高度なパイプライン処理を実装する • 例:予測的テスト選択、Flaky Testの検出 • 高速化・最適化を進める • 例:並列化、コンテナオーケストレーション
QAでチームの有効性・迅速性・効率性を支えるアプローチ ⚫顧客価値のフィードバックプロセスの構築 ⚫継続的QA/シフトレフト/QAの戦略立て ⚫デプロイメントパイプラインの高度化 ⚫チーム全体アプローチ ⚫QA容易性の確保
チーム全体アプローチ ⚫チーム全体で品質エンジニアリング活動を推進する。チームメンバー 全員がプロダクト品質について責任を持つ • 少数精鋭指向 • 密なコミュニケーションをとる。全員参加のイベントを確保する • 例:スクラム •
心理的安全性を確保しオープンなコミュニケーションを実現する • チーム内の情報や意思決定の透明性を確保する • 明確なビジョン、目的、目標を共有し、チームの方向性を合わせる ⚫例えばQAの迅速性の確保には、QA容易性の確保といった、 QA担当外の協力が不可欠。 それを支えるのがチーム全体アプローチ
チームの総合力を意識した能力の確保・育成施策 ⚫高度な人材の獲得 ⚫チームの総合力の育成 • 反復開発、フィージビリティスタディを通した経験蓄積 • 現場経験の蓄積を重視した人員アサイン ⚫チームの総合力を引き出す連携強化 • HRTの三本柱の推進
• 謙虚(Humility)、尊敬(Respect)、信頼(Trust)をチームメンバー間で確立す る。それによりネガティブな状況に対してもポジティブにチームが対応できるよ うになる • 心理的安全性の推進 • 心理的安全性の確保により、適切な品質問題のマネジメントや チームコミュニケーションが実現される
QAでチームの有効性・迅速性・効率性を支えるアプローチ ⚫顧客価値のフィードバックプロセスの構築 ⚫継続的QA/シフトレフト/QAの戦略立て ⚫デプロイメントパイプラインの高度化 ⚫チーム全体アプローチ ⚫QA容易性の確保
QA容易性の確保 ⚫QA活動が容易になるように、マネジメント、プロセス、設計・実装を 工夫する • 設計・実装で必要なテスト容易性を作りこむ • 品質のオブザビリティを作りこむ • 品質問題の可視化・検出・対策の仕組みをプロセスに組み込む •
品質リスク・課題マネジメントのシフトレフトをマネジメントで推進する
QA容易性の確保施策の例:品質リスクのモジュール化 低リスク 高リスク 低リスク ・・・ 疎結合・高凝集度設計で モジュール化を推進。 品質リスクを分離する (例:接合部配備、信頼できるインター フェース手段採用、カプセル化/状態
や副作用の局所化、インターフェース のシンプル化/契約による設計) 品質レベルに応じた アーキテクチャレベルの QA容易性確保 (例:自動化対応、CI/CD統合可能、 QAの障害排除、シフトレフト対応、 Humble Objectパターン) •高リスクで詳細なテスト が必要なコンポーネントは、 優れたQA容易性の活用で QAを効率化 •高リスクコンポーネント は結合テストレベルで品質 を担保可能に
QA容易性の確保施策の例:品質リスクのモジュール化 アーキテクチャ設計で、品質リスクのモジュール化を推進 高リスク コンポー ネント 低リスク コンポー ネント 高リスク リリースの
QA 低リスク リリースの QA QAの戦略立てでQAのモジュール化を推進 高リスクリリースは詳細なQAで、低リスクリリースはスピード重視のQAで 総体として高品質・高スピードの両立を実現
まとめ ⚫ソフトウェアQAには「高品質を確保・作りこむ力」と「高スピードに品 質を確保する迅速性」の両方が不可欠 ⚫そのためにはQAでチームの有効性・迅速性・効率性を総合的にサ ポートする必要がある ⚫そのためには次のアプローチが有効 • 顧客価値のフィードバックプロセスの構築 • 継続的QA/シフトレフト/QAの戦略立て
• デプロイメントパイプラインの高度化 • チーム全体アプローチ • QA容易性の確保