リスクベースのテストの利点と欠点を理解する

Pragya Yadav 著

リスクは、自分が何をしているかを理解していないことから生じる

ウォーレン・バフェット

この原則は、ソフトウェアテストにも当てはまります。何を、そしてなぜテストしているのかを理解していなければ、重大なリスクに直面します。ソフトウェア製品では、リスクとは製品の品質に影響を与える欠陥の検出漏れです。その結果として失注や信用の失墜につながります。

製品の機能、動作、モジュールに障害が起きたときの影響を把握することが、リスクを特定するということです。リスクを特定したら、運用でエラーが起きるリスクを軽減または回避するためにテストに優先順位を付けます。このようなプロセス全体をリスクベースのテスト(RBT, Risk-Based Testing)と呼びます。

簡単に言えば、RBTでは、まず製品テストのうちリスクの高い領域を優先するという最適化を行い、実際のユーザーの期待どおり動作するよう保証します。これはアジャイル環境では完全に理にかなっています。なぜなら、アジャイルの短いスプリントでは、重大な欠陥のあるソフトウェアをリリースしてしまう事態を避けるため、選択的にテストを行うことが不可欠だからです。

リスクベースのテストとは

リスクとは何でしょうか? ソフトウェアテストの文脈では、リスクとは、運用環境におけるセキュリティ、機能、コンプライアンス、パフォーマンスに関する予期しないエラー(脅威)と定義できます。 

リスクベースのテスト(RBT)を実施すると、こういったリスクを特定し、評価できます。その後、最も重大なリスクが開発サイクルの早期に確実にテストされるようテストプロセスを進め、結果として運用環境でのリスクを避けます。

一般的に、RBTは次の状況に適用されます。

シナリオ説明
複雑なアプリケーション複数のコンポーネントで構成される複雑なソフトウェアでは、複雑なせいでエラーが起こりやすい領域を優先して集中的にテストします。
短いテスト期間スケジュールが厳しいプロジェクトでは、RBTによってテスト作業を最適化します。限られた時間の中で、重要な機能を特に重視します。
リスクの高いシステムリスクの高いシステムにRBTを適用し、潜在的な障害による重大な利益の逸失やデータの喪失を防ぎます。
予算的制約予算の制約の中で、RBTによってテストプロセスを最適化し、リソースを活用してテストの有効性を最大化します。
コンプライアンスおよび法令順守医療や金融などのドメインでは、RBTによって法令順守を保証し、適切にテスト作業を配分します。
過去の欠陥のデータ過去に欠陥が繰り返し起きているモジュールにテストを集中し、各テストサイクルで該当領域に特に注意します。
TestRail製品ページ

リスクベースのテストプロセス

以下はリスクベースのテストを効果的に実施するためのステップです。

ステップ 1: リスクの特定

アプリケーションのユーザビリティ、機能性、パフォーマンスなどに影響を与える可能性がある潜在的なリスクを特定します。過去のデータおよび要件文書、欠陥レポート、ユーザーストーリー、ステークホルダーへの聞き取り、ユーザーレビューなどからの情報を利用して、すべての潜在的リスクをまとめます。 

ステップ 2: リスクの分析

ステップ1で特定されたリスクを分析し、理解を深めます。分析には、リスクの可能性や影響の評価が含まれます。この評価は、ステークホルダー、ビジネスアナリスト、開発者、既存ユーザーなどとのディスカッションによって行われることがよくあります。これはリスクを完全に評価するための2ステップのプロセスです。

リスク分析 = 可能性 X 影響

「リスクの可能性」とはリスクが起きる確率であり、「リスクの影響」とはリスクが発生したときの結果の深刻さです。

ステップ 3: リスクの優先順位付け

次のステップでは、分析に基づいてリスクに優先順位を付けます。リスクの可能性と影響に基づいて、リスクの優先度をに分類します。優先度の高いリスクは、発生の可能性が高く、ビジネスに甚大な影響を与えます。優先度の高いリスクは、ただちに注意を向け、重点的にテストする必要があります。

ステップ 4: テスト計画および設計

