目次
PartI ソフトウェアテストと品質マネジメント
第1章 ソフトウェアテストとは
- 1.1 ソフトウェアテストの目的
- 1.2 高スピードと高品質の両立を支えるソフトウェアテスト
- 1.3 ソフトウェアテストの課題
第2章 品質マネジメントとソフトウェアテスト
- 2.1 ソフトウェアテストの強みを活かし弱みを補う
- 2.2 品質マネジメント
- 2.3 品質マネジメントシステムの実現
- 2.4 品質マネジメントの視座でソフトウェアテストを活用する
- 2.5 ソフトウェア開発に求められる品質マネジメント
- 2.6 品質マネジメントを担う部門の陳腐化
- 2.7 品質とは
第3章 ソフトウェアテストの全体像
- 3.1 テストに関わる概念と用語
- 3.2 テストの構成要素
PartII テストの戦略とプロセス
第4章 テストの戦略立て
- 4.1 テスト戦略とは
- 4.2 テスト戦略の構築
第5章 定番のテスト戦略
- 5.1 シフトレフトテストの戦略
- 5.2 リグレッションテストの戦略
- 5.3 Wモデルの戦略
- 5.4 シフトライトテストの戦略
第6章 アジャイル開発でのテスト戦略
- 6.1 アジャイル開発の価値・原則を支えるテスト戦略
- 6.2 アジャイルテストの原則
- 6.3 アジャイルテストの四象限
- 6.4 アジャイル開発プロセスへの対応
- 6.5 顧客満足やビジネス価値よりアジャイルの形式を優先しない
- 6.6 リリーススプリントのリスクに対応する
- 6.7 ゾンビスクラムとその対策
第7章 継続的デリバリーでのテスト戦略
- 7.1 継続的デリバリーとは
- 7.2 デプロイメントパイプラインとは
- 7.3 継続的デリバリーを支えるテストアプローチ
- 7.4 継続的デリバリーで活用できるテストアプローチ
- 7.5 継続的デリバリーのテストを支える体制
第8章 DevOpsでのテスト戦略
- 8.1 DevOpsとは
- 8.2 継続的テストとは
- 8.3 ホリスティックテストとは
- 8.4 DORA Four Keysとテストでの対応
- 8.5 DevOpsを支えるテストの体制
- 8.6 DevOpsを支えるテストのアプローチ
第9章 ソフトウェアプロダクトライン開発でのテスト戦略
- 9.1 ソフトウェアプロダクトライン開発とは
- 9.2 ソフトウェアプロダクトライン開発のプロセス
- 9.3 ソフトウェアプロダクトライン開発を支えるテスト体制
- 9.4 ソフトウェアプロダクトライン開発を支えるテストアプローチ
第10章 テストを支えるプロセスの構築と運用
- 10.1 開発プロセスとは
- 10.2 テストを支える開発プロセス設計
- 10.3 テストプロセス設計
- 10.4 開発プロセス・テストプロセスの構築の流れ
- 10.5 関連プロセスの整備
- 10.6 テストプロセスの改善
PartIII テストの作成と実行
第11章 テストの分析・設計・実装の全体像
- 11.1 テストの作成で求められる工夫
- 11.2 テストを作成する全体の流れ
第12章 テスト基本分析
- 12.1 テスト基本分析とは
- 12.2 テスト要求・制約のステークホルダを特定する
- 12.3 必要なテストベースを特定する
- 12.4 テストの要求・制約を収集し分析する
- 12.5 テスト対象を整理し理解する
- 12.6 プロダクトリスクを分析する
- 12.7 必要なテスト環境を分析する
- 12.8 テストの責務を具体化する
第13章 テストアーキテクチャ設計
- 13.1 テストアーキテクチャとは
- 13.2 テストアーキテクチャ設計とは
- 13.3 テストアーキテクチャ設計の進め方
- 13.4 テストアーキテクチャの評価と改善
- 13.5 高スピードと高品質を両立させるテストアーキテクチャ設計
第14章 テストアーキテクチャ設計手法:VSTeP
- 14.1 VSTePとは
- 14.2 VSTePの基本概念
- 14.3 VSTePの進め方
- 14.4 まとめ
第15章 テスト詳細分析とテスト設計
- 15.1 テスト詳細分析・テスト設計とは
- 15.2 テスト詳細分析・テスト設計
- 15.3 テスト観点を識別・整理する
- 15.4 テスト設計のアンチパターン:CPM 法
- 15.5 テスト対象を項目分けする
- 15.6 テスト条件を分析する
- 15.7 テスト網羅基準を検討する
- 15.8 テストケースを設計する
- 15.9 テスト設計からフィードバックしてテストベースを改善する
- 15.10 テスト設計を保守・改善する
第16章 テスト設計技法の活用
- 16.1 テスト設計技法とは
- 16.2 テスト設計技法のタイプ
- 16.3 同値分割法
- 16.4 境界値分析
- 16.5 クラシフィケーションツリー法
- 16.6 デシジョンテーブルテスト
- 16.7 状態遷移テスト
- 16.8 nワイズテスト
- 16.9 エラー推測
- 16.10 制御フローテスト
- 16.11 テスト設計技法の使い分け
第17章 応用的なテスト設計のアプローチ
- 17.1 ユニットテストのテスト設計
- 17.2 性能テストのテスト設計アプローチ
- 17.3 組み合わせに対するテスト設計アプローチ
第18章 テスト実装
- 18.1 テスト実装とは
- 18.2 テスト手順の作成
- 18.3 テストの選択・絞り込み
- 18.4 予測的テスト選択(Predictive Test Selection)
- 18.5 テストの優先付け・順序設定
第19章 テスト環境の構築
- 19.1 テスト環境構築の重要性
- 19.2 テスト環境構築のプロセス
- 19.3 テスト環境構築からテストへの逆提案
- 19.4 テスト環境の品質を作りこむ
- 19.5 テスト環境のテスト
第20章 テストの実行と結果判定
- 20.1 テスト実行を準備する
- 20.2 テストを実行する
- 20.3 テスト実行の学習効果を活かす
- 20.4 忍者式テスト
- 20.5 バグを報告する
- 20.6 テスト結果を評価しリリース判定する
第21章 リスクベースドテスト
- 21.1 リスクベースドテストとは
- 21.2 リスクとリスクマネジメント
- 21.3 リスクマネジメントの活動
- 21.4 リスクベースドテストの概要
- 21.5 リスク事象に基づいてテストする
- 21.6 機能や特性ごとのリスクレベルに基づいてテストする
- 21.7 構成要素ごとのリスクレベルに基づいてテストする
- 21.8 リスクベースドテストの恩恵
第22章 探索的テスト
- 22.1 探索的テストとは
- 22.2 探索的テストのスタイル
- 22.3 探索的テストの効果を引き出す
第23章 ユーザーストーリーテスト
- 23.1 ユーザーストーリーテストとは
- 23.2 ユーザーストーリーの記述
- 23.3 ユーザーストーリーテストの進め方
第24章 静的テスト
- 24.1 静的テストとは
- 24.2 レビュー
- 24.3 静的解析
- 24.4 静的テストで支えるコーディング規約
- 24.5 デプロイメントパイプラインへの静的テストの統合
- 24.6 静的テストで動的テストを削減する
PartIV 自動テストの活用
第25章 自動テストの活用
- 25.1 自動テストとは
- 25.2 自動テストの効果
- 25.3 自動テストの注意点
- 25.4 自動テストの成功とは
- 25.5 テストレベルに応じた自動テストの構築
- 25.6 自動テストの構築・運用の流れと要点
- 25.7 自動テストの成功を支えるチームと仕組み
第26章 自動テストの品質の作りこみ
- 26.1 自動テストの保守性の確保
- 26.2 レガシーテスト / テストの技術的負債への対応
- 26.3 脆いテスト(フラジャイルテスト)への対応
- 26.4 自動テストの信頼性の確保
- 26.5 フレーキーテストへの対応
第27章 自動テストの評価
- 27.1 自動テストの目的達成と費用対効果を評価する
- 27.2 自動テストの評価
- 27.3 フォールトインジェクションの必要性
- 27.4 ミューテーションテストによる評価
第28章 自動テストの設計・実装の原則
- 28.1 プロダクトコードと同じように設計・実装を工夫する
- 28.2 FIRSTの原則
- 28.3 「 DRYではなくDAMP」の原則
- 28.4 xUTPの原則
第29章 自動テストコードのパターンやイディオム
- 29.1 パラメータ化テスト / データ駆動テスト
- 29.2 ドメイン特化テスト言語 / Robotパターン / Page Objectパターン
- 29.3 プロパティベーステスト / メタモルフィックテスト
- 29.4 テスト設計自動化におけるテストオラクル問題への対応
- 29.5 テストダブルのパターン
第30章 開発者テスト
- 30.1 開発者テストとは
- 30.2 保護して変更する(Cover & Modify)
- 30.3 リファクタリングのためのリグレッションテスト
- 30.4 仕様書としてのテスト(TaD)/ 仕様化テスト
- 30.5 「テストがないコードはレガシーコードだ」
- 30.6 デバッギングテスト
- 30.7 責任をもって自分のコードに対する自動テストを書く
第31章 テスト駆動開発
- 31.1 テスト駆動開発の概要
- 31.2 テスト駆動開発の進め方
- 31.3 テスト駆動開発の実際の例
- 31.4 テスト駆動開発のメリット
- 31.5 テスト駆動開発の適用先と前提条件
- 31.6 テスト駆動開発を持続可能にするための活動
- 31.7 テスト駆動開発を導入しやすくするための留意点
- 31.8 テスト駆動開発のプラクティス
PartV テストの計画とマネジメント
第32章 テスト計画
- 32.1 テスト計画とは
- 32.2 アンチパターン:テンプレート穴埋め計画
- 32.3 テスト計画のタイミングや順序
- 32.4 テスト計画の作業
- 32.5 テスト計画の不確実性をマネジメントする
- 32.6 技術やツールの実現性と持続可能性をマネジメントする
- 32.7 テスト計画のためにチームの能力をマネジメントする
- 32.8 シフトレフトによる平準化でテスト計画をサポートする
- 32.9 テストの見積もりアプローチ
- 32.10 アジャイル開発でのテスト計画
第33章 テストのモニタリングとコントロール
- 33.1 テストのモニタリング
- 33.2 事前のモニタリング設計
- 33.3 テストのモニタリングの要点
- 33.4 テスト活動のモニタリング対象
- 33.5 不適切なモニタリング指標
- 33.6 テストコントロール
- 33.7 テストのモニタリングとコントロールの仕組みの構築
- 33.8 クライシスマネジメントとしてのテストコントロール
- 33.9 クライシスにテストエンジニアとしてどう対応するか
- 33.10 プロダクト品質のモニタリング手法:健診テスト
第34章 プロジェクトリスクのマネジメント
- 34.1 テストコントロールとして実施するリスクマネジメント
- 34.2 ネガティブなプロジェクトリスクはチャンス
- 34.3 リスクマネジメントの活動
- 34.4 プロジェクトリスクのマネジメントの要点
第35章 テストで求められる能力
- 35.1 テストで求められる能力
- 35.2 テストを支えるソフトスキル
- 35.3 テストを支えるロール
- 35.4 テストに関わるスキルモデル / ロールモデル
- 35.5 個の力と組織の力の両方が求められるテスト活動
第36章 テストを担う組織の構築
- 36.1 人材の採用
- 36.2 ロール横断による人材獲得
- 36.3 テストの適切なコミュニケーションを支える三本柱と心理的安全性
- 36.4 テストに関わるチーム文化の形成
- 36.5 テストを担う組織作りの方針
- 36.6 チーム全体アプローチ
PartVI テストを支える技術
第37章 CI/CDの構築
- 37.1 テストを支えるCI/CDの価値
- 37.2 CI/CDとは
- 37.3 CI/CDを支える開発インフラ
- 37.4 CI/CDの導入
- 37.5 CI/CDによるフェーズテスト方式の進化
第38章 バグ管理とバグチケット設計
- 38.1 バグ管理とバグ管理システム
- 38.2 バグチケットの運用やフロー,フィールドの設計
- 38.3 バグの分析
- 38.4 ODC 分析
第39章 テスト容易性の確保
- 39.1 テスト容易性とは
- 39.2 テスト容易性の重要性
- 39.3 テスト容易性の確保
- 39.4 テスト容易性を拡張可能にする実装例
- 39.5 テスト容易性をいつ確保するか
第40章 テスト設計を支えるモデリング
- 40.1 モデリングとは
- 40.2 モデリングの立脚点となる観点分析
- 40.3 テスト設計を支えるモデリング
- 40.4 テスト設計におけるモデリングの活用例
第41章 テストを支える契約による設計
- 41.1 契約による設計 / 責務設計とテスト
- 41.2 契約による設計とは
- 41.3 契約による設計で支えるテスト設計
- 41.4 表明による契約遵守の確認
第42章 ソースコードのブランチ管理とテストの連携
- 42.1 自動テストに影響するブランチ管理
- 42.2 CI/CD方針,テスト方針と連動させたブランチ管理方針
- 42.3 3分類ブランチの運用
- 42.4 既存のブランチ戦略と3分類ブランチの関係性
- 42.5 テスト活動をサポートするブランチ管理のプラクティス
第43章 システムエンジニアリングで支えるテスト
- 43.1 システムとは
- 43.2 ソフトウェアからシステムに視野を広げる
- 43.3 システムエンジニアリングのプロセス
- 43.4 システムエンジニアリングとして実施すべきテスト活動
- 43.5 テストを支えるシステムエンジニアリング活動