テストシナリオの作成方法とコツを解説!
システム開発プロジェクトにおいて、シナリオテストによる品質保証は欠かせないプロセスです。
その中でも、テストシナリオの作成はその精度を左右する重要な工程と言えるでしょう。
しかし、テストシナリオ作成に慣れていないエンジニアにとっては、具体的にどうやって作成すれば良いのか、どのような点に注意すれば良いのか、悩ましい問題かもしれません。
そこで今回はそんな悩みを解決すべく、テストシナリオ作成の基礎知識から実践的なテクニックまでを丁寧に解説します!
PractiTest(プラクティテスト)に関する
お問い合わせ
トライアルアカウントお申し込みや、製品デモの依頼、
機能についての問い合わせなどお気軽にお問い合わせください。
なぜテストシナリオが重要なのか?
テストシナリオの作成には以下の4つのメリットがあります。
・一連の流れの中で機能の整合性を確認できる ・役割が異なる複数のユーザーに対する動作を確認できる ・テストの網羅性を上げる ・システム全体への理解が深まる |
一連の流れの中で機能の整合性を確認できる
システム開発では、個々の機能が正しく動作するだけでなく、それらが組み合わさった際にも問題なく動作する必要があります。
テストシナリオは、ユーザーの実際の利用シーンを想定した一連の流れを確認するため、機能間の連携やデータの受け渡しなど、システム全体の整合性を検証するのに役立ちます。
これにより、機能単体でのテストでは見つけにくい潜在的な問題を早期に発見し、修正することができます。
役割が異なる複数のユーザーに対する動作を確認できる
システムによっては、管理者、一般ユーザー、ゲストユーザーなど、複数の役割を持つユーザーが存在し、それぞれに異なる権限や操作が許可されている場合があります。
テストシナリオでは、それぞれの役割を持つユーザーの視点に立って操作手順を記述することで、システムが要件通りに動作するかを多角的に検証できます。
これにより、特定のユーザーだけ操作ができない、あるいは予期せぬ権限を持っているといった問題を未然に防ぐことができます。
テストの網羅性を向上できる
テストシナリオを作成する過程では、システムの仕様書や要件定義書を詳細に確認し、ユーザーの利用シーンを多岐にわたって想定する必要があります。
これにより、考慮漏れや抜け落ちを防ぎ、テストケースの作成においても網羅性を高めることができます。
結果として、テストで見逃される不具合を減らし、システム全体の品質向上に貢献します。
システム全体への理解が深まる
特に経験の浅いエンジニアにとって、テストシナリオ作成はシステム全体の構造や機能を理解する絶好の機会となります。
要件定義書を読み解き、ユーザーの行動を予測し、期待される結果を定義することで、システム開発における重要なポイントを自然と学ぶことができます。
これにより、テスト設計能力だけでなく、開発者としてのスキルアップにも繋がります。
もう迷わない!具体的なテストシナリオ作成3ステップ
テストシナリオは
1.目的や前提条件を決める 2.ユーザーの意図と操作パターンを想定 3.テストすべき内容を書き出す |
という3ステップで作成することができます。
それぞれについて詳しくみていきましょう。
1.目的や前提条件を決める
テストシナリオ作成の第一歩は、「何のためにこのテストを行うのか」「どのような状況を想定しているのか」を明確にすることです。
目的
テストシナリオを作成する目的を明確にしましょう。例えば、「新規ユーザー登録機能の正常動作を確認する」「異常な入力値に対するシステムの挙動を確認する」など、具体的な目的を設定することで、テストシナリオの方向性を定めることができます。
前提条件
テストを実施する際の前提条件を明確にしましょう。例えば、「ユーザーは既に会員登録済みである」「データベースには予めテストデータが登録されている」など、テストシナリオを作成する上で必要な情報を整理しておくことで、後々の混乱を防ぐことができます。
2.ユーザーの意図と操作パターンを想定
システムを利用するユーザーの視点に立ち、「ユーザーはどのような目的でシステムを利用するのか」「どのような操作を行う可能性があるのか」を具体的にイメージすることが重要です。
ペルソナ設定
ユーザー像を具体的に定義することで、より現実に即したテストシナリオを作成することができます。年齢、性別、職業、利用目的などを設定し、ユーザーになりきって操作手順を考えてみましょう。
正常系と異常系のシナリオ
ユーザーがシステムを正常に利用するパターンだけでなく、誤った操作や予期せぬ入力を行うパターンも想定しましょう。これにより、システムの堅牢性を検証し、潜在的なバグを発見することができます。
3.テストすべき内容を書き出す
目的、前提条件、ユーザーの操作パターンを踏まえ、「具体的にどのようなテストを行うのか」を書き出していきます。
テスト項目
テスト対象となる機能や画面、項目などをリストアップします。
テストデータ
テストケースごとに必要な入力値やデータなどを定義します。正常な入力値だけでなく、境界値や異常値なども考慮しましょう。
期待結果
各テストケースにおいて、システムがどのように振る舞うべきかを明確に定義します。出力値、画面遷移、エラーメッセージなどを具体的に記述しましょう。
実践!テストシナリオ作成のポイントと注意点
テストシナリオ作成のポイントは以下の5つです。
・ユーザーの意図や背景を細分化する ・機能視点で作成しない ・時系列を意識する ・条件別でシナリオを作成する ・優先度別でシナリオを作成する |
それぞれについて詳しく解説していきます。
ユーザーの意図や背景を細分化する
システムを利用するユーザーは、それぞれ異なる目的や背景を持っています。
そのため、テストシナリオを作成する際には、ユーザーがシステムをどのような意図で、どのように操作するかを深く理解することが重要です。
例えば、ECサイトにおける購入機能であれば、
「急いで商品を購入したいユーザー」 「じっくりと商品を比較検討したいユーザー」 「過去に購入した商品をもうもう一度カートに入れたいユーザー」 「過去にカートに入れた商品を確認したいユーザー」 etc… |
など複数のユーザー像を想定し、それぞれの行動パターンに合わせたテストシナリオを作成することで、より現実に即したテストを実施することができます。
機能視点で作成しない
開発したシステムの機能や、想定している正常な操作、利用方法を起点としてシナリオを作成してしまうと、不具合が見つかりにくくなってしまいます。
ユーザーは必ずしも開発者の想定通りにシステムを利用するとは限りません。
誤った操作や予期せぬ入力を行う可能性も考慮し、様々な視点からテストシナリオを作成することが重要です。
時系列を意識する
ユーザーがシステムを利用する際には、特定の操作を単独で行うのではなく、一連の流れの中で複数の操作を行うことが一般的です。
そのため、テストシナリオを作成する際には、ユーザーの行動を時系列に沿って整理し、操作間の依存関係やデータの受け渡し、待機(放置)時間などについても考慮することが重要です。
これによりシステム全体の整合性を検証し、より現実に近いテストを実施することができます。
条件別でシナリオを作成する
システムの動作は、ユーザーの属性や環境、入力値など、様々な条件によって変化する可能性があります。
例えば、ECサイトであれば、会員登録の有無、購入商品の種類、支払い方法など、様々な条件によってシステムの挙動が異なる場合があります。
これらの条件を網羅的に洗い出し、それぞれに対応したテストシナリオを作成することで、システムの品質を多角的に検証することができます。
優先度別でシナリオを作成する
テストシナリオは、システムの規模や複雑さによっては、膨大な数になることもあります。
限られた時間の中で効率的にテストを実施するためには、テストシナリオに優先順位を設定し、重要なシナリオから順にテストを進めることが重要です。
優先順位の設定基準としては、発生頻度、影響度、重要度などが挙げられます。これらの基準を参考に、テストシナリオの取捨選択を行いましょう。
テストシナリオ作成の効率化テクニック
テストシナリオの作成は、システムの品質保証に不可欠なプロセスですが、一方で時間と手間がかかる作業でもあります。
・テンプレートを活用する ・過去のテストシナリオを再利用する |
これらのテクニックを活用することで、限られた時間の中でも質の高いテストシナリオを作成し、プロジェクト全体の効率を向上させることができます。
テンプレートを活用する
テストシナリオ作成の効率化において、テンプレートの活用は非常に有効な手段です。
テンプレートとは、あらかじめ定義されたテストシナリオのフォーマットであり、必要な項目や記述方法が定められています。
テンプレートを利用することで、以下のようなメリットがあります。
記述の統一化
テストシナリオの記述方法を統一することで、可読性を高め、レビューや修正をスムーズに行うことができます。
抜け漏れの防止
必要な項目があらかじめ定義されているため、テストシナリオ作成における抜け漏れを防ぐことができます。
作成時間の短縮
毎回ゼロから作成する必要がないため、テストシナリオ作成の時間を大幅に短縮することができます。
テンプレートは、インターネット上で様々なものが公開されています。また、チーム内で独自のテンプレートを作成し、共有することも効果的です。
過去のテストシナリオを再利用する
過去のプロジェクトで作成したテストシナリオを再利用することも、効率化に繋がります。
類似の機能やユースケースを持つシステムであれば、過去のテストシナリオを参考に、必要な箇所を修正・追記することで、新たなテストシナリオを作成することができます。
これにより、以下のようなメリットがあります。
作成時間の短縮
ゼロから作成する必要がないため、テストシナリオ作成の時間を大幅に短縮することができます。
品質の向上
過去のテストシナリオは、既にレビューや修正を経て品質が担保されている可能性が高いため、再利用することで新たなテストシナリオの品質向上にも繋がります。
知識の共有
過去のテストシナリオを再利用することで、チームメンバー間での知識共有やノウハウの継承にも役立ちます。
ただし、再利用する際には、システムの仕様変更や機能追加などを考慮し、必要な修正を加えることが重要です。過去のテストシナリオをそのまま流用するのではなく、あくまで参考資料として活用しましょう。
テストシナリオのテンプレート例
最後に、テストシナリオのテンプレートについてご紹介させていただきます。
項目 | 説明 |
①シナリオID | 「TS.001」など管理のしやすいユニークなIDをつけます。 |
②シナリオ名 | 「商品の検索と購入」などテストしたいユーザーの行動に合わせて内容のわかりやすい簡潔な名前をつけます。 |
③概要 | シナリオの目的や背景を簡単に説明します。 |
④前提条件 | 「ユーザーアカウントが作成済みであること」のようにシナリオを実行する前に満たす必要がある条件をリストします。 |
⑤使用するデータ | ユーザー情報や商品データのような、テストの実行に必要なデータをリストします。 |
⑥テスト手順 | シナリオの各ステップを詳細に記述します。 例:– ウェブサイトにアクセスする。– ログインボタンをクリックする。– ユーザー名とパスワードを入力し、ログインボタンを再度クリックする。– 商品検索ボックスにキーワードを入力し、検索ボタンをクリックする。– 検索結果から商品を選択し、カートに追加する。– カートに移動し、チェックアウトボタンをクリックする。– 支払い情報を入力し、注文を確定する。 |
⑦期待される結果 | 各ステップの結果として期待される動作を記述します。 例:– ウェブサイトのホームページが表示される。– ログイン画面が表示される。– ユーザーがログインし、ホームページに戻る。– 検索結果が表示される。– 選択した商品がカートに追加される。– カート画面で選択した商品が表示される。– 支払いが完了し、注文確認画面が表示される。 |
⑧テスト環境 | ブラウザ名やバージョン、OSといったテストを実行する環境の詳細を記載します。 |
⑨備考 | シナリオに関連するその他の情報や注意点を記載します。 |
⑩テスト結果 | 実際のテスト結果と、期待される結果との違いを記録します。 |
⑪不具合/バグ | テスト中に見つかった不具合やバグを記録し、詳細を説明します。必要に応じて、スクリーンショットやログなどの証拠も添付します。 |
⑫テスト担当者 | シナリオテストを実行した人の名前を記載します。 |
⑬テスト日付 | シナリオテストが実行された日付を記載します。 |
参考:https://cmc-japan.co.jp/blog/scenario-test/
まとめ
今回はテストシナリオ作成方法、効率化のコツなどを解説しました。
テストシナリオ作成は、システムの品質保証に不可欠なプロセスですが、一方で時間と手間がかかる作業でもあります。
しかし、この記事で紹介したポイントを押さえ、テンプレートや過去のテストシナリオを活用することで、効率的に質の高いテストシナリオを作成することが可能です。
テストシナリオ作成スキルを向上させることで、プロジェクト全体の品質向上に貢献し、チームメンバーからの信頼を得ることができるでしょう。
この記事が、あなたのテストシナリオ作成スキル向上の一助となれば幸いです。
テスト管理業務の効率化ならPractiTest
システムテストを効果的に行うためには、優れたテスト管理ツールの導入が不可欠です。PractiTestは、プロジェクトごとのカスタマイズ性やすでにあるテスト資産の再利用性、他ツールとの連携性にすぐれた総合テスト管理ツールであり、あらゆるテスト活動を一元管理することができます。システムの品質向上とテスト業務の効率化を図りたいと考えているなら、ぜひPractiTestの導入を検討してみてください!
PractiTest(プラクティテスト)に関する
お問い合わせ
トライアルアカウントお申し込みや、製品デモの依頼、
機能についての問い合わせなどお気軽にお問い合わせください。
この記事の監修
Dr.T。テストエンジニア。
PractiTestエバンジェリスト。
大学卒業後、外車純正Navi開発のテストエンジニアとしてキャリアをスタート。DTVチューナ開発会社、第三者検証会社等、数々のプロダクトの検証業務に従事。
2017年株式会社モンテカンポへ入社し、マネージメント業務の傍ら、自らもテストエンジニアとしテストコンサルやPractiTestの導入サポートなどを担当している。