支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • シナリオテストとは?詳しく解説させ

シナリオテストの概要について

ここでは、シナリオテストについて説明させていただきます。
シナリオテストはソフトウェアテストの技法の一つとして知られており、ユーザーが正しくシステムを利用することができるかという観点において実施されるテストとなります。
シナリオテストを理解するために、まずはテスト工程の全体像について把握しておく必要があります。 テストは単体テスト、結合テスト、システムテスト、ユーザーテストの工程から構成されており、シナリオテストはユーザーテストの際に利用されるケースが大半となります。 シナリオテストのシナリオは脚本という意味であり、脚本のように操作手順を作成し、これが正しく動作するかという点について確認を実施します。では、テストの各工程についても簡単に説明させていただきます。

テスト工程の最も最初の段階は単体テストとなります。 単体テストはユニットテストと呼ばれることもあり、 ユニット単位で検証を行い、モジュールやコンポーネント単位でのテストを実施するテストを指します。 単体テストのメリットとしては、モジュールやコンポーネント単位でテストを実施するため原因の特定と修正が容易があるということがあげられます。 単体テストの段階で不具合を見つけることで結合テスト以降の工程においてテストの手戻りを少なくすることなどが可能となるため、非常に重要な役割を担います。 正しい単体テストを実行することで品質の担保やテストの安定性を担保に直結する作業でもあります。 開発者がテストに関するドキュメントを参考にすることで、そのユニットの正常動作に必要不可欠な特性を理解することができるという点もメリットとしてあげておきます。 単体テストにおいてはユニットのAPIのドキュメントを確認することで 効率よくシステムを把握できるという一面もあります。 また、コードが設計通りであることや意図したとおりに動作できているかとう点を確認するため、ソフトウェア開発者の手により実行されるケースも多いです。
単体テストにおけるデメリットや注意点としては開発者が単体テストを実施することが多いため、 工数がかかりやすいという点です。 最近では単体テストは自動化するケースが増えているため、 開発者およびテスターが単体テストを実施する際にテスト自動化ツールなどの知識や経験が必要になることも少なくありません。 いずれにせよ単体テストの品質がプロジェクト全体に及ぼす影響は大きいため、 専門的な知識と配慮をもって単体テストを実施することは必須と言えるでしょう。
単体テスト計画は、単体テストの実装方法を概説したドキュメントです。これには、すべてのテストのリスト、テストを作成するユーザー、使用するツール、およびテストの完了にかかる時間が含まれます。 単体テストは可動部品が非常に多いため、効果的なユニットテスト計画を作成するのは難しい場合があります。 これをプロセスをより小さなステップに分割し、最初に最も重要なステップに焦点を合わせることが単体テスト計画では重要となります。

次に、結合テストでは、単体テストの次の工程としてモジュールを結合させた状態でのテストを実施することとなります。 モジュール間のインターフェース構造や結合についての動作の確認を実施し、 プログラムやモジュール間の構造やデータの受け渡しなどについて問題がないかという点について検証を行います。 単体テストではあくまでもモジュールやコーポネントの確認であり、それぞれの結合についてのテストは結合テストで受け持つという形がポイントです。 結合テストにはいくつか手法がありますが、その代表的な例であるトップダウンテストとボトムアップテスト について説明させていただきます。
トップダウンテストは上位のモジュールからテストを実施していく方法となります。 上位モジュールがテストを通過することで、該当モジュールから呼び出される下位モジュールのスタブを用意して検証を行います。 このフローを繰り返し、最下位のモジュールの検証を行いテストが完了となるのがトップダウンテストの手法となります。 上位のモジュールからテストを実施するため、プログラム機能の漏れを発見するのが容易であることがトップダウンテストのメリットとなります。
ボトムアップテストは下位のモジュールからテストを実施し、上位モジュールに対してテストを行っていく方法でトップダウンテストとは逆のアプローチとなります。 開発と同時にテストを実施できるというメリットがある一方で、不具合があった際の影響も多いのがボトムアップテストとなります。 どちらのテスト手法を選択するのかについてはシステム開発全体の特性や機能や規模など様々な要素を考慮し決定するといいでしょう。 結合テストでは、Webアプリケーションのテストを構築および維持するのに役立つツールが利用される ケースも少なくありません。 これらの結合テストツールはアプリケーションで記述されたコードに依存しないテストを作成するのに役立ちます。また、自動化された方法でテストを整理して実行する方法も提供します。

