$30 off During Our Annual Pro Sale. View Details »

高品質と高スピードを両立させるソフトウェアQA/Software QA that Suppor...

Hiroki Iseri
December 04, 2024

高品質と高スピードを両立させるソフトウェアQA/Software QA that Supports Agility and Quality

Hiroki Iseri

December 04, 2024
Tweet

More Decks by Hiroki Iseri

Other Decks in Technology

Transcript

  1. 自己紹介 ⚫経歴 • 開発者、テストエンジニア、コンサルタント、QAエンジニアと様々な立場で 様々なプロダクトの品質エンジニアリングに従事 • 2021年からトヨタ自動車でQA/テストテックリードを担当 • JSTQB技術委員、テスト設計コンテストU30クラス初代審査委員長 ⚫著作・講演

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

    変更・修正を支える 高い保守性 高い保守性を実現する チームの開発力 • 設計・実装・テストの総合力確保(能力確保・育成・発揮) • 設計品質を支えるプロセスや開発インフラの整備 • テストやリリース・デプロイの自動化 • デプロイメントパイプラインの洗練、など 変更・修正を支える 基盤 基盤を整備する チームの総合力
  3. チーム全体(Whole Team)アプローチ ⚫チーム全体で顧客価値につながる品質実現を推進する。 チームメンバー全員が顧客にとっての品質について責任を持つ • チームの各立場が顧客価値の理解を深め、顧客価値に貢献していく • POは顧客のニーズを引き出し、実現の橋渡しする & 開発者は開発判断の中で顧客価値に貢献する

    & テストエンジニアは顧客価値を観点にテストする • 顧客価値の向上のためチームのシナジーを発揮する • 例)開発者がテスト容易性を確保し、テストエンジニアの妥当性確認を 迅速化する →チームの力を正しい方向に結集させ、高スピードと高品質を向上する アンチパターン:「顧客価値を考えるのはPO。開発者の責務担当外」
  4. 継続的QA Plan Code Build Release Deploy Operate Monitor Test ここでもQA

    ここでもQA ここでもQA ここでもQA ここでもQA ここでもQA ここでもQA ここでもQA
  5. QAのシフトレフト ⚫要求仕様誤りの不具合修正のコスト 不具合修正 コスト 要求仕様 設計段階 コーディング テスト 納入時点 x

    5x 10x 20x 200x 「ソフトウェア品質保証の方法論、技法、その変遷」,奈良隆正, JASPIC SPIJapan2009
  6. シフトレフトの手段 ⚫中短期の反復開発プロセスの採用 ⚫開発者テストの充実とCI/CDへの統合 • テスト駆動開発/自分のコードに責任をもってテストを書く習慣 • 自動テストの拡充とCIへの統合 ⚫静的テスト/レビューの充実 ⚫リスクマネジメントのシフトレフト •

    リアクティブでなくプロアクティブにリスクをコントロールする ⚫シフトレフトを支えるQA容易性・テスト容易性の作りこみ • 例)仕様の静的テスト容易性の確保、ウォーキングスケルトンの確保
  7. 継続的QA/シフトレフトを支えるQAの戦略立ての例 リスク・課題 対応方針 QA戦略 サービスの頻繁な 改善・変更に対応 する テスト自動化(実行および生成の自 動化)の促進により、変更対応を効 率化する

    テスト対象のテスト自動化容易性の向上。テスト 自動化可能な領域を拡大し、それを活用する自 動テストの責務を広げる テスト容易性向上により、テスト対象 の安定性を向上させる プロダクトの変動部分を局所化し、安定性の高い 領域を拡大する。 高い網羅性が求められるテスト範囲を分離し、統 合テストレベルで品質確保する 手動テストについて、探索的アプ ローチの拡大により、変更対応を効 率化する 変動部分に対する手動テストをテストチャータベー スの探索的テストとして実装する プロダクト・フレームワーク固有のレ ビュー観点を蓄積し、変更レビューの 精度を高め、要件・設計バグを早期 検出する DRBFMで変更レビューを実施し、レビューで抑える べきレビュー観点を故障モードとして蓄積する。 DRBFMのレビューアにはテックリードを必ず参加さ せ、レビュー効果を底上げする
  8. 効果を増幅する施策: プロダクトリスクの分離に基づいたQA容易性の作りこみ 低リスク 高リスク 低リスク ・・・ 疎結合・高凝集度設計で モジュール化を推進。 プロダクトリスクを分離する (例:接合部配備、信頼できるインター

    フェース手段採用、カプセル化/状態 や副作用の局所化、インターフェース のシンプル化/契約による設計) リスクレベルに応じた アーキテクチャレベルの QA容易性確保 (例:自動化対応、CI/CD統合可能、 QAの障害排除、シフトレフト対応)
  9. 疎結合アーキテクチャによるプロダクトリスクの分離に 基づいたテスト戦略 低リスク 高リスク 低リスク ・・・ 疎結合・高凝集度設計で モジュール化を推進。 プロダクトリスクを分離する (例:接合部配備、信頼できるインター

    フェース手段採用、カプセル化/状態 や副作用の局所化、インターフェース のシンプル化/契約による設計) リスクレベルに応じた アーキテクチャレベルの QA容易性確保 (例:自動化対応、CI/CD統合可能、 QAの障害排除、シフトレフト対応) •統合テストレベルで 高リスクに対応 •高リスクで詳細なQA が必要なコンポーネント は、優れたQA容易性の 活用でQAを効率化
  10. 疎結合アーキテクチャによるプロダクトリスクの分離に 基づいたリリース戦略 疎結合アーキテクチャで、プロダクトリスクの分離を推進 高リスク コンポー ネント 低リスク コンポー ネント 高リスク

    リリースの QA 低リスク リリースの QA リリースに応じてQAアプローチを使い分け 高リスクリリースは詳細なQAで、低リスクリリースはスピード重視のQAで。 総体としてQAで高品質・高スピードの両立を実現
  11. QA容易性の確保 ⚫QA容易性:保守性の一種。QAのやりやすさの品質特性 ⚫QA活動が容易になるように、マネジメント、プロセス、設計・実装を 工夫する • 設計・実装で必要なテスト容易性を作りこむ • 観測容易性/制御容易性/分離・置換容易性/安定性/・・・ • QAのシフトレフトを実現する

    • 静的テスト容易な仕様/ウォーキングスケルトンの早期確保/仮想化対応 • 品質のオブザビリティを作りこむ • 品質問題の可視化・検出・対策の仕組みをマネジメントシステムとして実装 する
  12. まとめ ⚫ソフトウェアQAには「高品質を確保・作りこむ力」と「高スピードに品 質を確保する迅速性」の両立が不可欠 ⚫そのQAアプローチとして以下がある QAアプローチ アプローチを支える技術 顧客価値への注力 チーム全体アプローチ/継続的QA 問題の予防・早期解決 シフトレフト

    改善サイクルによる方向づけ フィードバックプロセスの構築 保守性・QA容易性の作りこみ 疎結合アーキテクチャとプロダクトリスクの分離 開発プロセスの迅速化 デプロイメントパイプラインの高度化