ユーザーのニーズが多様化している現代では、ソフトウェアテストの重要性も高まっています。中でも「シナリオテスト」は、ユーザーの満足度を高めるうえで欠かせません。
この記事では、シナリオテストの基礎知識からシナリオ作成の流れ、効率化する方法まで紹介します。
- もくじ
1.シナリオテストとは
シナリオテストとは、ユーザーのソフトウェアの使用状況を想定したストーリーのある遷移経路(=シナリオ)に沿って実施するテスト技法のことです。まずは、シナリオテストの特徴や目的、関連テスト技法との違いを見ていきましょう。
1-1 シナリオテストの特徴
シナリオテストの主な特徴は、次の2つです。
- ユーザー目線に立って実施する
- ソフトウェアの内部構造に着目しない
一般的な「シナリオ」には主人公が欠かせませんが、シナリオテストの主人公は「ソフトウェアのユーザー」です。ユーザーが快適に利用できることを確認するために、ユーザー目線に立ったシナリオを作成・実施することが大きな特徴です。
また、ユーザーはソフトウェアの内部構造までは把握できません。そのため、シナリオテストではソフトウェアの内部構造に着目せず、あくまでユーザーから見た振る舞いを確認することも特徴といえます。
1-2 シナリオテストを実施する目的
シナリオテストを実施する目的は、「ユーザーが満足できる品質であると保証すること」です。
ソフトウェアの機能は要件通りでも、ユーザーに寄り添った振る舞いでなければユーザーの満足度は向上しません。その点、シナリオテストはユーザーの利用を想定して実施するため、満足度を低下させる問題を効率的に検出できます。
また、シナリオテストはユーザーの実運用に近い環境で実施するため、前工程のテストでは発見が難しい不具合も検出できます。ユーザー満足度の向上はもちろん、ソフトウェアリリース後の不具合リスクを低減することも目的の一つです。
1-3 結合テストやシステムテスト、ユースケーステストとの違い
シナリオテストと混同されやすい3つのテスト技法の概要と、それらの違いは下表のとおりです。
概要 | シナリオテストとの違い | |
---|---|---|
結合テスト | 複数のプログラム要素を連携させた場合の動作を確認する | テスト範囲はソフトウェアの一部に限定される |
システムテスト | システム全体の振る舞い・性能が要件を満たすどうか確認する | シナリオテストの上位概念 |
ユースケーステスト | ユースケース(利用ケース)に沿って振る舞いを確認する | シナリオテストのほうが自由度は高い傾向がある(同一概念とする見方もある) |
結合テスト
結合テストは、モジュールやコンポーネントを組み合わせて実施しますが、テスト範囲はソフトウェアの一部に限定されます。
システムテスト
システムテストは、シナリオテストを包括するテスト技法です。ユーザーの利用を想定したテストに加えて、応答速度といったソフトウェアの性能面に着目したテストも含みます。
ユースケーステスト
ユースケーステストはユーザーの利用に着目するため、シナリオテストと同義とする見方もあります。ただし、ユースケースは利用状況に合わせて作成されますが、シナリオテストではユースケースには含まれないシナリオもテスト対象となりえます。そのためシナリオテストのほうが、より自由度は高いといえるでしょう。
2.シナリオテストのシナリオを作成する際の流れ
シナリオテストの実施にあたっては、シナリオの作成が欠かせません。シナリオ作成の流れはチーム・企業にもよりますが、大まかには次の3つのステップです。
- 業務フローを可視化する
- 必要なシナリオを洗い出す
- テストケースを作成する
ステップ1 業務フローを可視化する
まずはフロー図などを用い、ソフトウェアの業務フローを可視化します。つまり、ソフトウェアが何らかの機能を提供するうえで、どのようにプロセスが流れていくかを明確にすることです。
ユーザーはもちろん、ソフトウェアと連携する外部システムなども含めた、一連の流れを明確にする必要があります。業務フローを可視化することで、ソフトウェア内外における要素の関係性が明確となり、シナリオの洗い出しが容易となるでしょう。
ステップ2 必要なシナリオを洗い出す
可視化した業務フローをもとに、必要となるシナリオを洗い出します。シナリオの洗い出しでは、時系列や条件にフォーカスして考えることがポイントです。
たとえばネットショッピングシステムのシナリオを考える場合、ユーザーのサイト訪問から商品配送・決済までの時系列があります。途中でプロセスの順序が入れ替わったり、プロセスのタイミングが重なったり、といったシナリオも考えられるでしょう。
また、ユーザーの性別や年代によって使い方は変わってきますし、サーバーの負荷状況などによってソフトウェアの挙動は変わります。こうした条件をプラスしたときの変化も考慮して、シナリオを考えると良いでしょう。
ステップ3 テストケースを作成する
洗い出したシナリオから、より詳細なテストケースを作成します。シナリオの時系列や条件によって、具体的な確認手順や入力データ、期待結果などは変わります。こうした違いも考慮しながらテストケースに落とし込みましょう。
3.シナリオテストで失敗しないためのポイント
シナリオテストが上手くいかず、課題を感じているチームや企業も少なくありません。シナリオテストで失敗しないために、ここで紹介するポイントを押さえておきましょう。
3-1 シナリオの粒度を細かくし過ぎない
シナリオの粒度を細かくし過ぎないことは、シナリオテストの負担増大を抑えるポイントの一つです。
あまりにシナリオが細かいと、確認手順や期待結果などの記載内容が増え、テストケース作成の負担が大きくなります。また、テスト実行時にも多くのインプット情報が必要となり、テスターの負担増大も避けられません。
こうした負担増大を防ぐためには、粒度のバランスが重要です。シナリオの要所となる部分は掘り下げるべきですが、それほど重要でない部分の粒度はある程度高くても良いでしょう。
3-2 さまざまなユーザーが利用することを想定する
前述のとおり、ユーザー目線に立つことがシナリオテストでは重要です。さまざまなユーザーの利用を想定することが、シナリオの品質向上につながります。
ソフトウェアをマニュアル通りに使うユーザーばかりではありません。必要な手順をスキップしたり、想定しない外部ツールを用いたりするユーザーもいるでしょう。正規手順のシナリオしか実施しない場合、こうしたユーザーの満足度は向上しません。
より多くのユーザーを想定することで異常系のシナリオが充実し、不具合を見逃すリスクも低減するでしょう。
3-3 優先順位を付ける
テストケースに優先順位を付けることで、効率よくシナリオテストの成果を上げることが可能です。
ユーザーの行動やサブシステムの挙動などに加え、それらを組み合わせたシナリオを考えると、テストケース数の増加は避けられません。限られた工数のなかで、膨大なテストケースをすべて実行することは、現実的に困難といえます。
そのため、作成したテストケースの優先順位付けが重要となります。優先順位の高いテストケースから実施することで、クリティカルな不具合を検出しやすくなるでしょう。
4.シナリオテストを効率化する方法
上記のポイントを押さえたとしても、シナリオテストの負担は大きくなりがちです。シナリオテストを効率化するために、ここで紹介する3つの方法を取り入れることも検討しましょう。
4-1 テンプレートを活用する
テスト設計に使えるテンプレートを無料で提供しているWebサイトもあります。こうしたテンプレートを活用することで、シナリオテストにおけるテスト設計の効率化が可能です。テンプレートには実施手順や期待結果といった必要な項目が網羅・整理されているため、経験の少ない方でも迷わずに済み、テストケース作成の負担を減らせるでしょう。
4-2 サンプルを参考にする
シナリオテストの経験が少ない場合、サンプルを参考にするのが効果的です。たとえばIPA(情報処理推進機構)では、シナリオの抽出方法やテストの実施効果などのサンプルを公開しています。こうしたサンプルで有用な知識を増やすことで、シナリオの洗い出しやテストケースの作成などが容易となるでしょう。
4-3 自動化ツールを活用する
シナリオテストに関わる作業をツールで自動化するのも一つの方法です。たとえばテスト自動化ツール「T-DASH」を使うと、日本語で書いたテストケースをスクリプト化して、テスト実行を自動化できます。こうしたツールにより自動化することで、テスト担当者の労力を抑えながら、シナリオテストの成果を得ることが可能です。
まとめ:シナリオテストを効率化してソフトウェア品質を向上
シナリオテストとは、ソフトウェアの利用を想定した「シナリオ」に沿って実施するテスト技法です。ユーザー目線に立ったシナリオによりソフトウェアの不具合を効率的に検出でき、ユーザーの満足度向上につながります。
一方で、シナリオテストのテストケースは膨大になりやすく、開発工数を圧迫することも少なくありません。また、高品質なシナリオを作成できないと、期待ほどの成果が得られないこともあります。
とはいえ、シナリオテストはソフトウェアの品質向上に欠かせません。今回ご紹介したシナリオ作成の流れや失敗しないためのポイントを参考にしながら、効率的なシナリオテストを実現してみてください。
なお、シナリオテストの理解をより深めたい人は、無料でダウンロードできる以下の資料も参考にしてください。