次に、システムテストは単体テスト、結合テストの次に実施するテスト工程で、開発者やテストエンジニアが全ての機能が揃った状態で様々なテストを行います。 V字モデルというモデルを参考にしていただくとご理解いただけますが、システムテストは要件定義の工程とリンクしております。 要件定義で決定した要件の内容に沿っているかという点について確認していくことになり、 要件定義書に記述した機能要件・非機能要件などをテストします。 システムテストのテストの種類は何通りかありますので、プロジェクトやテスト内容に応じてそれらを選定していきます。
機能テストでは、要件定義書に記述した機能について本番環境と同等の状態でシステム要件を満たしていることを検証します。 システムが機能要件通りに稼働することや、その他の機能が正しく動作するかという点について確認を実施するテストです。 構成テストでは、サポートされる各ソフトウェア構成とハードウェア構成に関するシステムのテストを行います。

次に、ユーザーテストは受け入れテストとも呼ばれるシステムテストを実施した後のテスト工程で、 運用環境やそれに近しい環境においてはユーザーが動作や品質などをチェックし、確認するテストとなります。 ユーザーテストはテスト工程における最終段階となり、シナリオテストはこの工程に行われることが多いです。 この工程ではクライアントの希望した機能が搭載されていることや、実際の運用環境でしっかりと稼働するかという点について確認を行う必要があります。
ユーザーテストでは思いもよらないトラブルやクライアントが利用できるかなど 様々な観点でテストを実施し、それらをベンダーサポートを行う必要があります。 開発したシステムがクライアントのニーズを満たせているかという点が最も重要となり、 リリース後の安定した運用にも影響してくる部分となりますので、ユーザーテストは非常に重要な工程であると理解しておく必要があります。 以上が簡単ではありますがテストに関する説明とさせていただきます。

さて、シナリオテストの重要なポイントとして、ユーザーからの視点によってテストが実施されるということです。
シナリオテストの知識や定義については、JSTQB(Japan Software Testing Qualifications Board)の定義する内容を参考に紹介させていただきます。 JSTQBは日本におけるソフトウェアテスト技術者資格認定の運営組織であり、各国のテスト技術者認定組織が参加しているISTQBの加盟組織です。 主催するJSTQB認定テスト技術者資格は日本国内のソフトウェアテスターにおいて最も標準的な資格として有名です。JSTQB認定テスト技術者資格を合格することで、ソフトウェア開発ライフサイクルの知識、さまざまなテスト方法と手法に関する知識、さまざまなテストにおける種類の欠陥とそれらを検出する方法の理解、関連する基準と規制に関する理解などの知識を獲得することができます。 つまり、JSTQBにおけるソフトウェアテストが国際的な標準であるという前提で紹介させていただきます。ISTQBにおけるシナリオテストは、ユースケーステストとほぼ同義で扱われており、簡単に説明するとユースケース図、ユースケース記述、業務フローなどをインプットして実施するユーザー視点のテストという扱いとなります。 以上が簡単ではありますがシナリオテストに関する説明とさせていただきます。

シナリオテストの作成手順について

シナリオテストの作成手順について説明させていただきます。
手順の一点目が目的を明確にすることです。 これはテストプロセスにも当てはまることではありますが、目的を明確にすることでテストの範囲を正確に決定することが可能となります。
手順の二点目がユーザーを明確にすることです。 企業内のどの担当者がどのようにシステムを利用するのかという点を明確にしないことには正しいシナリオテストを実施することは難しいでしょう。
手順の三点目が業務フローを正しく理解することになります。 業務フローを正しく理解することで、システムやテストの課題が見つかります。 ユーザーにインタビューするなどこれらを正しく理解することでしっかりとしたシナリオテストを作成することが可能となります。

次にシナリオテスト作成の手順について注意点を説明させていただきます。 ソフトウェアテストを実施する際にテスト設計の重要さはいうまでもありません。 JSTQBにおいてもテスト設計においては様々な形で説明されており、概要としては、テスト条件をハイレベルテストケース、ハイレベルテストケースのセット、およびその他のテストウェアへ落とし込み、テスト分析は「何をテストするか」を決定し、テスト設計は「それをどうテストするか」を決定することとされています。
シナリオテストはテスト設計が自由であるため、担当者のテスト設計によっては 無駄な工数がかかってしまうことや不必要なテストを盛り込んでしまうことなどに注意する必要があります。 ユーザー視点で考えた際に、全ての内容を網羅しようとすると工数が非常に膨らんでしまいます。 それを防ぐためには上記で伝えたように、担当者がしっかりとユーザの目的や業務を理解し ポイントを絞りこむ必要があります。
以上が簡単ではありますがシナリオテストの作成手順とさせていただきます。

