1. ソフトウェア品質と品質保証(QA)の基礎 MOC
- ソフトウェア品質とは
- ソフトウェア品質の定義 (利用者の期待や要求を満たす度合い)
- IEC 25010など)
[[機能適合性 (Functional Suitability)]][[性能効率性 (Performance Efficiency)]][[互換性 (Compatibility)]][[使用性 (Usability)]][[信頼性 (Reliability)]][[セキュリティ (Security)]][[保守性 (Maintainability)]][[移植性 (Portability)]]
- 品質の主観性と客観性
- 品質保証 (QA) の概念
- 品質管理 (QC - Quality Control) との違い
- テスト (Testing) との違い
- ソフトウェア開発ライフサイクル (SDLC) とQA
- コストオブクオリティ (CoQ - Cost of Quality)
[[予防コスト (Prevention Costs)]](品質計画、トレーニング、レビュー)[[評価コスト (Appraisal Costs)]](テスト、インスペクション)[[内部失敗コスト (Internal Failure Costs)]](手戻り、再テスト、廃棄)[[外部失敗コスト (External Failure Costs)](顧客サポート、保証、評判損失)
- 品質文化 (Quality Culture)
2. テスト戦略とテスト計画 MOC
2.1. テスト戦略 (Test Strategy) MOC
- テスト戦略とは
- テスト戦略の構成要素
[[テストの目的とスコープ]][[テストアプローチ (テストレベル、テストタイプ、技法)]][[テスト環境の要件]][[テストツールの選定方針]][[テスト自動化の方針]][[リスクと対策]][[テスト成果物とレポート]][[役割と責任]][[テスト終了基準 (サスペンド/再開基準も)]]
- テスト戦略の種類 (例)
[[分析的戦略 (リスクベースなど)]][[モデルベース戦略]][[方法論的戦略 (標準準拠など)]][[プロセス準拠/標準準拠戦略]][[リアクティブ戦略 (探索的テストなど)]][[コンサルテーションベース戦略]]
- テスト戦略策定の考慮事項 (プロジェクト特性、リスク、リソース、期間)
2.2. テスト計画 (Test Plan) MOC
- テスト計画とは
- テスト計画の構成要素 (IEEE 829準拠など)
[[テスト計画識別子]][[はじめに (目的、背景、スコープ)]][[テストアイテム (テスト対象)]][[テストするフィーチャー]][[テストしないフィーチャー]][[テストアプローチ (戦略の具体化)]][[アイテム合格/不合格基準]][[テスト中断基準と再開要件]][[テスト成果物]][[テストタスク]][[環境要件]][[責任分担]][[要員とトレーニングのニーズ]][[スケジュール]][[リスクと緊急時対応計画]][[承認]]
- テスト計画の作成とレビュー
2.3. リスクベースドテスティング (Risk-Based Testing - RBT) MOC
2.4. テスト環境とテストデータ管理 MOC
- テスト環境の設計と構築 (開発、テスト、ステージング、本番類似環境)
- テストデータの準備と管理
[[テストデータの種類 (正常系、異常系、境界値、大量データ)]][[テストデータ生成方法 (手動、自動生成、本番データマスキング)]][[テストデータの機密性とプライバシー保護]][[テストデータの一貫性と再利用性]]
3. テストレベル (Levels of Testing) MOC
3.1. ユニットテスト (Unit Testing) MOC
- モジュールの検証)
- ユニットの粒度 (関数、メソッド、クラス)
- ユニットテストの特性 (独立性、高速性、自動化)
- ユニットテストフレームワーク (xUnit系: JUnit, NUnit, pytestなど)
[[テストダブル (Test Doubles) の活用]](スタブ、モック、フェイク、ダミー、スパイ) - 再掲、ユニットテスト文脈で- ユニットテストとTDDの関係
- ユニットテストカバレッジ (コードカバレッジ、分岐カバレッジ)
- ユニットテストのベストプラクティスとアンチパターン
3.2. インテグレーションテスト (Integration Testing) MOC
- モジュール間のインターフェースと連携動作の検証)
- インテグレーションテストのアプローチ
[[ビッグバンアプローチ]](非推奨)[[トップダウンアプローチ]](スタブが必要)[[ボトムアップアプローチ]](ドライバが必要)[[サンドイッチアプローチ (ハイブリッドアプローチ)]][[継続的インテグレーションにおけるインテグレーションテスト]]
- インテグレーションテストの対象 (API連携、データベース連携、マイクロサービス間連携など)
- インテグレーションテストの課題 (環境構築、テストデータ)
3.3. システムテスト (System Testing) MOC
- システムテストの定義と目的 (統合されたシステム全体の動作をエンドツーエンドで検証)
- システムテストのスコープ (機能要件、非機能要件)
- ブラックボックステスト技法の活用
- 本番に近い環境での実施
- システムテストの種類 (機能テスト、パフォーマンステスト、セキュリティテストなどを含む場合がある)
3.4. 受け入れテスト (Acceptance Testing - UAT) MOC
- 受け入れテストの定義と目的 (ユーザーや顧客の視点でシステムが要求を満たしているか検証)
- 受け入れテストの種類
[[ユーザー受け入れテスト (UAT)]][[運用受け入れテスト (OAT - Operational Acceptance Testing)]][[契約受け入れテスト (Contract Acceptance Testing)]][[規制受け入れテスト (Regulatory Acceptance Testing)]][[アルファテスト (Alpha Testing) とベータテスト (Beta Testing)]]
- 受け入れ基準 (Acceptance Criteria)
- UATの実施体制とプロセス
3.5. テストピラミッドとテスト戦略 MOC
- テストピラミッド (Test Pyramid) の概念 (Mike Cohn)
- (オプション) テストトロフィー (Test Trophy) の概念 (Kent C. Dodds)
- (オプション) その他のテスト形状モデル (アイスクリームコーンアンチパターンなど)
- プロジェクト特性に応じたテストピラミッドの調整
4. テストタイプ (Types of Testing) MOC
4.1. 機能テスト (Functional Testing) MOC
- ブラックボックステスト (Black-Box Testing) MOC (内部構造を考慮しないテスト)
[[同値分割法、境界値分析などの技法]](詳細はテスト設計技法で)
- ホワイトボックステスト (White-Box Testing) MOC (内部構造に基づいてテスト)
[[命令網羅、分岐網羅などの技法]](詳細はテスト設計技法で)
- グレーボックステスト (Gray-Box Testing) MOC (内部構造の一部知識を利用)
- GUIテスト
[[手動UIテストと自動UIテスト]][[UIテストの課題 (脆さ、メンテナンスコスト)]][[Page Object Model (POM) パターン]]
- APIテスト (API Testing) (再掲・テストタイプとして)
- データベーステスト (Database Testing)
[[データ整合性、トランザクション、スキーマ、ストアドプロシージャのテスト]]
- 回帰テスト (Regression Testing)
[[変更によって既存機能に悪影響が出ていないか確認するテスト]][[回帰テストスイートの構築と自動化]][[リスクベースのアプローチによる回帰テストの範囲選定]]
- ビルド検証テスト (BVT - Build Verification Test)
[[主要機能が動作することを確認する短時間で実施するテスト]]
- サニティテスト (Sanity Testing)
[[軽微な修正後、特定の機能が期待通り動作するか確認するテスト]]
- 探索的テスト (Exploratory Testing)
[[テスト設計と実行を同時に行い、学習と発見を重視するテスト]][[セッションベースドテストマネジメント (SBTM)]][[チャーター (Charter) の作成]]
- ユーザビリティテスト (Usability Testing)
[[ユーザー視点での使いやすさ、効率性、満足度の評価]][[ヒューリスティック評価、ユーザビリティテストセッション]]
- アクセシビリティテスト (Accessibility Testing - a11y)
[[障害のある人も含め、誰もが利用可能か検証 (WCAGなど)]]
- インターナショナリゼーション (i18n) テスト
- 互換性テスト (Compatibility Testing) (ブラウザ、OS、デバイス)
4.2. 非機能テスト (Non-Functional Testing) MOC
- パフォーマンステスト (Performance Testing) MOC
[[負荷テスト (Load Testing)]](通常およびピーク負荷時の性能評価)[[ストレステスト (Stress Testing)]](限界を超える負荷での挙動評価)[[耐久テスト (Endurance Testing / Soak Testing)]](長期間の負荷での安定性評価)[[スパイクテスト (Spike Testing)]](急激な負荷変動への対応評価)[[ボリュームテスト (Volume Testing)]](大量データ処理の性能評価)[[スケーラビリティテスト (Scalability Testing)]][[パフォーマンステストツール (JMeter, LoadRunner, Gatling, k6)]][[パフォーマンスメトリクス (応答時間、スループット、リソース使用率)]]
- セキュリティテスト (Security Testing) MOC
[[脆弱性スキャン (Vulnerability Scanning)]][[ペネトレーションテスト (Penetration Testing / Ethical Hacking)]][[静的アプリケーションセキュリティテスト (SAST)]][[動的アプリケーションセキュリティテスト (DAST)]][[インタラクティブアプリケーションセキュリティテスト (IAST)]][[OWASP Top 10などの脆弱性リストへの対応]][[認証・認可テスト]][[セキュアコーディングレビュー]]
- 信頼性テスト (Reliability Testing) MOC
- 堅牢性テスト (Robustness Testing) MOC
- 不正な入力や予期せぬ状況下でのシステムの挙動評価
[[フォールトインジェクション (Fault Injection)]]
- 保守性テスト (Maintainability Testing) MOC (コードの解析性、変更容易性など)
- 移植性テスト (Portability Testing) MOC (異なる環境への移行の容易さ)
- アンインストールテスト
- フェイルオーバーテスト
5. テスト設計技法 (Test Design Techniques) MOC
5.1. ブラックボックステスト技法 MOC
- 同値分割法 (Equivalence Partitioning)
[[有効同値クラスと無効同値クラスの識別]]
- 境界値分析 (Boundary Value Analysis - BVA)
[[境界とその隣接値のテストケース作成 (2値境界、3値境界)]]
- デシジョンテーブルテスト (Decision Table Testing)
[[条件とアクションの組み合わせを表形式で整理]][[ルールとテストケースの対応付け]]
- 状態遷移テスト (State Transition Testing)
[[状態遷移図/表の作成]][[状態網羅、遷移網羅、0スイッチ/1スイッチカバレッジ]]
- ユースケーステスト (Use Case Testing)
[[ユースケースシナリオに基づくテストケース作成]][[正常系シナリオと代替/例外シナリオ]]
- Pairwise Testing)
[[パラメータの組み合わせ爆発を抑え、効率的に網羅する技法]][[直交表の利用]]
- (オプション) 原因結果グラフ (Cause-Effect Graphing)
5.2. ホワイトボックステスト技法 MOC
- カバレッジ基準 (Coverage Criteria)
- C0)
- C1)
- 条件網羅 (Condition Coverage)
- Condition Coverage)
- DC)
- パス網羅 (Path Coverage) (組み合わせ爆発の問題)
[[データフローテスト (Data Flow Testing)]](定義-使用パス)
- ループテスト (Loop Testing) (単純ループ、ネストループ、連結ループ)
- 制御フローグラフ (Control Flow Graph) の利用
- サイクロマティック複雑度 (Cyclomatic Complexity) (テストケース数の目安)
5.3. 経験ベースのテスト技法 (Experience-Based Techniques) MOC
- エラー推測 (Error Guessing)
[[過去の経験や知識に基づいて欠陥が発生しやすい箇所を推測]]
- チェックリストベースドテスト (Checklist-Based Testing)
[[既知の欠陥タイプや共通のテスト項目をリスト化]]
- 探索的テスト (Exploratory Testing) (再掲・技法として)
6. テスト自動化 (Test Automation) MOC
6.1. テスト自動化戦略 MOC
- なぜテスト自動化を行うのか (目的と期待効果)
- 何を自動化すべきか、すべきでないか
[[自動化に適したテスト (繰り返し実行、回帰テスト、データ駆動テスト、安定した機能)]][[自動化に不向き/困難なテスト (ユーザビリティ、探索的テスト、頻繁に変更されるUI)]]
- テスト自動化のROI (Return on Investment) 分析
- テスト自動化の段階的導入
- テスト自動化の目標設定とKPI
6.2. テスト自動化フレームワーク (Test Automation Frameworks) MOC
- フレームワークの役割と利点 (再利用性、保守性、拡張性、可読性向上)
- 一般的なテスト自動化フレームワークのタイプ
[[線形スクリプティング (Linear Scripting / Record and Playback)]][[モジュラー駆動フレームワーク (Modular-Driven Framework)]][[データ駆動フレームワーク (Data-Driven Framework)]][[キーワード駆動フレームワーク (Keyword-Driven Framework / Table-Driven Framework)]][[ハイブリッドテストフレームワーク (Hybrid Test Framework)]][[ビヘイビア駆動開発 (BDD) フレームワーク]](再掲)
- Page Object Model (POM) デザインパターン (UIテスト自動化における)
- テスト自動化フレームワークの選定基準
6.3. テスト自動化ツール MOC (カテゴリ別主要ツール再掲・詳細)
- ユニットテストフレームワーク (xUnit系)
- UIテスト自動化ツール (Selenium, Cypress, Playwright, Appium)
- Newman, RestAssured, Karate DSL, Pact)
- パフォーマンステストツール (JMeter, k6, Gatling, LoadRunner)
- BDDツール (Cucumber, SpecFlow, Behave, RSpec)
- CDツールとの連携 (Jenkins, GitLab CI, GitHub Actionsなど)
6.4. テスト自動化の課題とベストプラクティス MOC
- テストコードの品質と保守性 (“テストは二級市民ではない”)
- 不安定なテスト (Flaky Tests) の特定と対策
- テスト実行時間の管理と最適化
- テストデータの管理と自動化
- テスト環境の自動プロビジョニング
- テスト結果の分析とフィードバック
- 自動化スキルの育成
7. テスト管理とレポート MOC
- テストケース管理 (Test Case Management)
[[テストケースの設計と記述 (前提条件、手順、期待結果、実際の結果)]][[テストケースのレビューと承認]][[テストスイート (Test Suite) の構成]][[トレーサビリティマトリクス (Traceability Matrix)]](要求とテストケースの対応)
- テスト実行管理 (Test Execution Management)
[[テストサイクルの計画と実行]][[テスト結果の記録 (合格、失敗、ブロック、スキップ)]]
- Bug Tracking) MOC
[[欠陥レポートの作成 (再現手順、深刻度、優先度)]][[欠陥ライフサイクル (新規、オープン、修正、再テスト、クローズ)]][[欠陥追跡システム (Bug Tracking System - JIRA, Bugzilla, Redmineなど)]]
- テストメトリクスとKPI (Key Performance Indicators) MOC
[[テストカバレッジ (要件カバレッジ、コードカバレッジ)]][[テストケース実行率と合格率]][[欠陥密度 (Defect Density)]][[欠陥除去効率 (DRE - Defect Removal Efficiency)]][[平均欠陥発見時間 (MTTF - Mean Time To Find defects)]][[平均修復時間 (MTTR - Mean Time To Repair)]][[自動テストの実行時間と成功率]]
- テスト結果レポート (Test Summary Report) MOC
[[テスト活動の概要、結果、分析、結論、提言]]
- テスト管理ツール (Test Management Tools) (TestRail, Zephyr, Xray, Quality Center/ALM)
8. 品質保証プロセスとプラクティス MOC
- レビュープロセス (Review Process) MOC
[[ウォークスルー (Walkthrough)]][[テクニカルレビュー (Technical Review)]][[インスペクション (Inspection)]](形式的レビュー)[[ピアレビュー (Peer Review) / コードレビュー]]
- 静的解析 (Static Analysis) MOC
[[コードの実行なしに潜在的な欠陥や品質問題を検出]][[Lintツール (ESLint, Pylint, Checkstyleなど)]][[静的解析ツール (SonarQube, Coverityなど)]]
- コーディング標準とガイドラインの遵守
- 品質ゲート (Quality Gates) (特定の品質基準を満たさないと次のフェーズに進めないチェックポイント)
- 根本原因分析 (RCA - Root Cause Analysis) と予防措置 (なぜなぜ分析、魚の骨図)
- 継続的改善 (Kaizen) の精神とプラクティス (PDCAサイクル)
- 品質マニュアルと標準作業手順書 (SOP)
- テスト成熟度モデル (TMMi - Test Maturity Model integration) など (概要)
9. テスト戦略 MOC
9.1. アジャイル開発におけるQAとテスト MOC
- アジャイルマニフェストとテスト
- アジャイルテストの原則 (継続的なフィードバック、チーム全体の責任など)
- テスト担当者の役割の変化 (アジャイルテスター、QAコーチ) (開発チームへの統合)
- シフトレフトテスティング (Shift Left Testing) (早期からのテスト活動)
- 継続的テスト (Continuous Testing) (CI/CDパイプラインへの統合)
- アジャイルテストの四象限 (Agile Testing Quadrants - Brian Marick)
- 探索的テストとアジャイル
- 受け入れテスト駆動開発 (ATDD - Acceptance Test-Driven Development) (BDDとの関連)
- スクラムにおけるテスト活動 (スプリント計画、デイリースクラム、スプリントレビュー、レトロスペクティブ)
- カンバンにおけるテスト活動 (WIP制限、リードタイム短縮)
9.2. DevOpsにおけるQAとテスト MOC
- DevOpsの原則とテスト (CAMSモデル: Culture, Automation, Measurement, Sharing)
- CDパイプラインにおけるテストの完全自動化 (再掲・DevOps文脈)
- シフトライトテスティング (Shift Right Testing)
[[本番環境でのモニタリングとフィードバック]][[A/Bテスト、カナリアリリースと連携したテスト]][[カオスエンジニアリング (Chaos Engineering)]](システムの耐障害性テスト)
- テスト環境のオンデマンドプロビジョニング (Infrastructure as Code)
- Infrastructure as Code (IaC) のテスト
- コンテナとマイクロサービスのテスト戦略
- テストデータ管理とDevOps
- DevSecOps (セキュリティのシフトレフトと自動化)
9.3. ウォーターフォール開発におけるQAとテスト MOC
- Vモデルとテストフェーズの対応
- 各テストレベルの厳密な分離と段階的実施
- ドキュメント駆動アプローチ
- ウォーターフォールにおけるQAの課題 (フィードバックの遅れ、手戻りコスト大)
10. 技術におけるテスト戦略の例 MOC
[[モバイルアプリケーションテスト戦略]](エミュレータ/シミュレータ、実機テスト、OSバージョン、デバイス断片化)[[Webアプリケーションテスト戦略]](クロスブラウザテスト、レスポンシブデザインテスト、パフォーマンステスト、セキュリティテスト)[[マイクロサービステスト戦略]](契約テスト、サービス仮想化、分散トレーシング)[[データウェアハウス/ETL/BIテスト戦略]](データ品質、変換ロジック、レポート検証)[[AI/MLシステムのテスト戦略]](データセットの品質、モデルの性能評価、バイアス検出、説明可能性)[[組み込みシステム/IoTテスト戦略]](ハードウェア依存性、リアルタイム性、リソース制約)[[クラウドネイティブアプリケーションテスト戦略]](スケーラビリティ、耐障害性、サービス連携)[[ゲームテスト戦略]](機能、バランス、パフォーマンス、互換性、ローカライズ)
11. テストの将来とトレンド MOC
- AIと機械学習のテストへの応用 (AI for Testing)
[[テストケース自動生成]][[テストデータ自動生成]][[欠陥予測と分析]][[テスト自動化スクリプトの自己修復]][[視覚的回帰テストの自動化]]
- ローコードテスト自動化プラットフォーム
- カオスエンジニアリングの普及
- テストデータ管理 (TDM) の高度化 (合成データ、AIによるデータ生成)
- DevSecOpsのさらなる浸透
- テストの専門性と役割の進化 (品質コーチ、自動化アーキテクトなど)
- 量子コンピューティングにおけるテスト (将来展望)