前回の「テストの管理Vol.5 〜テストで考慮すべき2つのリスク〜」では、そもそもテストにおけるリスクの定義から、プロジェクトリスクとプロダクトリスクの詳細について解説しました。今回は、テストにおけるインシデントと、その管理方法についてご紹介します。
テストにおける「インシデント」とは
インシデントとは、状況や立場によってさまざまな定義に分かれますが、テストにおけるインシデントとは、JSTQBでは以下のように定義されています。
引用:発生した事象の中で、調査が必要なもの。
では、具体的に「調査が必要なもの」とは、どのようなものを指すのでしょうか。それは「期待した結果と異なる結果が得られたもの」を指します。また、インシデントと聞くと「バグに結びつく危険な存在」として認識されがちですが、あくまでも調査が必要なものであり、それ自体が悪い存在というわけではありません。
また、インシデントはテストだけでなく、開発段階からレビューの段階、そして実際に稼働している最中にも発生するものです。ここで見落としがちなのが、インシデントとはソフトウェアの挙動やソースコードの欠陥として現れるだけでなく、開発やテストのドキュメントといったテキストの中でも発生しうるものです。
インシデント管理の流れ
なぜテストにおけるインシデントには管理が必要なのでしょうか。まず、テストでインシデントが発生した場合、速やかに調査をおこない、それらがバグや欠陥に結びついていないか確認する必要があります。そして、それらがバグや欠陥と認識された場合、修正の対応が必要になります。そうなった場合、最初にインシデントが見つかってから、バグが修正されるまでの間、すべての情報にアクセスできる状況を作っておく必要があります。そのために管理が重要なのです。
テストにおけるインシデント管理のステップは、概ね以下のようになっています。
(1)インシデントが発覚したことを認識する
(2)インシデントを記録する
(3)インシデントの原因を調査する
(4)影響範囲を分析し、インシデントを分類する
(5)バグや欠陥だった場合、それらを修正する
(6)修正完了後、インシデントが再発しないか確認する
インシデントの記録
インシデントを管理するためには、発生したインシデントをすべて記録しておかなければなりません。しかし、このときに意識しなければいけないのが、インシデントを記録するのはテストを担当する人だけではないということです。
開発段階で見つかればエンジニアから、リリース後に見つかればユーザーや顧客からインシデントを記録することになります。そのため、インシデントがすべてソースコードの欠陥になるかというとそうではありません。
インシデントレポート
発生したすべてのインシデントを報告するドキュメントを「インシデントレポート」と呼びます。
インシデントレポートの目的
インシデントレポートを作成する目的には、以下のようなものがあります。
- インシデントの修正が必要な場合、開発やその他の関係者に対して問題を明らかにし、解決するための情報を提供する。
- テスト管理者に対し、テスト中のソフトウェアの品質を判定したり、テスト進捗を追跡するための情報を提供する。
- テストプロセスを改善するためのヒントを提供する。
特に、開発に対してインシデントの情報を提供するというのは分かりやすい目的だと思います。インシデントがバグや欠陥に結びついていないか調査し、もしバグや欠陥であった場合には修正してもらう必要があるからです。
また、インシデントレポートはテスト管理者にとっても重要な情報を提供してくれます。インシデントの数や状況によりテスト対象の品質が分かり、同時にテストの進捗やその後の実施計画の判断材料にもなるためです。
インシデントレポートの構成
インシデントレポートには、以下の項目を記載しておくことで管理に必要な情報が網羅できるようになります。
(1)インシデントレポートの識別番号
(2)インシデントの概要
(3)インシデントの詳細
(3.1)入力した内容
(3.2)本来の期待される結果
(3.3)実際に出力された結果
(3.4)異常の内容
(3.5)インシデントを検出した日付
(3.6)インシデントが発生したときの実行手順
(3.7)インシデントが発生した環境
(3.8)テスト担当者
(3.9)インシデント報告者(観測者・発見者)
(4)影響範囲
それぞれ、どのようなことを記載すればいいのか見ていきましょう。
(1)インシデントレポートの識別番号
インシデントレポートに付ける文書番号のことで、あとから参照できるように一意で管理されている必要があります。
(2)インシデントの概要
発生したインシデントの内容を簡潔にまとめます。ここまでは、実際に修正などを行うひと以外も目を通すことを意識しておきましょう。
(3)インシデントの詳細
ここからはインシデントを実際に修正する人が見るため、できるだけ詳細にインシデントの内容を伝える必要があります。ログの作成日時から、作成者や現在のステータス、インシデントを検出したテストとの紐付け、期待した結果と実際の結果、その他にもインシデントを検出したテストアイテムの情報なども記載しておくといいでしょう。「よくわからない現象」について的確に伝えることが重要です。
(4)影響範囲
影響範囲には「どのインシデントから解決すべきか」を判断するための大変重要な情報が揃っています。まずインシデントの範囲や重要度、優先順位があります。次にステークホルダーに対してどのような影響を与えるのか。最後に他の機能への不都合やバグを引き継ぐことがないかです。
インシデント管理のプロセス
インシデント管理のプロセスには「インシデントレポートの状態遷移に着目したプロセス」と「ワークフローに着目したプロセス」の2つがあり、それぞれにメリット・デメリットが存在しますが、ここではインシデントレポート状態遷移に着目したプロセスをご紹介します。
オープン
インシデントレポートの解決に着手したことを表します。
分析・割当
インシデントレポートの内容を分析し、必要な担当者にレポートを割り当てて修正を行います。
却下
開発担当者がインシデントを調査できない内容(情報不足や、誤った情報)だった場合にはレポートを却下します。
再テスト
問題箇所の修正が完了したら、インシデントが再発しないか確認のためのテストを行います。
失敗
確認のためのテストが失敗した(問題が解決されなかった)ときは、テストの失敗として、担当者へと差戻します。
クローズ
確認のためのテストに問題がなく、インシデントは解決されたと判断した場合、インシデントレポートをクローズします。
まとめ
ここまで、テストにおけるインシデントと、インシデントレポートを用いた管理方法についてご紹介しました。
・インシデントは、バグや欠陥の発見に繋がる貴重な情報
・インシデントは、きちんと管理されていることが重要
・インシデントレポートを用いて、製品の品質向上や効率化に結びつける
■テスト・検証に関する課題解決はお任せ下さい
弊社は、webサイトやスマホアプリ、クラウド製品、業務システムなどのソフトウェアにおけるテスト・検証を支援する、第三者検証サービスを提供しております。テスト管理に限らず、テスト・検証に関する課題がございましたら、お気軽にお問い合わせください。
■テストの管理に関するその他の解説記事
テストの管理Vol.1 〜テスト計画のレベルと内容を知る〜テストの管理Vol.2 〜テストの見積もり〜
テストの管理Vol.3 〜テストの進捗管理〜
テストの管理Vol.4 〜テストの構成管理〜
テストの管理Vol.5 〜テストで考慮すべき2つのリスク〜
テストの管理Vol.6 〜インシデント管理〜【本記事】
【参考文献】:
『ソフトウェアテスト教科書 JSTQB Foundation 第3版』