シナリオテストに関する資格について

シナリオテストに関する資格について説明させていただきます。
最も関連性の高い資格の一つがJSTQB認定テスト技術者資格です。ソフトウェアのテストを認定する資格として最も有名なものの一つで、Advanced LevelとFoundation Leveの二つのレベルの試験に分類されております。

Foundation Level

JSTQB認定テスト技術者資格のFoundation Levelについて説明させていただきます。
この試験は、比較的エントリークラスの認定資格で、申し込むための基準として まずは志願者がソフトウェアテストに興味を持っていること、システムテストやユーザー受け入れテストなどのテスト担当、もしくはソフトウェア開発担当など、最低6ヵ月程度技術者としての経歴があること、また、ISTQBに加盟している各国の委員会によって認定された教育コースを受けていることが挙げられます。
Foundation Levelは テスト担当者、テストアナリスト、テストエンジニア、テストコンサルタント、テストマネージャー、ユーザー受け入れテスト担当者、ソフトウェア開発担当者などの職種で有効で、もしくはソフトウェアテストについて基本的な理解を望む方、プロジェクトマネージャー、品質管理マネージャー、ソフトウェア開発マネージャー、ビジネスアナリスト、IT 部門長、経営コンサルタントのような方のステップアップについて活用されるケースもあります。

Foundation Levelのテストは、テストの基礎、ソフトウェア開発ライフサイクル全体を通してのテスト、静的テスト、テスト技法、テストマネジメント、テスト支援ツールと6つの領域によって構成されておりますので、それぞれ解説させていただきます。
テストの基礎では、テストに関連する基本的な原則、テストが必要な理由、テスト目的、テストを成功させるための原則について出題されます。 テストプロセス、主要な活動、作業成果物についても問われます。 テストプロセスは、テストエンジニアにとって基礎的な知識となります。 これは問題を特定して修正することを目的とした、製品をテストする体系的な方法であり、品質保証とも呼ばれます。
効果的なテストプロセスには、次のようないくつかの重要なステップが含まれます。 一点目が実行するテストの範囲を定義することです。 二点目がテスト計画を立てテスト計画を実施することです。 三点目がテストを実行し、結果を収集することです。 これらの正確な計画を立案し、実行することがテストの品質に大きく影響するため、しっかりと基礎を抑えておく必要があります。

次に、ソフトウェア開発ライフサイクル全体を通してのテストでは、ソフトウェア開発ライフサイクルのすべての段階にテストが組み込まれることが出題されます。 また、さまざまなテストレベル、テストタイプ、メンテナンステストで作業する際の影響度分析についての理解が必要となります。 ソフトウェア開発ライフサイクルは、ソフトウェアを作成、テスト、および保守するプロセスです。これは、ソフトウェアが正常に完了し、ユーザーのニーズを満たしていることを確認するのに役立ちます。 ソフトウェア開発ライフサイクルには、設計、実装、保守の3つのフェーズがあります。 設計フェーズには、要件分析と高レベルの設計ドキュメントの作成が含まれます。実装フェーズには、高レベルの設計ドキュメントに従ってアプリケーションのコードを記述することが含まれます。 最後に、メンテナンスフェーズでは、アプリケーションにバグやエラーがないかテストされ、ユーザーにリリースされます。 近年のソフトウェア開発では様々な工程でテストが盛り込まれ、それらを前倒しで実施するなどテストおよびソフトウェア全般についての高い知見が求められるケースが増えております。 この項目をしっかり学習することで、そのような知識を身につけることができるでしょう。

次に、静的テストでは静的解析やレビュー(非形式的レビュー、ウォークスルー、テクニカルレビュー、インスペクション)など、さまざまな静的テスト技法に関する知識が問われます。 また、作業成果物の欠陥を検出するために、レビュー技法の適用方法を理解する必要があります。

次に、テスト技法では、ソフトウェア作業成果物からテストケースを導出するためにテスト技法の適用方法を理解する必要があります。 ソフトウェアテストを実施するにあたっては様々な方法がありプロジェクトによって柔軟に利用する必要があります。ブラックボックス、ホワイトボックスなどの一般的なテストに関する知識を理解する必要があります。

