リスク

リスクとは、潜んでいる問題が表面化したときに、その問題がもたらす影響のことです。
発生しないまたは影響がないのであれば、リスクにはなりません。
ソフトウェア開発のリスクには大きく分けて、プロジェクトリスクとプロダクトリスクの2種類があります。

プロジェクトリスク

プロジェクトリスクとは、テスト環境・テストツール・テスト要員・スケジュール・コストなど、プロジェクト全体に影響を及ぼすリスクのことです。
プロジェクトリスクへの対応はリスク毎に検討し、以下の4つの対応方法があります。

プロダクトリスク

プロダクトリスクとは、開発中のソフトウェアにおいて、機能の不足や誤った処理によって悪影響が生じる可能性のあるリスクです。

リスクレベル

リスクには、レベルがあります。
このリスクレベルは、リスクが発生する可能性と発生した場合の影響度でレベルを決定します。
可能性と発生した場合の影響度は、定量的または定性的に評価します。

リスクベースドテストにおけるテストアナリストのタスク

ソフトウェアテストでもリスクについての考慮が必要です。
テストアナリストは、テストマネージャーからリスクの高い順にテストが実施できるようにするための作業が依頼されます。
このリスクの高い順にテストを実施することをリスクベースドアプローチ(リスクベースドテスト)といいます。
ソフトウェアテストで発生するリスクの全体的な責任はテストマネージャーが持ちます。

リスクベースドテスト

リスクベースドテストとは、前述したようにリスクを識別してリスク分析と評価を行いリスクレベルが高いものから順にテストを実施します。
リスクの可能性と発生した場合の影響度は、テスト中に検出された内容に応じてどちらの値も上下に変化することに注意が必要です。

リスクマトリクスを作成してリスクレベルを確定します。
リスクの優先度は、定量的なら発生した確率と影響の掛け算で求めたり、定性的なら低・中・高などのランクをつけることもあります。

以下表のようにリスク対象やエリアにリスク優先度を付けてテスト実施結果数を記載していきます。

リスク対象 リスク優先度 合格数 欠陥数 未実行
ログイン 10 2 1
ユーザ追加 15 1 1
ユーザ削除 10 4 11

テストの合格率は、合格したテストケース(10+15+10=35)÷総数(10+2+1+15+1+1+10+4+1=55)=63.6%となります。
リスク優先度が高と中のみの合格率は、合格したテストケース(10+15=25)÷(10+2+1+15+1+1=30)=83.3%となります。
例えば、テストの終了基準をリスク優先度が高と中の合格率を80%以上としていれば終了基準を満たします。

テストの実施率は、合格と欠陥のテストケース(10+2+15+1+10+4=42)÷総数(10+2+1+15+1+1+10+4+1=55)=76.3%となります。
例えば、テストの終了基準でテスト実施率を75%以上としていれば終了基準を満たします。

テストアナリストのリスクベーステストのタスク

リスクベーステストでは以下のリスクの流れで作業を行っていきます。

1

リスク識別

発生するリスクを特定します。重要なリスクを多く検出することが大切です。
検出するには、リスクを識別する技法などを使用して識別します。

2

リスクアセスメント

識別されたリスクを分析してリスク分類とリスクレベルを判定します。
プロジェクトリスク、プロダクトリスクやリスクが発生する可能性とリスクが発生した場合の影響を意識する必要があります。
担当者も割り当てます。

3

リスク軽減

リスクに応じてテストの計画・実装・実行を行います。リスクレベルに応じてテスト工数やテスト技法を考慮します。

4

リスクマネジメント

リスクレベルに応じた対策、残存リスクへの対応、リスクに応じたテストへの優先付けをテストのライフサイクルで実施します。
テスト対象の残存リスクを評価するには、テスト結果とリスクのトレサビリティを利用します。

テストアナリストは、リスクの識別、リスクアセスメント、リスク軽減を実行します。
テストライフサイクル中に新たなリスクやリスクの優先度が変更された場合には適宜対応していきます。

アジャイルソフトウェア開発では、リスク識別、リスクアセスメント、リスク軽減のタスクをイテレーションまたはリリースに焦点を当ててリスクセッションで組み込んでいきます。
リスクセッションとは、プロジェクトリスクやプロダクトリスクに関連するリスクを特定し、評価し、対応策を検討するためにワークショップを開催することです。
通常、プロジェクトの初期に実施したり、リスクが変更されたときに実施します。

リスク識別

テストアナリストは、リスク識別で発生するリスクを特定する必要があります。
テストアナリストがリスクを識別するための技法を以下に記載します。

テストアナリストは、担当するソフトウェア品質特性でリスク担当として割り振られますのでリスクを識別します。
ソフトウェア品質特性の詳細は、その章を参照してください。

リスクアセスメント

テストアナリストは、識別されたリスクを分析してリスク分類とリスクレベルを判定します。
リスクレベルを決定するには、システムをリリースして実際に発生してしまう可能性と発生した場合に与える影響を想定して評価します。

テストアナリストは、リスク識別で識別したリスクアイテムがビジネスベースで影響を識別・評価して貢献します。
テクニカルテストアナリストは、リスクアイテムの検出とその可能性を理解して貢献します。

ビジネスリスクに影響する要因を以下に記載します。

テストの優先度は、利用可能なリスク情報とテストマネージャーから提供されたガイドラインからビジネスリスクを確立します。

リスク軽減

テストアナリストは、次のタスクを実行してリスクを軽減します。

テストの優先度付け

テストケースの優先度付けは、テストマネージャーがステークホルダーの影響から決定したリスクレベルを使用します。
高いリスク領域は、専門家と協力してサンプルデータを収集やリスクの検証が必要です。

テスト対象の使用性に大きなリスクがある場合、ユーザー受け入れテストより前に発見できるのならば早期発見が望ましいです。
例えば、ユーザー受け入れテストより前のシステムテストの使用性テストでリスクが軽減します。

リスクを軽減するアプローチとして、高リスクのテストケースを先に実行する「縦型探索」と、すべてのリスク領域をカバーする「横型探索」の2つがあります。

縦型探索

縦型探索は、リスクレベルの高いものからリスクに対して実施します。

縦型探索

横型探索

横型探索は、リスク全体を実施していきます。サンプリングアプローチでは、全てのリスクを少なくても1回はカバーするように実施します。

縦型探索

テストは有限ではないですので、すべてのテストが行えないことはあります。
その場合、テストアナリストは残りのリスクレベルをテストマネージャーに報告します。
テストの延長やリスクの移転の判断を委ねます。

将来のテストサイクルに向けたテストの調整

リスクアセスメントは、定期的に実施する必要があります。
定期的に実施したときに考慮する内容を以下に記載します。

リスクマネジメント

リスクマネジメントは、組織が目的を達成する可能性を高めるために、プロダクトの品質を向上させて、ステークホルダーの信頼と信用を高める活動です。
テスト活動のアプローチでは、リスク分析とリスクコントロールに基づいてテストの優先順位を付けとマネジメントを行うリスクベースドテストがあります。
テストマネージャーの作業のため、詳細はテストマネージャーの章で説明します。

リスク分析

リスク識別とリスクアセスメントを行います。

リスクコントロール

リスク軽減とリスクモニタリングを行います。