
【ソフトウェアテスト】シナリオテスト
シナリオテストはユーザー視点で利用場面を想定し、操作フロー、入力値、発生する正常系挙動異常系挙動など、ユーザーが利用する一連の流れを想定したうえで発生しうるストーリーを元にテストを実施する手法です。
ブラックボックステスト技法はさまざまあり、あくまで無数に存在しうるテストケースから粒度や対象を整理抽出してより広く浅いテストケースを目指すようなものがほとんどです。
しかし、複数機能をもつシステムを実際に利用する際には、複数回の遷移を繰り返したりシステムが何重にも関連したりするので、1つの機能を対象としたテストや、2つ3つの機能間の関連をテストしただけでは、再現し得ないような組み合わせでの不具合が発生する懸念は常にあります。
フリーチェックやモンキーチェックなどと呼ばれるものも、結局は「ユーザーなら再現しうる」可能性を想定して実行するものですが、それを数値や手順を明確にしてより詳細にテストし、かつ明示することでその内容をテストの履歴としたり、テストの要件自体もレビューなどで評価対象とできることがこのシナリオテスト手法の利点と考えられます。
また、ユーザーのストーリーを元にテストするという点から、よりユーザーサイドでの視点から評価できるため、単純に欠陥を検出するのみならず、UI/UXの評価検討なども実施することができます。
1. シナリオテストとユースケーステスト

「【ソフトウェアテスト】ユースケーステスト」記事内にもシナリオテストについて少し触れていますが、ユースケーステストはあくまでシステム開発要件や機能仕様などのテスト対象から想定されるユースケースをテスト対象としていますが、シナリオテストはテスト対象がより広い範囲を対象とするもので、テストケースもユーザー操作で想定しうる具体的な内容にフォーカスします。
入力値や選択に際してもローレベルテストケースを設けて、具体的に期待値を明示した上でテストすることが望ましいとされています。
2. システム要件の一例

「【ソフトウェアテスト】ユースケーステスト」記事内で用いたシステム要件定義を使用して、ユースケースとシナリオテストでのテストケース粒度について確認していきます。
■課金機能追加実装のテスト要件
既に市場リリース済みのスマートフォン向けアプリケーションで、これまでアプリ内課金要素がなかったサービスですが、追加でアプリ内課金ができるシステムを開発し実装します。
ユーザーが実際に課金画面に遷移するまでのフローをテスト対象とします。
※スマートフォン向けアプリケーションのテストだが端末のiOS/Android OS指定は任意とする
・アプリのトップページ内に課金機能画面への導線ボタン[¥]が新規に追加される
・ユーザーが18歳以上なら、[¥]ボタンをタップした後に課金機能画面へ遷移する
・ユーザーが18歳未満なら、[¥]ボタンをタップした後にサービス利用不可ダイアログを表示し、課金画面には遷移せずトップ画面に戻る
・アプリログイン処理後からトップ画面遷移前までにユーザー情報を照会して18歳以上か未満かを判定する
3. シナリオの作成

上記仕様とテスト要件から、エンドユーザーが実際に踏むであろう操作フローを想定してシナリオを作成します。
テストケースを作成する上では、そのサービス自体の仕様の細部まで知っていないと想定できない部分があるため、実際にシナリオを作成する際は、シナリオに関わる部分の機能仕様を参照できる状況下での作成が不可欠になります。
例えば上記仮テスト要件から最初のユーザー操作を想定した場合、アプリのアップデート後のログイン操作から実行が必要になりますが、ログイン時にどのような入力値が必要かは、仕様書や実物のアプリを見ないと分かりません。
ここでは仮にメールアドレスとパスワードでログインすると仮定します。
※本来テスト実施の際はテストデータについても明示しますが今回は仮の値で記述します
仮テストデータ:ユーザー1
ログインメールアドレス[xxxxx@xxx.com]
ログインパスワード[xxxxxx]
サービス利用時の登録年齢:20歳
・シナリオ1
1. アプリのアップデート後にアプリを起動する
2. メールアドレス[xxxxx@xxx.com]を入力する
3.パスワード[xxxxxx]を入力する
4. ログインを実行する
5. アプリのトップページで[¥]ボタン表示を確認する
6.[¥]ボタンをタップする
7. 課金機能画面へ遷移する
上記で18歳以上のユーザーがアップデート後に実行する想定の手順を時系列に沿って作成できました。
4. 別パターンのシナリオ

さまざまなケースを想定する上で、基本となる正常なフローを元に、そこから想定しうる他のパターンのシナリオを作成します。
仮テストデータ:ユーザー2
ログインメールアドレス[yyyyy@yyy.com]
ログインパスワード[yyyyyy]
サービス利用時の登録年齢:16歳
・シナリオ2
1. アプリのアップデート後にアプリを起動する
2. メールアドレス[yyyyy@yyy.com]を入力する
3.パスワード[yyyyyy]を入力する
4. ログインを実行する
5. アプリのトップページで[¥]ボタン表示を確認する
6.[¥]ボタンをタップする