ソフトウェアテストの技法の中の一つに「シナリオテスト」があります。ソフトウェアテスト設計業務に携わる方が耳にして、まず頭に浮かぶのは「難しい、設計は避けたい…」というイメージではないでしょうか?機能テストとは違い、考えるポイントがいくつもあり、どこまで考えればカバレッジを確保できているのかも分からない。工数の見積もりも行いづらいのも「難しい、設計は避けたい…」と考えてしまう理由の一つかと思います。本記事ではシナリオテストの他のテストと比較した際の特徴や設計時の難しさ、そしてシナリオテストを設計する際のポイント・対策を解説していきます。
シナリオテストとテストシナリオをハッキリと定義します!
シナリオテストとは「システムテスト」におけるテスト技法のひとつです。「ブラックボックステスト技法」に分類されます。日本におけるソフトウェアテスト技術者資格認定の運営組織で各国のテスト技術者認定組織が参加しているISTQBの加盟組織であるJSTQBでは「ユースケーステスト」「ユーザーシナリオテスト」が同義とされています。しかし、そう言われてもよくわかりませんよね…。「なぜシナリオテストを行うのか?」から考えてみましょう。まず目的としては下記の3つが挙げられます。
【主なシナリオテストの目的】
- 業務が運用できることを確認したい
- 機能が連携していることを確認したい
- システム構成に問題がないことを確認したい
さらに、機能テストとの比較を行うため、ECサイトにおける例を示します。ECサイトのテストでも「会員登録」「商品購入」「決済」「在庫管理」などそれぞれの独立した機能をテストすることは”機能テスト”に分類されます。この機能を一括してつなげて行うECサイトサービスのテスト(例:「会員登録する」⇒「商品を選んで購入する」⇒「決済する」⇒「商品が発送される」)のようなものがシナリオテストと呼ばれます。
つまり、シナリオテストとはテスト対象の機能、システムが連動して動作した時、ユーザーの目的遂行を妨げる不具合を検出するテストです。またそれに似たような語句「テストシナリオ」はその一連の流れのことを言います。機能テストで言うところの「テストケース」にあたります。ここまで機能テストとシナリオテストとの比較を行ってきましたが一つ疑問が上がってくるかと思います。「シナリオテストで各機能についてもテストを行うのであれば機能テストは必要なくてシナリオテストだけ行うのではだめなの?」
この疑問への回答は「だめ」になります。理由としては機能テストが未実施でシナリオに関わる各機能に不具合があると、テストシナリオの中の以降のテストケースが実施できなくなるからです。またテストの進行が止まってしまうことがあるため、前提条件として「機能テストが終了している必要がある」のが多くなるのも理由です。
もし、新しくテスト支援を導入する場合にはコツがあります。テスト計画など立てる際にシナリオテストを導入する必要があるとわかった場合は、できるだけ前段として機能テストも組み込むようにご提案いただけると株が上がりますよ^^
シナリオテストが難しい理由
さて、ここまでシナリオテストについて機能テストとの比較を通して説明してきました。ここまでの説明でなんとなく察していただいているかもしれませんが、シナリオテストは設計が難しいのです。理由は様々あると思いますが、「テスト観点が思いつかない」のが大きな理由と言えるでしょう。この理由をもう少し深堀すると、「機能テストのテスト観点との違いが分からず、シナリオテストのテスト観点のイメージが漠然としていて思いつかない」ということになるかと思います。
シナリオテストに盛り込む機能が多すぎて、さらにその機能も細かく設定されているケースがあります。各機能ごとの特性については把握済みでもそのつながり次第で別の機能や観点が必要になるケースもあります。そもそも機能が多いのにもかかわらず、仕様書が存在しないケースもあるでしょう。シナリオテストは様々なパターンがあるので、難しくなるのです。
テストシナリオ作成とその対策
シナリオテスト設計が難しいことへの対策は、「シナリオテストのテスト観点を知ること」が大きなポイントです。そのために「シナリオテストのテスト観点の役割」と「機能テストのテスト観点との違い」を知る必要があります。例えば、機能テストであるシステムがあって、その中の会員登録機能についてテストするとしましょう。テスト観点として以下のようなものが挙げられ、それぞれのテスト観点についてテストケースを作成し、テストを行います。
<例:機能テストテストケース>
- レイアウト:名前入力欄の配置/〒入力欄の配置 は仕様通りか
- 入力(文字数):〒入力欄に8文字入力ができるか
- 入力(文字種):〒入力欄に半角数字とハイフンのみ入力できるか
それに対してシナリオテストのテスト観点では「機能毎のテスト観点の組み合わせ+テストしたい指針/方向性」によってテストシナリオを作成します。例として、ECサイト上の決済方法を追加し、その機能周りについてテストシナリオを作成するとしたら、以下のようなものが挙げられます。
<例:テストシナリオ>
- 通常会員で新規追加された決済方法で決済し、注文を行うと商品が無事にお客様へ届くか
- 法人会員で新規追加された決済方法で決済を行うと、法人割引は適用されるか
- 通常会員で新規追加された決済方法で決済し、注文後、返金を行うと返金が実行されるか
テストシナリオを考えるプロセスは下記の3点に注意しましょう。
【テストシナリオを考えるプロセス】
- そのシナリオをどのような観点でテストしたいのか(シナリオテストのテスト観点)
- そのためには各機能で何に着目すべきなのか
- それを踏まえてテストシナリオを作成
となるべきなのです。ここで押さえておきたいのが「機能テストのテスト観点との違い」です。主な違いは下記4点です。
テストに習熟した専門のエンジニアが、
お客様に必要なテスト計画・設計を立案します!
バルテスのテスト計画・設計支援サービス
【機能テストのテスト観点との違い】
- 対象/範囲が異なる
例:シナリオテストではECサイトの商品注文の流れにおいてフロントの機能もバックエンドの機能も見るが、機能テストではフロントの一部機能もしくはバックエンドの一部機能のみしか見ない、など
- 同じような観点もあるが捉え方が変わる
例:テスト観点として「ログ」があった場合、シナリオテストでは”任意のシナリオを行った際、行った一連の操作ログが取得できること”だが、機能テストでは”ログが取得できること”になる
- シナリオテスト特有の観点がある
例:運用シナリオの途中で特定のタイミングで処理や操作を行った時の動作が仕様通りであること(事前、事後、前日、当日、無断、直前、直後、D日経過後、Y年経過後など)
- シナリオテストでは確認しないテスト観点がある
例:「入力バリデーション」などが挙げられる。機能、画面が動作する前提でシステムを使う流れに着目するため
以上を踏まえたうえでテストシナリオを作成していきます。最終的にテストシナリオを抽出する際に、さらに押さえておきたいポイントを以下で説明します。
【テストシナリオで押さえておきたいポイント】
①インプット資料がない場合はテストチームで作成すべし
機能毎のインプット資料はあるが独立して存在するだけの場合が多いのでその時はテストチームで業務フローに準ずる資料を柔軟に作成する。
②シナリオは突き詰めると際限がないので十分なテスト粒度を見極めるべし
業務フローやテストパラメータを網羅しようとするとテストの量が膨大になってしまうため「機能及び業務要件が漏れなくテストできているか」「業務フローの分岐条件が考慮されているか」などについて着目し、テストの目的達成に適切な粒度を見極める。
③シナリオテストはステークホルダへの影響が大きいため早めに関係者に相談すべし
バッチ処理の実行、テストデータはどのチームが用意するのか、テストデータの用意にかかる時間はどうかを事前に確認する。
④テストデータ作成は入念に
テストケース作成後にテストデータの設計を行うと、制約条件によりテストできないテストケースを作成してしまう場合がある。テストシナリオパターンを作成する段階でテストデータの要件も抽出し、テストできないテストケースの作成を回避する。
⑤テスト設計の意図を明確化する意識を持つべし
シナリオテストは1つのシナリオ内のテストケース数が膨大になる場合がある。テスト設計をして成果物をお客様に見ていただくだけでは、そのシナリオの目的などテストの意図は、お客様には伝わらない。お客様が知りたいのはテストシナリオではなく、それぞれのテストシナリオの意図なので必ず一つ一つのテストシナリオに対して目的を明確にする。
⑥プロセスの重要ポイントを抑えるべし
シナリオテストはテスト設計プロセスにおいて多大な時間を費やすのでプロセスの重要ポイントを押さえて効率的に行う。
まとめ
「シナリオテストにおけるテストシナリオ作成とその対策」と題しまして、ご説明してまいりました。シナリオテストは機能テストに比べて条件が複雑になってくるため、難易度が高くなります。しかし弊社がここまで紹介してきたシナリオテストの観点をぜひ覚えておきましょう。押さえておくべきポイントを事前にしっかりと押さえて、シナリオテストの設計を実施してみてください。
また、シナリオテストの実行を行っている方は、ここまでお伝えしたポイントを押さえて、テストを実行してみましょう。そうすることで、次は自信をもって”シナリオテスト設計者”というワンランク上の存在にステップアップできるかと思います。
当サイトでは、テスト技法を学びたい方、アジャイル開発やマイグレーションのテスト手法について知りたい方、テストアウトソーシングサービスに興味のある方へ、ダウンロード資料を多数ご用意しております。ぜひダウンロードいただき、資料をご活用ください。