次に、テストマネジメントでは、テストを実施するだけでなく、管理や方向など様々な重要な内容について出題されます。 テストマネジメントは、リスクベースドテスト、テスト実行、欠陥の報告と対応など、テスト担当者がテストマネージャーと一緒に作業できるための知識が問われます。 また、テストにおいては様々な成果物がありますが、それらについても学びます。

最後に、テスト支援ツールに関しては、近年様々なテストツールが開発されてテストの効率化のために導入されております。 テストツールに関する知識を身につけることで、よりスムーズにソフトウェアテストを実行することができるようになります。
以上が簡単ではありますが、Foundation Levelの説明とさせていただきます。

Advanced Level

次にJSTQB認定テスト技術者資格のAdvanced Levelについて説明させていただきます。
Advanced Levelは、比較的上級者向けの試験となっており、一定のキャリアやスキルを有した方向けの認定資格となります。 この認定資格の対象者として想定される職種は、 テスト担当者、テストアナリスト、テストエンジニア、テストコンサルタント、テストマネージャ、ユーザ受け入れテスト担当者、ソフトウェア開発者などです。 また、プロジェクトマネージャ、品質管理マネージャ、ソフトウェア開発マネージャ、ビジネスアナリスト、IT部門長、経営コンサルタントなど業務上ソフトウェアテストに関連するビジネスマンがさらにスキルアップを狙うにも適した資格と言えるでしょう。さらに上位レベルであるExpert Levelを獲得することでさらなるキャリアアップを狙うことも可能となります。

では、Advanced Levelの出題内容について説明させていただきます。 テストプロセス、テストマネジメント、レビュー、欠陥マネジメント、テストプロセスの改善、テストツールおよび自動化、スタッフのスキル・チーム構成の7つの分野から構成されておりますので、それぞれ簡単に説明させていただきます。

まず、テストプロセスについて説明させていただきます。Foundation Levelにおいても テストプロセスについて出題されますが、Advanced Levelではさらに難易度の高い内容が出題されます。 特にテスト管理者やテストマネジメントを行う層に向けて必要な知識が問われる点がその特徴と言えるでしょう。 具体的には、テスト管理者が必要なテスト計画、テストモニタリングおよびテストコントロールのタスクの理解や実施といった点は最も重要な内容の一つです。 それだけでなくプロジェクトを過去に遡ってレビューする方法に加えて、プロセスの検証および改善部分の検出の方法を学ぶ必要があります。 ソフトウェアテストプロセスは、さまざまなステップとアクティビティで構成されており、それを改善する方法はたくさんあります。 一部の改善は小規模で段階的ですが、その他の改善にはテストプロセスの実行方法に大きな変更が含まれる場合があり、これらのアプローチはバクの削減、コスト削減、スキル向上など多くのメリットをチームにもたらします。

次に、テストマネジメントについて説明させていただきます。 テストマネジメントの内容は多岐に渡り、かつプロジェクトへの影響が大きいこともありJSTQBでもその扱いは大きく比重を置いている分野となります。 テストマネージャーにとって、プロジェクトの内容に従っていかにテストマネジメントタスクを定義するかを 学ぶことは必須となります。Advanced Levelのテストマネジメントでは、プロジェクトにおける多くステークホルダーの考慮して、ソフトウェアライフサイ クルモデルに対してテスト活動を調整することが求められております。 これらの知識は単純にソフトウェアテストやその品質に関わる部分のみだけでなく、管理における様々な知識が必要とされるものとなります。
さらに詳しく解説すると、リスクベースドテスト(RBT)におけるテスト優先順位付けおよび作業割り当てに関して詳細にカバーするための知識が必要となります。テスト対象およびプロジェクトにおけるリスクの識別、分析、アセスメントなどの他に特定の技法を学習する他、リスクレベルを評価してリスク軽減に必要な一連のテスト活動を定義する際にステークホルダーの視点を理解することも求められます。 また、それとセットとして適切なリスクコントロール活動を実行し、テストマネージャは顕在するリスク を判断する方法を学び、情報に基づいてリリース判断を下したことをプロジェクトステークホルダへ報告することも重要なミッションの一つとなります。 また、 テストマネージャは、様々なテストドキュメントを評価してプロジェクトおよび組織のニーズに合わせて カスタマイズする方法を学習することが求められます。

