テストマネジメント
テストマネジメントとは、テスト計画を行い計画に沿ってモニタリングとコントロールを実施して目的を達成することです。
テストマネジメントは、一般的にテストマネージャーが行います。
テストマネージャーは、リソースを確保して、そのリソース活用してプロセスをコントロールして完了するように導きます。
そのため、テストマネージャーはテストプロセスを中心にソフトウェア開発で必要なライフサイクルや成果物を把握して、そのニーズと状況に応じてテスト計画で準備します
テストマネージャーは以下のようなことも留意します。
-
要求エンジニアリング、要求管理
要件の変更を認識し、対応するテストコントロール活動を実行して、スコープおよびテスト工数の見積り時に要件を考慮します。 要件のレビューにテクニカルテストアナリストとテストアナリストを参加させます。
-
プロジェクトマネジメント
テストアナリストとテクニカルテストアナリストと協力して、スケジュールとリソースの要件をプロジェクトマネージャに伝えます。
プロジェクトマネージャと協力してプロジェクト計画の変更を認識し、テストをコントロールします。 -
構成管理、リリース管理、変更管理
テスト計画にテストチームと協力してテスト進捗が行るように構成・リリース・変更管理を記載します。
テストアナリストおよびテクニカルテストアナリストに対して、ビルド検証テストを作成し、テスト実行中のバージョン管理が行えるように指示します。 -
ソフトウェアの開発と保守
開発マネージャと協力して、欠陥マネジメントで各テストリリースの内容と日程を調整します。
-
テクニカルサポート
テクニカルサポートマネージャと協力して、テスト終了作業時にテスト結果を提供します。
リリース後にテストで確認できた既知の故障、回避策、運用時の故障を分析が行えるようにし、テストプロセスを改善します。 -
技術ドキュメントの作成
技術ドキュメントマネージャと協力して、テストに必要なドキュメントをタイムリーに取得して、これらのドキュメントに記載された欠陥を管理します。
ステークホルダー
テストマネージャーは、テストで必要なステークホルダーを識別してステークホルダ毎に対応が必要です。
ステークホルダーと役割を以下に記載します。
- 開発者、開発リーダ、開発マネージャ
テスト対象のソフトウェアを実装し、テスト結果(欠陥)に基づいて対応します。
- データベースアーキテクト、システムアーキテクト、設計者
ソフトウェアを設計し、テスト結果に基づいて対応します。
- マーケティングアナリスト、ビジネスアナリスト
必要なテストカバレッジの定義、テスト結果のレビュー、テスト結果に基づく意思決定に関与します。
- 上級管理職、プロダクトマネージャ、プロジェクトスポンサ
必要なテストカバレッジの定義、テスト結果のレビュー、テスト結果に基づく意思決定に関与します。
- プロジェクトマネージャ
プロジェクトをマネジメントし、テスト活動に必要なリソースの獲得やテストの計画とコントロールを行います。
- テクニカルサポート、顧客サポート、ヘルプデスクのスタッフ
提供されたソフトウェアのフィーチャと品質によりユーザと顧客をサポートします。
- 直接的または間接的なユーザ
ソフトウェアを直接使用したり、アウトプットを利用してサービスを利用します。
非機能テストのマネジメント
テストマネージャーは、非機能テストに注意する必要があります。
非機能テストが計画されていないと、リリース後に深刻な品質問題が検出される可能性があります。
非機能テストにはコストがかかりますので、テストマネージャはリスクと制約にもとづいて選択します。
テストマネージャが専門知識を持っていない場合、テストアナリストやテクニカルアナリストに委任できます。
テストアナリストやテクニカルアナリストには、以下の要員を考慮して委任します。
- ステークホルダの要件
- 必要なツールの使用
- テスト環境
- 組織的要因
- セキュリティ
非機能テストは、リスクに応じて優先度付けし、開発ライフサイクルの早い段階で実行します。
テストの早い段階や開発中に行うこともあります。
イテレーティブ開発モデルでは、各イテレーションでの実施が難しくイテレーションから独立させて実施することもあります。
経験ベーステストのマネジメント
テストマネージャーは、経験ベーステストがテスト実施者の経験に基づいて実施されるため、他の技法では見逃すような欠陥を効率よく発見できることを認識しておきます。
テスト実行範囲が判断できない場合やテスト結果を再現できないことに注意する必要があります。
テストマネージャーは、テストセッションではテストチャータをテスト担当者に伝えます。
リスクベースドテストのマネジメント
テストマネージャーは、リスクマネジメントがメイン業務になります。
リスクマネジメントはライフサイクル全体で行い、テストポリシーや戦略ドキュメントにリスク管理のプロセスを記述し、テスト段階に統合します。
成熟した組織はリスク管理をテスト以外の段階でも実施し、重要なリスクに対処します。リスク分析では、システム動作分析やコストベースのリスクアセスメントなどが含まれ、テストチームをリスク分析に参加させます。
-
軽量な技法
可能性(小中大)と影響(小中大)の組み合わせで管理を単純化します。
可能性と影響度の大きいものから実施します。 -
公式で重い技法
工数が発生しますが、作成資料が公式的なエビデンスになります。
軽量な技法には以下があります。
-
SST(Systematic Software Testing)
SSTは、ソフトウェアの品質、信頼性、およびパフォーマンスを確保するために、構造化された組織的なアプローチでテストを行うことを指します。この方法は、特定の手順やプロセスに従って、ソフトウェアがリリースされる前に欠陥を識別し修正することを目的としています。
-
PRisMa(Product Risk Management)
PRisMaは、新製品や既存製品の開発、製造、販売に関連するリスクを特定、評価、および管理するプロセスです。このプロセスは、製品のライフサイクル全体を通じて、顧客や企業に対する潜在的なリスクを軽減し、製品の品質、安全性、および信頼性を確保するために重要です。リスク識別、リスク評価、リスク対策計画、リスクモニタリング、リスク報告のステップがあります。
-
PRAM(Pragmatic Risk Analysis and Management)
PRAMは、実践的かつ効果的にリスクを評価し、管理するためのアプローチです。この手法は、プロジェクトやビジネス運営においてリスクを適切に特定し、評価し、対策を講じることで、リスクの影響を最小限に抑えることを目的としています。リスク識別、リスク評価、リスク対策、リスクモニタリング、リスク報告のステップがあります。
公式で重い技法には以下があります。
-
ハザード分析
潜在的な危険やリスクを特定し、それに対する対策を講じるための手法です。
-
エクスポージャーコスト
リスクアイテムが顕在化した場合に発生する確立から発生時の損失コストを算出します。
リスクアイテムをテストするコストも算出して比較します。 -
FMEA(故障モード影響解析)
潜在的な故障を特定し、その故障がシステム全体に与える影響を評価するための手法です。
「システムの理解」→「故障の特定」→「影響の評価」→「原因の特定」→「対策の検討」→「優先順位を設定」の順に行います。 -
FTA(フォールトツリー解析)
潜在的な故障や障害を論理的に分析し、それらの原因を特定するための手法です。
「故障や障害の特定」→「システムの理解」→「原因の特定」→「原因の追跡」→「評価と対策」の順に行います。 -
SFMEA
システムや製品の信頼性や安全性を評価するための手法です。
-
SFMECA(ソフトウェア故障モード影響致命度解析)
ソフトウェアの信頼性や安全性を評価するための手法です。
SFMECAは、FMEAをベースとして致命度解析が追加されています。
-
QFD(品質機能展開)
製品やサービスの開発で顧客の要求や期待を具体的な設計仕様に反映させるための手法です。
「顧客の要求の特定」→「要求の優先順位付け」→「技術的要件の設定」→「相互関係の評価」→「設計の最適化」の順に行います。
テストマネージャーは、リスクベーステストのマネジメントを成功させるに適切なステークホルダをリスク分析に関与するように調整します。
テストマネジャーは終了時に以下を実施します。
- 重要な欠陥が高い割合で検出できたか確認
- 重要な欠陥を、早期に検出できたか確認
- テスト結果をリスクの観点でレポートできていることを確認
- スキップしたテストが実行したテストのリスクよりも低レベルであることを確認
要件ベースドテスト
要件ベースドテストは、曖昧性レビュー、テスト条件分析、原因結果グラフなどで優先度を決める技法を活用できます。
曖昧性レビューでは多くの場合、一般的な要件の欠陥チェックリストを使用することにより、(テストベースの役割を果たす)要件の曖昧性を識別し除去します。
運用プロファイルの作成
運用プロファイルは、ユースケース、ユーザ、入力、および出力を組み合わせて活用するモデルベースのアプローチです。
機能だけではなく、使用性、相互運用性、信頼性、セキュリティ、性能もテスト可能になります。
対処的アプローチ
対処的アプローチは、実行の前にテストの分析作業、設計作業、実装作業をほとんど行わない方法です。
テストチームは、提供されたプロダクトに対する対応に焦点を当てて、欠陥の偏在を検出して検出した欠陥からテストを実施します。
対処的アプローチを単独で使用すると主要な機能の欠陥が検出できないリスクがありますので、他の技法と組み合わせることが推奨されています。
テスト戦略
テストマネージャーが作成するテスト計画書は、テスト戦略に基づいて作成します。
テスト戦略は、長期や短期、組織、プロジェクト、開発モデルによってことなります。
テスト戦略には以下のようなものがあります。
リスクベースドテスト戦略
リスク分析に基づいてテスト条件を識別します。
セキュリティリスクが高い場合、セキュリティテストを重点的に計画します。
性能のリスクが高いは場合は、性能テストを重点的に計画します。
分析的戦略
テストベースを分析して、テスト条件を識別します。
リスクベースドテストや要件ベースドテストがあります。
モデルベースド戦略
システムの動作環境・スペック・負荷などをモデル化して、必要なタスクとテストを抽出します。
運用プロファイルなどがあります。
系統的戦略
ソフトウェア品質特性からテスト条件を作成して使用します。
品質特性ベースがあります。
プロセス準拠・規格準拠戦略
規格やプロセスで定義された手順に従います。
対処的戦略
ソフトウェアを受けとってから実施します。
欠陥ベースがあります。
コンサルテーションベースの戦略
アウトソースなどを利用して、専門家の知識を利用して実施します。
回帰的テスト戦略
テスト自動化などで、回帰のリスクを防ぎます。
テスト見積
テストマネジャーは、見積り技法やテストアナリスト・テクニカルテストアナリストと協力してテスト工数の見積を作成します。
テスト工数の見積りは、テストプロセスの目的を達成できるようにすべてのテストプロセスを小さなタスクに分解して見積もります。
テストプロセスのテスト実行がクリティカルパスで、「コスト」「工数」「期間」を正確に見積もる必要があります。
テストケース数の見積もりは、前提条件や仮定を明記し、見積もりがその時点の情報で作成して、仕様変更などの更新が必要になることも考慮する必要があります。
見積方法として以下があります。
トップダウン見積り
ソフトウェアテスト全体の作業をWBSなどから、詳細な作業に分解して必要な工数を見積もります。
ボトムアップ見積り
ボトムアップ見積りは、テストで発生する成果物の要素を洗い出して、成果物から必要な工数を見積もります。
TPA(Test Point Analysis)やWBSなどがあります。
パラメトリック見積り
パラメトリック見積りは、過去のプロジェクトで作成した見積など何かしらのパラメータを利用して見積る方法です。
メトリクスベースで、利用できるパラメータによって精度が変わります。
ファンクションポイント法やCOCOMO法などがあります。
比率を利用した見積では、開発工数とテスト工数の比率に基づいて見積もることもできます。
イテレーティブなSDLCで過去のイテレーションの平均工数を基に次のイテレーションの工数を予測して見積もります。
外挿
外挿は、ある限られたデータセットから得られたテスト結果をもとに、未知の条件下での性能や結果を推定して見積る方法です。
ワイドバンドデルファイ
ワイドバンドデルファイは、専門家の経験を利用してそこから必要な工数を見積もります。
アジャイルソフトウェア開発では、ワイドバンドデルファイのバリエーションとしてプランニングポーカーがあります。
カードを使用してチームの意見を反映しながら見積もっていきます。
三点見積り
三点見積りは、最良推定値、楽観値、悲観値の3点を利用して必要な工数を見積もります。
見積±誤差を求めることができ、最良推定値を「m」とし、楽観値を「a」とし、悲観値を「b」としたときに以下が計算式になります。
最良推定値を「m=6」で楽観値を「a=3」とし、悲観値を「b=15」とした場合は以下になります。
7±2人月(5~9人月)と見積もることができます。
テストメトリクス
テストメトリクスは、分析・レポート・テストコントロールで利用します。
メトリクスの測定手順は以下です。
目標設定
測定するメトリクスの目標値を設定します。
データ収集
テストプロセス中に必要なデータを収集します。
データ分析
収集したデータを分析し、メトリクスの値を計算します。
レポート作成
分析結果をレポートにまとめ、結果を可視化します。
改善提案
メトリクスの結果を基に、テストプロセスの改善提案を行います。
テストの進捗がメトリクスから遅延していると判断した場合、リソースの追加やリリース日の延期やテスト終了基準の緩和などのテストコントロールが必要です。
テストメトリクスは以下のカテゴリに分類されます。
-
プロジェクトメトリクス
テスト進捗を測定(実行済み、合格、不合格のテストケースの割合など、プロジェクト終了基準) テストマネージャーが重要視するメトリクス
-
プロダクトメトリクス
テスト範囲、欠陥密度など、プロダクトの属性を測定
-
プロセスメトリクス
テストで検出された欠陥の割合など、テストプロセスや開発プロセスの能力を測定
-
人的メトリクス
指定されたスケジュールでのテストケースの実施など、個人やグループの能力を測定
テストメトリクスは少なくても多くても良いわけではなく、必要なものを取得して不要なものは取得しないことが大切です。
テストマネージャがテストメトリクスを取得するときに考慮すべきことを以下に記載します。
- 有用なメトリクスに限定して使用し、すべてのステークホルダーから合意を得ること
- メトリクスを追跡し、逸脱する場合はその理由を入念に分析すること
- メトリクスを速やかに理解できる情報としてレポートすること
- データを提示する前に、正確性とデータから読み取れるメッセージを確認すること
テスト進捗のモニタリングには以下があります。
-
プロダクト品質リスク
テストが合格して対応されたリスクの割合
テストが不合格となるリスクの割合
テストが未完了となるリスクの割合
リスクカテゴリで分類して対応されたリスクの割合
リスク分析で識別したリスクの割合 -
欠陥
欠陥総数と解決済み欠陥数の比率
平均故障間隔と故障率
分類ごとの欠陥件数または割合
欠陥のレポートから解決までの時間
新たな欠陥の修正件数 -
テスト
テストケース数 回帰テスト・確認テストのステータス
計画したテスト時間と実施のテスト時間の比率
テストチームがテスト環境を使用できる計画と実際の時間の割合 -
カバレッジ
要件・設計要素のカバレッジ
リスクのカバレッジ
環境・構成のカバレッジ
コードカバレッジ -
確信度合
カバレッジを代替メトリックとして使用したり、主観的な報告になる場合がある
テストプロセス毎で必要なメトリクスを以下に記載します。
-
テスト計画
リスク、要件、テストベース要素のカバレッジ
欠陥検出
テストウェアの開発とテストケース実行に関する予実時間 -
テスト分析
識別されたテスト条件の数
テスト分析時に検出した欠陥の数 -
テスト設計
テストケースによりテスト条件を網羅している割合
テスト設計時に検出した欠陥の数 -
テスト実装
構築済みのテスト環境の割合
ロードしたテストデータレコードの割合
自動化したテストケースの割合 -
テスト実行
計画したテストケースにおける実行・合格・不合格の割合
実行または合格したテストケースにより網羅したテスト条件の割合
レポートまたは解決した欠陥数の予実と達成したカバレッジの計画と実数の比 -
テストの進捗および完了
計画したテスト条件、テストケース、テスト仕様の数
結果を合否別に分類した数
発生した欠陥総数を分類した数
変更の発生、受入、ビルド済み、テスト済みの数
計画上のコストと実際のコストとの比率
計画上の期間と実際の期間との比率
マイルストンの計画した日数と実際の日数
プロダクトリスクのステータス・軽減したのもの比率
不要になったテスト活動のコスト・時間の割合
確認テストと回帰テストのステータス -
テストの終了活動(テストの評価や終了レポートなどで使用)
実施したテストケース
合格したテストケース
不合格となったテストケース
ブロックしたテストケース
スキップしたテストケース
再利用可能なテストケースの比率
自動化したテストケースの割合
回帰テストに統合したテストケースの割合
解決済みの欠陥レポートと未解決の欠陥レポートの割合
テスト成果物で保管した割合
テストのビジネスバリュー
テストマネージャは、過剰または過少とならないようにテスト実施数を見極める必要があります。
テストは、組織・プロジェクト・運用に対して定量的と定性的の両面で価値をもたらします。
具体的には以下になります。
-
定量的な価値
リリース前に判明・予防・修正する欠陥の検出
テスト実行によるリスクの軽減
プロジェクト・プロセス・プロダクトステータスの情報提供 -
定性的な価値
品質による評判の向上
スムーズなリリース
確信度合の向上
法律上の免責
リスク軽減
テストマネージャーは、品質のコストを意識する必要があります。
同じ欠陥であれば、プロセスの早い工程で見つかったほうが対応するコストが少なくすみます。
リリース後に発見した欠陥を対応するコストは非常に高くなります。
品質コストでは、以下の4つのカテゴリに分類されます。
-
予防コスト
予防コスト保守性やセキュリティに優れたコードを書くためのトレーニングコスト
-
評価コスト
テストケース作成、テスト環境構成やレビューにかけたコスト
-
内部失敗コスト
リリース前にテストやレビューで見つかった欠陥の修正コスト
-
外部失敗コスト
リリース後に発覚した欠陥の修正コストとサポートコスト
優れたコストやROIなどコストの計算式を以下に記載します。
欠陥の検出率として、DDPがあります。
95%が高い値となります。
計算式は以下になります。
フェーズ内阻止
フェーズ内阻止は、ソフトウェア開発プロセスの中で、欠陥が発生したフェーズと同じフェーズ内で検出と修正をすることです。
ISTQBでは、メトリクスと定義されています。
同じ欠陥であれば、プロセスの早い工程で見つかったほうが対応するコストが少なくてすみますので、フェーズ内阻止が行えるようにテストマネジャーはコントールします。
分散テスト、アウトソーステスト、インソーステスト
プロジェクトが大きなテストでは、外部への委託など(アウトソースやオフショア対応)で、地域、時間帯、文化、言語の違いによるコミュニケーションの問題が発生します。
テストマネージャーは、テストチームが連携できるようにマネージメントすることが重要になります。
分散テスト
テスト活動が複数の地域で行われる場合
アウトソーステスト
プロジェクトチームが複数の地域にいて、同じ企業ではない
インソーステスト
プロジェクトチームは同じ地域に存在するが、同じ部署ではない
業界標準適用のマネジメント
テストマネージャーは業界標準の理解も必要です。
テスト計画書など業界標準のテンプレートも用意されています。
業界標準の一覧を以下に記載します。
国際標準
国際的な標準を目指す
国内標準
国際標準を国レベルで適用したものなど
ドメイン固有の標準
国際標準や国内標準を特定のドメインに適合
ISO(国際標準化機構)
各国の標準化機関で構成され、多くのソフトウェアテスト標準を推進
ISO 9126
ISO 9126は、ソフトウェアの品質を評価するための国際標準規格です。ソフトウェア品質を6つの主要な特性に分けて定義し、各特性に対して詳細な評価基準を提供します。機能性、信頼性、使用性、効率性、保守性、移植性の6つです。
ISO 12207
ISO 12207は、ソフトウェアライフサイクルプロセスに関する国際標準のフレームワークです。ソフトウェアの取得、供給、開発、運用、保守に至る一連のプロセスを標準化し、効率的かつ効果的なソフトウェアライフサイクル管理を支援します。
ISO 15504
ISO 15504は、プロセス評価モデルと呼ばれるソフトウェアプロセスの評価に関する国際標準です。この規格は、ソフトウェアプロセスの成熟度や能力を評価し、改善するための枠組みを提供します。
ISO 25010
ISO 25010は、ソフトウェア製品の品質と品質モデルに関する国際規格です。
IEEE(Institute of Electrical and Electronics Engineers、電気電子学会)
IEEEは、米国に拠点を置く専門家組織
世界100カ国以上から国の代表が参加
IEEE 829
IEEE 829は、ソフトウェアテストのドキュメントに関する国際規格で、テスト計画、テスト設計、テストケース、テストレポートなどの標準フォーマットを提供しています。
IEEE 1028
IEEE 1028は、ソフトウェアのレビューに関する国際規格です。ソフトウェアの品質向上を目的とした一連のレビュー手順を定義しています。レビューには、インスペクション、テクニカルレビュー、ウォークスルー、マネジメントレビュー、監査のレビュータイプがあります。
レビュータイプ以外にも参加者の役割や開始と終了基準などが記載されています。
IEEE 1044
IEEE 1044は、ソフトウェア障害報告のプロセスと、その障害の分類に関する国際規格です。この規格は、ソフトウェア障害の報告、追跡、分析、および防止のための一貫したアプローチを提供します。障害報告書、障害分類、障害管理プロセスがあります。
「認識」→「調査」→「対応」→「処理」のプロセスで行われます。
BS 7925-2
BS 7925-2は、英国の国内標準で特定の技術ドメイン固有の標準があり、ソフトウェアテスト、ソフトウェア品質、ソフトウェア開発に関連しています。コンポーネントテストに特化しています。
DO-178B(EU版はED 12B)
DO-178Bは航空関連システムでは米国連邦航空局の標準で、民間航空機で使用するソフトウェアに適用されます。この標準は、ソフトウェアの致命度に基づいて構造カバレッジ基準を規定しています。
Title 21 CFR
Title 21 CFRは、医療システムドメインの米国食品医薬品局(FDA)標準で、一定の構造的および機能的なテスト技法を推奨しています。
PMBOK
PMBOKは、PMIが実施しているヨーロッパで一般的に使用しているプロジェクトマネジメントフレームワークです。
PRINCE2
PRINCE2は、ヨーロッパで一般的に使用しているプロジェクトマネジメントフレームワークです。
ITIL
ITILは、ITグループが自分の所属する組織に価値あるサービスを確実に提供できるようにするフレームワークです。