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

高スピードと高品質を支えるソフトウェアQA(開発変革セミナー)

 高スピードと高品質を支えるソフトウェアQA(開発変革セミナー)

Hiroki Iseri

November 14, 2024
Tweet

More Decks by Hiroki Iseri

Other Decks in Programming

Transcript

  1. 自己紹介 ⚫経歴 • 開発者、テストエンジニア、コンサルタント、QAエンジニアと様々な立場で 様々なプロダクトの品質エンジニアリングに従事 • 現在は車メーカでQA/テストテックリードを担当 • JSTQB技術委員、テスト設計コンテストU30クラスファウンダー ⚫著作・講演

    • 「テスト自動化の成功を支えるチームと仕組み」 「シフトレフトテストを支える現代的なテスト設計」 「Androidアプリテスト技法」「システムテスト自動化標準ガイド」 「テストの視点を活用したTDDアプローチの検討とその検証」など
  2. 高品質と高スピードの両立を支えるソフトウェアQA 例:サービス開発の場合 変更のリードタイム 顧客要求への迅速な対応 サービス復元時間 顧客が直面する障害への 迅速な対応 迅速な変更・修正 を実現する チームの開発力

    変更・修正を支える 高い保守性 高い保守性を実現する チームの開発力 • 設計・実装の総合力確保(能力確保・育成・発揮) • 設計品質を支えるプロセスや開発インフラの整備 • テストやリリース・デプロイの自動化 • デプロイメントパイプラインの洗練、など 「ものづくり」だけではなく「チームづくり」が不可欠
  3. 継続的QA build test release devloy operate monitor plan code ここでもQA

    ここでもQA ここでもQA ここでもQA ここでもQA ここでもQA ここでもQA ここでもQA
  4. シフトレフト ⚫品質エンジニアリング活動を早期から実施し、品質の確保・保証を 早期から行う。品質問題を予防・早期対策する • 中短期の反復開発プロセス・インクリメンタル開発プロセスの採用 • 開発者テストの充実とCI/CDへの統合 • テスト駆動開発 •

    自動テストの拡充とCIへの統合 • 静的テスト/レビューの充実 • シフトレフトを支えるQA容易性・テスト容易性の作りこみ • 検証可能な仕様 • ウォーキングスケルトン(作りかけでも動かせるソフトウェア)の 確保などで早期からテスト着手可能に
  5. QAの戦略立て 課題の種類の例 戦略立てのアプローチ 欠陥の検出 検出したい欠陥タイプごとに検出すべきQA活動を割り当て プロダクトリスクの確認 プロダクトリスクに対し、QA活動がどう連携するか立案 品質課題の対応 品質課題に対して、QA活動でどう対応するか立案 課題の例

    課題対応戦略 グローバル展開する組込み製 品の表示文言の品質確保 文言の正確性確認、翻訳品質確認:データ静的テスト、 専門部門のテクニカルレビュー 文言描画の確認: アプリケーション描画:エミュレータテストで全網羅 実機動作:自動キャプチャーテストで代表パターン確認 現地依存の本番環境確認: ローカライゼーションテスト 品質課題対応の例
  6. デプロイメントパイプラインの拡充・高度化 ⚫デプロイメントパイプラインの拡充 • 多くの開発活動をCI/CDデプロイメントパイプラインに組み込む • 組み込めるように自動化を推進する • 環境を仮想化する • 人の活動もデプロイメントパイプラインを補強するようにプロセス設計する

    • 例:PR/MRレビュー ⚫デプロイメントパイプラインの高度化 • より高度なパイプライン処理を実装する • 例:予測的テスト選択、Flaky Testの検出 • 高速化・最適化を進める • 例:並列化、コンテナオーケストレーション
  7. チーム全体アプローチ ⚫チーム全体で品質エンジニアリング活動を推進する。チームメンバー 全員がプロダクト品質について責任を持つ • 少数精鋭指向 • 密なコミュニケーションをとる。全員参加のイベントを確保する • 例:スクラム •

    心理的安全性を確保しオープンなコミュニケーションを実現する • チーム内の情報や意思決定の透明性を確保する • 明確なビジョン、目的、目標を共有し、チームの方向性を合わせる ⚫例えばQAの迅速性の確保には、QA容易性の確保といった、 QA担当外の協力が不可欠。 それを支えるのがチーム全体アプローチ
  8. チームの総合力を意識した能力の確保・育成施策 ⚫高度な人材の獲得 ⚫チームの総合力の育成 • 反復開発、フィージビリティスタディを通した経験蓄積 • 現場経験の蓄積を重視した人員アサイン ⚫チームの総合力を引き出す連携強化 • HRTの三本柱の推進

    • 謙虚(Humility)、尊敬(Respect)、信頼(Trust)をチームメンバー間で確立す る。それによりネガティブな状況に対してもポジティブにチームが対応できるよ うになる • 心理的安全性の推進 • 心理的安全性の確保により、適切な品質問題のマネジメントや チームコミュニケーションが実現される
  9. QA容易性の確保施策の例:品質リスクのモジュール化 低リスク 高リスク 低リスク ・・・ 疎結合・高凝集度設計で モジュール化を推進。 品質リスクを分離する (例:接合部配備、信頼できるインター フェース手段採用、カプセル化/状態

    や副作用の局所化、インターフェース のシンプル化/契約による設計) 品質レベルに応じた アーキテクチャレベルの QA容易性確保 (例:自動化対応、CI/CD統合可能、 QAの障害排除、シフトレフト対応、 Humble Objectパターン) •高リスクで詳細なテスト が必要なコンポーネントは、 優れたQA容易性の活用で QAを効率化 •高リスクコンポーネント は結合テストレベルで品質 を担保可能に
  10. QA容易性の確保施策の例:品質リスクのモジュール化 アーキテクチャ設計で、品質リスクのモジュール化を推進 高リスク コンポー ネント 低リスク コンポー ネント 高リスク リリースの

    QA 低リスク リリースの QA QAの戦略立てでQAのモジュール化を推進 高リスクリリースは詳細なQAで、低リスクリリースはスピード重視のQAで 総体として高品質・高スピードの両立を実現