次に、レビューについて説明させていただきます。 テストマネージャーの活動の中でもレビューは非常に重要な役割を持っており、プロジェクトにおいて適切なレビュー計画を定義し実行することはプロジェクトの運営および品質に大きな影響を与えます。 そのためにテストマネージャーはメトリクスを使用してレビュー結果を最適化し、投資効果を示す方法を学習しレビューチームをどのようにリードするかを理解することが求められます。このようにソフトウェアテストのレビューに関する応用的かつ包括的な知識が出題されます。

次に、欠陥マネジメントについて説明させていただきます。 欠陥マネジメントは欠陥管理は、製品などの欠陥を特定して修正するプロセスです。 欠陥管理システムを持つことが重要である理由はたくさんあり、ソフトウェアのステータスの追跡、バグの特定と修正、品質の向上、およびソフトウェア開発プロセスのメトリックの作成に役立ちます。 特に組織にとって、これらの欠陥を特定して修正するための欠陥管理プロセスを実施することが重要であるため、 管理者は正しい理解をする必要があります。 欠陥追跡システムを作成する方法としては単純なスプレッドシートから、プロジェクト管理ソフトウェアと統合する、より複雑なシステムやツールまで多くのものが存在しますが、常にプロジェクトに見合ったテクノロジーを導入するといいでしょう。 テストマネージャーは、採用されたソフトウェアライフサイクルに合わせた欠陥ライフサイクルを構築する方法について深い理解が求められます。 テストマネージャーに必要は欠陥レポートを分析する際に習得すべきスキルを理解する必要があり、欠陥レポートの分析の目的は、テストおよびソフトウェア開発プロセスの能力を評価するためとなります。

次に、テストプロセスの改善に関する説明をさせていただきます。 テストマネージャーは、標準的なテストプロセス改善の取り組みを実行する一般的なステップに加えて、このステップを基にテスト改善計画を策定する方法を学習することが必要となります。 また、テストプロセス改善モデルである TMMi、TPI Next、CTPおよびSTEPについての知識が必要となります。 TMMiはテストプロセス改善のためのガイドラインとリファレンスをまとめたフレームワークとして知られております。
TMMiおよびCMMIは、組織がソフトウェア製品およびサービスの品質を向上させるのに役立つソフトウェア開発プロセスモデルです。 これは、開発プロセスのさまざまな側面を評価するために使用される一連のガイドラインとして、ソフトウェアテストなどで実行されます。 これらのガイドラインは、より優れた製品とサービスを提供する組織の能力を向上させるためにプロジェクトに導入されます。 リスク評価フレームワークは、リスクを特定、分析、および管理するための一連の手法とプロセスであり、組織に影響を与える可能性のあるリスクを特定して分析するための体系的なアプローチです。 これには、リスクの特定、リスク分析、およびリスク対応が含まれます。 このプロセスは、あらゆる種類の組織、あらゆる業界セクターまたはコンテキストに適用できます。このフレームワークの目的は、組織が直面しているリスクを特定し、それらを効果的に管理するための措置を講じることができるようにすることです。

最後に、テストツールおよび自動化について説明させていただきます。 テストマネージャーは、オープンソースおよびカスタムビルドのツールを含む様々なタイプのツールの選択を計画し導入できる必要があります。 また、Advanced Levelでは リスク、コスト、メリットおよび機会を的確に検討し、メトリックのデータ収集および評価のためのツールの活用についての理解についての知識が必要となります。 ソフトウェアテストは、ソフトウェアプログラムにバグ、エラー、欠陥がないことを確認する重要な工程で、顧客満足度を向上させるための重要なプロセスです。 人が手動で行うことも、ソフトウェアテストツールを使用して自動的に行うこともできますが、手動テストは時間と費用がかかるため、時間とお金を節約する目的で、最近では自動テストツールが広く使用されています。 特に近年では、アジャイル開発者DevOpsなどの考え方においてテスト工程の重要さが増してきていることもあり、多くのテスト自動ツールが開発され、導入されるプロジェクトが増えてきております。 Advanced Levelのテストツールおよび自動化では、テスト管理者およびテストエンジニアとして必要なテストツールや自動化ツールについての理解が必要となります。
以上がJSTQB認定テスト技術者資格のAdvanced Levelに関する説明とさせていただきます。

まとめ

いかがでしたでしょうか? シナリオテストについて説明させていただきましたので、 参考にしていただけましたら幸いです。