リスクの優先度に基づいて、テスト戦略、スケジュール、テストケースの計画と設計を行います。リソース、ツール、タイムライン、パフォーマンステスト/機能テスト/セキュリティテストなどのテストのタイプを含む詳細なテスト計画を作成します。

ステップ 5: テスト実行

テスト戦略に基づいて、ハイリスクのテストからテストケースを実行します。テストの進捗をモニターし、欠陥を記録し、継続的にリスクを再評価します。

ステップ 6: リスクの再評価

プロジェクトのスコープや外部要因に変化があった場合、テストプロセスと並行してリスクの再評価と優先順位の見直しを行います。 

リスク分析を更新し、発生した変化を取り込みます。その後、更新された情報をもとに、優先度の高いリスクに対応するために妥当なテストケースを実行します。

ステップ 7: レポートおよびフィードバック

詳細な欠陥レポートのほか、テスト結果、リスク軽減対策の状況、対処するべき残存リスクを詳細に記述したレポートを準備します。この重要な情報は、リリースの可否に関してステークホルダーが情報に基づいた決定を行い、さらにリスク評価が必要かどうかを判断するのに役立ちます。

ステップ 8: テストのまとめ

テストサイクルの最後に全体的なリスクのステータスを評価します。最終的な製品リリースの受け入れに向けた最後のステップがステークホルダーからの終了承認です。残存リスクが許容範囲内であれば、顧客向けにリリースされます。

現実的なRBTプロセスの例

ソフトウェア開発のコンテキストでシナリオを検討してみましょう。

ステップ 1: リスクの特定

過去のデータ、要件文書、欠陥レポート、ユーザーストーリー、ステークホルダーへの聞き取り、ユーザーレビューを利用して潜在的リスクを特定します。

  • ユーザビリティ:チェックアウト時のブラウザーの互換性の問題
  • 機能性: 支払いゲートウェイの統合エラー
  • パフォーマンス: 取引時のユーザーデータのセキュリティ脆弱性

ステップ 2: リスクの分析

ステークホルダー、開発者、テスターとのディスカッションを通じて、特定されたリスクの可能性と影響を評価します。

可能性 x 影響: 支払いゲートウェイの問題は可能性が高く(複雑さにより)、影響が大きい(取引にとって致命的)と評価されます。

ステップ 3: リスクの優先順位付け

分析に基づいて、リスクを高、中、低に分類します。支払いゲートウェイ統合のリスクが優先度の高いリスクとして浮上したため、優先的なテスト対象となります。

ステップ 4: テスト計画および設計

さまざまなシナリオで支払いゲートウェイを重点的にテストし、セキュアな取引と複数のブラウザー間での互換性を確保するための詳細なテスト計画を作成します。

ステップ 5: テスト実行

優先度の高い支払いゲートウェイ統合のリスクからテストを開始し、問題を注意深くモニターし、欠陥を記録します。

ステップ 6: リスクの再評価

テストの進捗につれてリスクを再評価します。たとえば、潜在的なリスクとして、当初はピーク利用時のサーバーの過負荷が予想されていました。ところが、テストが進むにつれて、サーバーは負荷を適切に処理できていることがわかりました。そこで再評価が行われ、場合によってはサーバー過負荷のリスクの評価が下げられます。 

同時に、新たなリスクが判明します。負荷が高い時に特定の機能でパフォーマンスの低下が見られたため、さらに調査を行い軽減策を採る必要があると評価されました。

ステップ 7: レポートおよびフィードバック

欠陥、リスク軽減策のステータス、テスト結果に関する詳細なレポートを作成します。ステークホルダーは、この情報を利用し、リリース可否に関して情報に基づいて決定を行うことができます。

ステップ 8: テストのまとめ

テストサイクルの最後に全体的なリスクのステータスを評価します。残存リスクが許容範囲であることが確認され、ステークホルダーの承認を得て、ソフトウェアが顧客向けにリリースされました。

リスクベースのテストの利点

以下はRBTの利点です。

