はじめまして。テストエンジニアの藤江です。
2023年9月に現在の勤務先にJOINし、テスト実施管理者として顧客の課題やお困りごとに最前線で対応しています。
今回は、テスト実行・実施プロセスにおけるモニタリングとコントロールについてご紹介したいと思います。
これらはプロジェクトの成功に不可欠な要素です。
テスト実行・実施プロセスにおけるモニタリングとコントロールを適切に実施することで、問題の早期発見やプロジェクトの円滑な進行が可能となります。
【関連記事】テスト実施で知っておきたいSQLインジェクション
テスト実施・実行プロセスにおけるマネジメントのための事前準備
事前準備として重要なのは、マネジメントを行うための基準を決めることです。モニタリング及びコントロールのプロセスを最適化し、調整するための基準をテスト計画の段階で策定します。具体的には以下のような基準の調整を行います。
- テスト対象、テスト範囲、テストスケジュールの把握
テスト実行プロセスにおけるモニタリングを行う際には、現時点の状態を正しく把握し、問題を検出することが重要です。テスト計画の時点でテスト対象、テスト範囲、テストスケジュールについて合意を取り、計画と実績の差分を取れるようにします。 - モニタリング対象の選定とQCDバランスの合意
計画と実績の差分が取れるような基準を決めた後、テストの進行状況に合わせてモニタリングの対象を決めます。計画時には、上手く行かなかった場合の対応策を事前に決めておくことも重要です。QCD(品質(Quality)、コスト(Cost)、納期(Delivery))のうちどれを重視し、 - 計画との乖離がどれくらい出たら実行に移すのかを予め決めておくことが必要です。
- テストと開発が並行で実施される場合の留意点
テストと開発が並行している場合、開発側のスケジュールに影響してテスト計画を変更することもあるため、特にスケジュールに留意し、テスト実施のスケジュールだけでなく、実施の前提となっているシステム実装側のスケジュールも確認する必要があります。
モニタリングとコントロールとは
- モニタリング
対象の状態を連続または定期的に観測・記録し、監視し続けること。ソフトウェアテストにおいては、問題やエラーを早期に検知するためにテストの進捗状況や結果をリアルタイムで把握し、テストプロセスを最適化するためのデータを収集します。 - コントロール
対象を目的の状態にするために操作すること。ソフトウェアテストにおいては、テスト実行中に発生する問題への対処や修正を迅速に行い、テスト実行の流れを管理し、リソースやテスト実行プロセスに対する行動を調整します。
テスト実施・実行プロセスのマネジメントで行うモニタリングとコントロール
テストのモニタリングとコントロールに関して、JSTQB テストマネージャーのシラバス「2.3.4 テストプロセスにおけるテストの優先度付けと工数の割り当て」から一部抜粋します。
- テスト実行では、テスト計画作業で決定した優先度に従ってテストを実行すべきである。
- ただし、計画を作成した後で得られた情報に基づいて、定期的に優先度付けを更新することも重要である。
- テスト結果と終了基準ステータスを評価しレポートする場合、テストマネージャは、リスク、要件、利用方法プロファイル、およびチェックリストに関して、評価し、レポートする必要がある。
- さらに、テストを選択し優先度付けするために使用するそれ以外のガイドについても、評価し、レポートする必要がある。
- 必要に応じて、テストの優先度付け方式に基づいて、テストのトリアージ(実行順序判定)を行う必要がある。
ソフトウェア開発において、問題を迅速に検出し解決するためのモニタリングは、早期に問題を発見し修正するうえで非常に有益です。以下にいくつかのモニタリングの例を紹介します。
- 不具合箇所の早期発見
特定の不具合により実行できない箇所がないかを厳密にモニタリングします。これにより、開発プロセス全体において生じる影響を最小限に抑えることが可能です。
不具合によって実行できていない箇所をモニタリングするためには、試験項目のバックログ(BK)を不具合のチケット番号と紐付けし、各チケットごとに関連する試験項目数を一覧化することが有効です。これにより、不具合チケットによって何件のテストケースが実行できないかを把握し、効果的にモニタリングすることができます。 - 品質向上によるテスト効率改善
品質が低い場合、テスト効率を損なう原因となります。モニタリングを行い、品質が悪い箇所を特定し改善することでテストプロセス全体の効率を向上させます。
品質が悪い箇所をモニタリングするためには、不具合報告の際に予めさまざまな属性をタグ付けし、タグごとに集計したデータを確認する手法が有効です。これにより、特定の機能ブロックに不具合が集中している場合、その部分の改修を行うことで全体の効率を向上させることができます。 - 進捗状況の把握
テストの現状と目指しているゴールとの差分を常に確認し、周知することが重要です。全体の進捗状況を把握することで、チーム全体が同じゴールに向かって進むことができます。
計画との乖離を確認する方法としては、WBS(Work Breakdown Structure)による各機能のテスト進捗確認に加えて、EVM(Earned Value Management:実績と計画をコストの面から状況を把握する手法)を使用して、項目の消化状況と使用したコストが計画通りに進行しているかを確認することが有効です。この数値を日々確認することで、計画からの乖離が起きていないかをモニタリングすることができます。
これらのモニタリング手法を実践することで、ソフトウェアテストの実行状況を把握し、問題の早期発見とそれによる迅速な対応ができるようになります。
また、同様に問題を修正するためのコントロールも重要です。以下にいくつかのコントロールの例を紹介します。
- 実装スケジュールに併せての実施テストの入れ替え
開発の進捗に合わせてテストを調整し、特定の機能やコンポーネントのテストを実行する順番を変更することが重要です。リソースや時間の制約下で柔軟に対応することが必要です。具体的には、実装が遅れている機能のテストを後回しにして他のテスト実施を優先的に実施するといった対応を行います。 - 不具合にて実施できないテストスイートとの順番入れ替え
不具合の発生により特定のテストが実行できない場合、他のテストスイート(テストの目的や条件が似ている複数のテストケース)と順番を入れ替えて進行することで、効率的なテストの実施を維持します。 - 予め乖離が出た際に決めておいた合意に従っての変更
プロジェクトの進行において、予め設定された計画からの乖離が生じる可能性があります。その際には、事前に合意された方針や変更手順に従って適切に調整を行います。
例えば、テスト実施時に計画から3割以上の乖離を確認したら重要な機能テストにのみテスト実施者を集中させる、開発チーム側としてデバッグや修正を迅速に行うための専任の担当者を配置するといったことを実行します。
システム開発において、テストフェーズと実装フェーズが同時進行する際には以下の留意点が重要です。
- 開発側の実装スケジュールとの調整
開発チームの実装スケジュールとテストの実行を調整し、スムーズな進行を図る必要があります。 - 不具合の追跡と修正処理
開発者が修正を行うため、不具合の特定から修正までの速度を明確にし、リスクを管理することが欠かせません。 - デグレード等の検証
実装とテストが重なることから生じるデグレードなどのリスクに適切に対処し、品質を維持する必要があります。 - テスト結果に基づく意思決定
テスト中止やスケジュールの見直しの基準を適切に設定し、進捗状況をモニタリングして、プロジェクト全体の進行状況を把握します。
これらの留意点を踏まえ、開発とテストが同時進行する場合には適切な調整やコミュニケーションが不可欠です。異なるフェーズが連携して効果的な結果を生み出すためには、定期的なリポートやミーティングを通じて全体像を把握し、適切な対応を行うことが重要です。
イレギュラーケースの対応事例
様々な面からテストに関する要望が寄せられることが増えてきました。特にイレギュラーかつ重要な対応が求められる場面も多く、以下のような要望を頂くことがあります。
- 消化スケジュールに対する要望
要望内容: 人員を増やしてでも項目を早く消化してほしい。 検討事項: スケジュールの短縮はプロジェクトにとって重要です。迅速な対応のため、追加スタッフの配置や最適化を実施し、進捗を優先的に考える必要があります。 - 作業追加に対する要望
要望内容: 検出された不具合に関する優先度の高いものを精査してほしい。 検討事項: 高い優先度の不具合については適切な対応を行うため、検証プロセスを改善し、緊急性を優先的に考慮する必要があります。
これらの要望に対しては、以下の手順で支援を行っています。
- 品質保証の芯についての確認
テスト品質の中心部位を確実に把握し、対応を行うための基礎となる情報を整理します。具体的には優先順位の再整理として、絶対に落としたくない機能や超えてはいけない期日等を明確にしていきます。 - 後ろに控えている作業や要望の背景の確認
現在の要望の他に、背景に潜む問題や要求事項なども含めて把握します。何を求めているのか、要望を言葉通り捉えて良いのかといった点を特に確認します。
例えばですが、試験項目をもっと消化してほしいという要望があるとします。詳細なヒアリングを行ってみると、複雑な手順については開発チームでのツール導入を検討している。軽微な手順の箇所を先に終わらせてほしい。複雑な手順の項目に対して各テスターが仕様書を見て時間をかけないようが良いといった試験実施順序の入れ替えの要望だったりすることがあります。 - QCDのうち何をトレードオフとするのか
QCDに関して、何を優先し、何を譲歩するかを明確にします。例えば、単純にコストと納期の優先を要望されたので、品質を落とします。といったトレードオフは出来ず、トレードオフを行うにも納得してもらう必要があります。
具体的に納期の優先を要望された場合に、品質を落とすのであれば、試験実施のエビデンス取得手順及びエビデンス確認によるクロスチェックを止めます。これによって試験実施を行ったことに関する証左や後から実施内容のトレースが出来なくなってしまうことを了承してもらうといったトレードオフが必要になります。主なトレードオフとなりやすいのは以下となります。
・作業手順を減らす
・テスト環境を減らす
・テスト項目を減らす
どの場合もトレードオフのリスクについて同意を得る必要があります。 - 要望に対する具体的な対応案の作成
施策や改善策を具体的にまとめ、実行可能な提案を作成します。手順としてはトレードオフとなったことで、確保することができたリソースをどう分配するかを検討します。先ほどの納期優先のためにテストの手順を一部削減する例であれば、手順を削減することでどのくらい試験実施が進むのかを見積もり新しいスケジュールを作成、お客様と相談の上計画に問題ないかを確認します。 - 変更の経緯及び作業影響に関するテスト実施メンバーへの説明
変更の経緯や予定の変更箇所についてテスト実施メンバーに的確に説明し、スムーズな実行を促します。要望対応についてテスターとしてどのような対応が必要か、新しいスケジュールに関して何に意識を向ければ良いかを説明します。
こちらに関しても、先ほどの手順を削減する例であれば、削減した手順に関する説明とそれによって変更になった1日当たりの消化目標数等具体的な日々の作業がイメージできるように説明する必要があります。
まとめ
テスト実行時のモニタリングやコントロールの目的は、問題の早期発見と早期解決です。問題に対する解決が不十分であると顧客から判断されると様々な要望を頂くことがあります。要望を頂くということは、既に問題の発見と対応に失敗しかけている状況であり、そのような事態でもトレードオフや要望の背景を確認しながら進めることが重要です。
テストエンジニアとして、これらのポイントを意識しながら、顧客の期待に応えるために最善のテストプロセスを提供していきたいと考えています。