RBTの利点説明
効率的なリソース活用RBTはリスクの高い領域に集中することで、工数、テストツール、作業を最適化します。Eコマースサイトの立ち上げであれば、「支払い」や「カートへの追加」などの重要なモジュールにテストを集中させ、テストリソースを効率的に管理できます。
テスト品質の向上重要な機能を優先すると、全体的なソフトウェア品質が向上します。医師の予約アプリで患者データ処理にRBTの労力を集中すると、セキュアで正確な診察を保証できます。
早期にテストし、早いうちに失敗するリスクの高い欠陥を早期に検出できれば、開発の後期段階で大きなコストを節約できます。個人向けバンキングアプリで振込トランザクションの脆弱性を早期に捕捉できれば、潜在的な損失を防ぎ、信用を維持できます。
情報に基づくビジネス上の意思決定RBTは欠陥について、またリスクの高いモジュールのリリース可否に関して明確な洞察を提供し、情報に基づくリリースの意思決定を可能にします。ゲームアプリでリリースの前にRBTによってクロスプラットフォーム互換性をテストすると、複数のプラットフォームでシームレスなユーザーエクスペリエンスを保証できます。
リスク管理の強化体系的なリスク識別と評価は、テスト対象アプリケーション(AUT)のリスク管理を改善します。オンライン鉄道チケット予約Webサイトでは、RBTによってオーバーブッキングおよび予約取り消しエラーに関するリスクを識別し、軽減できます。
顧客中心ビジネスニーズおよび顧客の期待に合わせてテストを行うことで、ユーザーエクスペリエンスが向上します。動画ストリーミングアプリでユーザーのサブスクリプション管理を重点的にテストすると、収益とユーザー満足度が向上します。
変化への適応RBTは、アジャイル環境での変化する要件にすばやく適応し、テストプロセスの効果的な実行を確実にします。Eラーニングプラットフォームで、ソーシャルメディアでの認定証の共有などの新機能をすばやくテストして組み込むことは、ユーザーのニーズに合致します。
テストカバレッジの最適化リスクの高い領域に注力すると、限られたリソースで効率的にテストの広い範囲をカバーできます。高い安全性と信頼性が求められるオンラインバンキングシステムの開発では、重要な機能とリスクを重点的にテストすることで、確実な動作を保証しながら新しい機能を迅速にリリースできる可能性が高まります。
コスト削減影響の大きい欠陥を早期に検出すると、全体的なコストやリリース後の問題を減らすことができます。RBTによってCRMシステムをテストすると、リリース後の修正を大幅に減らし、顧客の信頼を促進するとともに、リリース後にパッチを適用するコストを削減できます。
コンプライアンス重要なコンプライアンス領域のテストを優先することで、規制のある業界でコンプライアンス基準を満たすのに役立ちます。Eコマースサイトでは、ホリデーセールに合わせ、トラフィック集中時のパフォーマンスに重要な複合的な領域をRBTによってテストすることで、テストカバレッジを最適化できます。

リスクベースのテストの欠点

以下はRBTの欠点です。

RBTの欠点説明
テストカバレッジの不足に関するリスクRBTはリスクの高い領域に注力するため、低リスク領域のテストが看過され、アプリケーションの全体的なエクスペリエンスに影響が出る可能性があります。複雑なアプリケーションでリスク評価に誤りがあると、テストプロセス全体が危険にさらされます。Eコマースサイトの開発で、決済機能などが重点的にテストされるいっぽう、低リスク領域とみなされたUIのテストが不十分だったために、サイトが使いづらく、ユーザーエクスペリエンスが損なわれる可能性があります。
人間の判断への過度な依存RBTは特定のチームメンバーからのフィードバックに依存することが多く、偏見や独断の影響を受ける可能性があり、プロセスの有効性が制限されます。開発者が特定のサードパーティ製品との統合で過去にネガティブな経験をしていると、客観的な分析によらずにリスクを過大評価する可能性があります。このような偏見が、認識されたリスクの軽減に過度に集中することにつながり、他の重要な領域が無視される可能性があります。
継続的な再評価が必要RBTではリスクを継続的に評価および識別する必要があるため、常に作業とリソースを必要とします。ゲームアプリでゲームのルール、コンテンツ、機能が急速に発展したため、競争力を保つために継続的なリスク評価が必要になり、チームの負担が増します。
新規アプリケーションでは有効ではない過去のデータや既存ユーザーからのフィードバックはリスク評価の重要な要素であるため、新規の開発では、これらの情報を利用できないことがRBTの課題になる場合があります。新しい仮想現実ゲームアプリでは、過去のデータが存在しないことで、リスク評価やRBTが難しくなります。
長期的リスクの見積りの誤りRBTは直近のリスクに集中するあまり、長期的なスケーラビリティの懸念や関連リスクなどを無視する場合があります。音楽および動画ストリーミングアプリのチームは、目下のライセンスリスクだけに集中し、音楽配信チャネルの拡大や関連リスクの懸念を過小評価する場合があります。
高度な知識と経験が必要RBTを導入するには、ドメインおよび技術に関する深い知識が必要であり、小規模なチームではそのような知識がないことが導入の課題になる可能性があります。ウェアラブルフィットネストラッカーを開発するスタートアップ企業は、ヘルスケアおよびIoTドメインに詳しい専門家が不足しているためにRBTを取り入れるのに苦労する可能性があります。
あらゆる状況に適合するソリューションではないRBTは、臨機応変な人間の関与が必要になる探索テストやユーザビリティテストなど、特定のテストタイプには適さない場合があります。ユーザビリティと直感性が重要な電子ブックリーダーには、臨機応変な人間の関与が欠けているRBTは適さない可能性があります。
複雑な協働的プロジェクトに対応できない複数のチームやステークホルダーが関わる複雑なプロジェクトでは、RBTを行うためにリスクに関して意見を一致させるのが難しい場合があります。大規模なERPプロジェクトのテストでは、複数のステークホルダーのリスクの受け止め方が異なり、RBTのために合意を形成するのが難しい場合があります。

アジャイルでリスクベースのテストを導入する際のベストプラクティス

アジャイル環境で開発するには、動的で協働的、柔軟なアプローチが必要です。それには、RBTを取り入れた反復的で素早く、継続的な開発およびテストが必要です。

アジャイルの原則にRBTを組み込む 

スプリント計画、デイリースタンドアップ、レトロスペクティブなどのアジャイル特有の活動に、定期的なプラクティスとしてリスク評価を取り入れます。すると、スプリントのゴールとテスト作業の整合性をとるのに役立ちます。

リスクの識別と評価を共同で行う

機能横断的な複数のチームのあらゆるメンバーをリスク評価および識別に関与させます。複数の観点を活かして広範なテスト戦略を定義します。

定期的にリスクを再評価する

スプリントごとにスコープの変更、環境、新機能、ユーザーフィードバックなどに基づいてリスクとテストの目標を再評価します。すると、次のスプリントで最も重要なリスクにフォーカスし続けるのに役立ちます。

リスクに基づいてテストに優先順位を付ける

スプリントを計画する際、まずリスクの高い機能に注力します。早期に重要な課題に対処し、各スプリントの終了時にソフトウェアがデリバリー可能であるようにします。

画像: TestRailを使用すると、リスクレベルに基づいてテストに優先度を割り当て、分類することができます。すると、RBTの原則に従って、リソースをより適切に計画して重要な領域に割り当てることができます。

アジャイルダッシュボードでのリスクメトリクスの使用

プロジェクト関連メトリクスを視覚化して提示するには、RBTメトリクスを使用します。RBTメトリクスはリスクの終結やステータスを追跡するのに役立ちます。それによって、すべてのステークホルダーに対してリスクの最新ステータスをより視覚的に提示します。

自動化を推進する

自動化の仕組みによってテストプロセス全体を加速し、一貫したテスト品質を維持します。 

アジャイルテストをサポートするテスト自動化ツールを使用すると、RBTプロセスをスピードアップし、コスト最適化されたソリューションを実現して品質を改善できます。testRigorなどの生成AIを取り入れた高機能なツールを利用してテストを自動化します。 

ユーザーストーリーとリスクの統合

ユーザーストーリーおよび受け入れ条件とリスクを統合することで、リスク管理とビジネス要件の整合性をとります。

リスクをCI/CDのガイドとして利用する

リスクをCI/CDパイプラインのロードマップとして使用し、リスクの高い領域を継続的にテストします。すると、各スプリントにおいて品質を維持し、優先度の高いリスクをカバーするのに役立ちます。 

テストケース管理ツールを使用する

TestRailなどのテスト管理ツールを利用すると、アジャイルへのRBTの導入を円滑化し、リスク識別、優先順位付けの精度を上げ、開発ライフサイクル全体を通じて重要領域を包括的にテストするのに役立ちます。

画像: TestRailのテスト実行機能を利用すると、テストの実行を追跡して管理できるため、リスクの高いテストが確実に実行され、効果的にモニターされます。

メトリクスを使用してアジャイルでのRBTの有効性を計測する方法

アジャイル環境でのRBTの有効性を計測するには、特定のメトリクスを利用します。以下は検討するべきメトリクスの例です。

メトリクス計算式
識別されたリスクの数識別されたリスクの数と重要度、現在のステータス
計画されたテストケース数 vs. スプリントで実行されたテストケース数計画されたテストケース数 / 実行されたテストケース数
成功したテストケース数 vs. 失敗したテストケース数成功したテストケース数 / 失敗したテストケース数
テスト作業の相違(計画されたテスト作業 – 実際のテスト作業) / 計画されたテスト作業 * 100
テストスケジュールの相違(計画されたテストスケジュール – 実際のテストスケジュール) / 計画されたテストスケジュール * 100
RBT用スプリントバーンダウンチャートスプリント期間に対してテストタスクの進捗をプロット
リスク識別率識別されたリスクの数 / 潜在的リスクの総数 * 100
リスク軽減率軽減されたリスクの数 / 識別されたリスクの数 * 100
リスクカバレッジリスクをカバーするテストケースの数 / 識別されたリスクの総 * 100
欠陥検出効率ハイリスク領域で検出された欠陥の数 / 検出された欠陥の総数 * 100
欠陥検出漏れ率運用/UAT で検出された欠陥の数 / 検出された欠陥の総数 * 100
テストカバレッジレポート計画されたテストケースの総数に対する実行されたテストケースの割合
リスクベースのテストレポートRBTのアクティビティ、カバレッジ、軽減対策を詳細に記述した包括的レポート
品質コスト(CoQ)予防コスト + 評価コスト + 失敗コスト

どのメトリクスを選択するかは、プロジェクトの目的、テストの目標、開発中のソフトウェア固有の性質に合わせる必要があることを忘れないでください。定期的にメトリクスを見直し、調整すると、アジャイルフレームワークの中で継続的にRBTプロセスを改善するのに役立ちます。

結論

リスクベースのテストは、スケジュールが厳しく動きの速いアジャイルなDevOps環境に欠かせません。ダイナミックな環境では、品質の高い製品と絶対的な顧客満足度が求められます。あらゆるチームメンバーがリスクの識別と軽減に主体的に取り組む、リスクに敏感なカルチャーを促進しましょう。すると、予防的なリスク管理が促進され、製品がより堅牢になります。

TestRailなどのテスト管理ツールがどのようにテスト戦略の最適化に役立ち、圧倒的な効率と有効性を実現するかを確認してください。

(この記事は、開発元Gurock社の Blog 「Understanding the Pros and Cons of Risk-Based Testing」2024年1月8日の翻訳記事です。)

関連する製品

テスト管理ツール TestRail

テストケースの管理やテスト結果の記録、チームでの情報共有など、Excelを使ったテスト管理の業務に限界を感じていませんか?TestRailはシンプルで使いやすいUIを提供し、テストにかかるさまざまな管理コストの削減に貢献します。

■ TestRailの特長 ■

  • テストにさまざまな情報を関連づけて一元管理
  • Webブラウザー上でテストケースを簡単に入力や編集可能
  • テスト実施の準備と結果の共有が容易
  • 進捗や比較などのレポートを提供
  • 要件 / 課題管理ツールやテスト自動化ツールと連携

日本国内では、テスト管理にExcelを使っていたお客さまからの乗り換えが多く、Web上で完結するテスト管理を実現されています。

TestRail でテスト管理のお悩みを解決しませんか?

eBook 公開中

Paul Gerrard著 効果的なテスト管理12の秘密 (日本語)

テスト計画やテスト管理に役立つ12のトピックを解説します。

詳細はこちら