テストケースはなぜ必要?目的や設定する項目を詳しく解説
COLUMN
最終更新日:2024年03月05日 / 投稿日:2024年03月05日
開発したソフトウェア・システムが期待通りに動作するか・不備がないかを確認するためにはテスト(ソフトウェアテスト・システムテスト)が欠かせません。そして、これらテストの具体的な手順や条件を文章化したものを「テストケース」と呼びます。
テストケースを作成しなければ、テストのスムーズな実施は期待できないと言っても過言ではありません。また、テストケースの読み手に内容が伝わるよう、分かりやすくまとめることも重要です。
そこで今回は、テストケースの概要から作成目的と種類、具体的な設定要件、さらにテストケースを洗い出す方法まで徹底解説します。システム開発に携わる方は、ぜひ参考にしてください。
1. テストケースとは?
テストケースとは、開発したソフトウェア・システムのテストを実施する際に用意するものです。いわば「プログラムが期待通り動作するかを確認するための手順をまとめた説明書」と言えます。テストケースには、テストの対象や操作手順、条件、利用データ、期待される結果などを記します。
ソフトウェアにおいては、新たに機能を開発した際や既存プログラムを変更した際、何らかの理由によって正常に動作しないケースも多々あります。正常にシステムが動作するかを確認するための工程をテストと呼びます。
テストケースは、このソフトウェアテストを正しく行うために欠かせないものであり、テストケースの有無が結果的に成果物の品質を左右すると言っても過言ではありません。
ソフトウェアテストとは?目的や7つの原則・工程別の種類を解説
1-1. テストケースを作成する目的
テストケースを作成する目的としては、主に下記の2点が挙げられます。
●過不足なくテストを実施するため
テストケースを作成する最大の目的は、「正常に稼働するソフトウェアであることの証明に向けて、過不足なくテストを実施するため」です。
テストケースを作成することで、あらゆる視点でのテストを漏れなく行うための準備ができるほか、進捗状況をテストチーム内で管理・共有できます。
また、有識者を中心とした第三者にテストケースを確認してもらうことで不要なテストも排除でき、無駄な人件費やリソースの削減にもつながるでしょう。
●誰が見てもテスト内容が分かるよう明確化するため
ソフトウェアテストをどのように実施したのか、誰が見ても分かるよう明確化することも、テストケースを作成する目的の1つと言えます。
ソフトウェアテストは、特定の担当者が実施するのではなく、項目ごとに複数の担当者が実施するのが基本です。テストケースがなければ操作手順をはじめとしたルールがない状態でテストを実施することとなり、担当者によって異なる結果が生じる可能性もあります。これでは、ソフトウェアが期待通りに動作しているかどうかを判断することが困難です。
テストケースを作成することによって、誰がテストを実施しても事前に定めておいた条件でスムーズに進められるほか、テスト結果の信頼性も向上します。また、万が一ソフトウェアテスト後にバグが発見されても、どのテストが原因となったのかをすぐに突き止めることができるでしょう。
1-2. テストケースの種類
テストケースとひとくちに言っても、記述粒度の違いによって「ハイレベルテストケース」と「ローレベルテストケース」の2種類に大別されます。
●ハイレベルテストケース
記載内容の抽象的なテストケースであり、具体的な記述粒度の実行条件・予測結果を用いません。作成コストが小さく修正による影響範囲も小さいものの、状況に応じて具体的な入力値を判断しながらテストを実施しなければならず、難易度はやや高くなっています。
●ローレベルテストケース
記載内容の具体的なテストケースであり、いわば「ハイレベルテストケースの入力データや予測結果に具体的な値を設定したもの」を指します。ハイレベルテストケースと反対に、作成コストが大きく保守性が低い一方で難易度が低く、ソフトウェアテストに慣れていない方でも手順通りに操作すれば実施できる点が特徴です。
テスト自動化ツールならATgo
1か月トライアル無料:詳細はこちら
2. テストケースで設定する要件
テストケースの作成時に設定する要件に明確な定めはなく、開発するソフトウェアによっても細かに異なります。
しかし、下記の項目は基本的に「どのようなケースでも設定すべき最低限必要な要件」と言えるでしょう。
- テスト対象
- テストで確認する内容
- テスト条件
- テスト手順
- 期待値
一つひとつの要件を細かに設定することでテスト計画の精度が高まり、作成者・開発者以外でも迷わずにテスト工程を進められます。
ここからは、それぞれの要件について詳しく紹介します。
2-1. テスト対象
基本的に、テストケースでは「テスト対象」、つまりテストで確認する対象を必ず記載します。
どこまで詳細に記載するかはテスト対象によって異なりますが、読み手に「どこをテストするのか」が伝わらなければ、以降のテスト項目を詳しく記載しても意味がありません。そのため、誰が見ても理解できることを意識してテスト方針を定めることが大切です。
例えば、「A画面の項目Bをテストする」というケースでは、「画面」と「項目」の2つの単位に分割して記載します。さらに項目B内の機能Cをテストしたい場合は3階層構造となるため、「画面」「項目」「機能」の3単位に段階分けしましょう。
2-2. テストで確認する内容
テスト対象を記載した後は、テストで確認する内容についても分かりやすく示します。
例えば、ECサイトのシステムテストにおいて、「カートに入れた商品の合計金額が一定を超えた場合、送料無料となるかを確認したい」というケースについて考えます。このケースでは、「送料無料の条件判定・適用」が主なテスト観点となります。
しかし、単純に「送料無料の条件判定・適用」と記載するだけではテストケースの読み手に正しく伝わらない可能性もあります。そのため、「カート内の商品合計額が○円以上となったときに送料無料が適用されるかを確認する」など、さらに具体的な確認内容を記載するようにしましょう。
2-3. テスト条件
テスト条件では、テスト結果に何らかの影響を及ぼす可能性のある要素を挙げていきます。テスト結果に何らかの影響を及ぼす可能性のある要素とは、テスト実施における前提条件・テストデータのほか、その他考えられる操作の方法・バリエーションのことです。
例えば、「高ランク会員限定で閲覧できるキャンペーンページについて、閲覧できるか確認したい」というテストケースを作成する場合で考えます。この場合は、「高ランク会員としてマイページにログインする」が前提条件となります。しかし、これだけではテストケースとして不十分と言えます。なぜなら、「高ランク会員以外が該当ページにアクセスできないこと」を確認できないためです。
何らかの影響を及ぼす可能性のある要素を漏れなくテストしなければなりません。そのためには、開発したソフトウェアやシステムを利用するユーザーの考えられる操作方法までしっかりと予測し、さまざまなパターンでのテストケースを作成する必要があります。
2-4. テスト手順
テスト条件を正しく設定したら、テストで確認したい結果が得られるまでに必要となる作業手順を詳しく記載します。
テスト手順を記載するときは、自分以外のテスト実行者が理解に苦しまず、誤りや漏れなく操作できるよう分かりやすくまとめることが大切です。
要件定義書やテスト仕様書に定義されている画面・項目名をそのまま使用したり、操作ごとに改行を入れたりするだけでも分かりやすさは格段に向上します。
2-5. 期待値
期待値とは、合格と判断できる具体的な結果のことです。「テスト実装後にどのような結果を得られていれば合格なのか」を分かりやすく記載しましょう。
なお、基本的に1つのテストケースに対して合格と判断する結果は1つとなるため、解釈が読み手によって異なってしまわないようできる限り簡潔に書くことも大切です。
3. テストケースを洗い出す方法
「テストケースの概要や設定要件については理解できたものの、テストケースを洗い出す方法が分からない」という方も多くいるでしょう。
スムーズかつ過不足のないテストの実施に向けて、適切なテストケースを効率よく洗い出す方法としては、境界値分析・同値分割・ペアワイズ法の3つがよく採用されています。
●境界値分析
出力が同様の結果となるような入力値をまとめた上で、隣接する境界や前後の値を入力してテストする手法です。バグや不具合が生じやすい有効値と無効値の境界を効率よく検出できます。
●同値分割
ブラックボックステストで用いられるテスト技法の1つで、「同値クラス」と呼ばれる同じ出力結果となる値のグループに区分してテストする手法です。入力値を同値クラスに振り分けることで、テストする値を絞り込めます。
●ペアワイズ法
組み合わせテストケース数を絞ってテストケースを作成する手法です。「ソフトウェアのバグ・不具合の多くが、1つまたは2つの因子の組み合わせで発生している」という統計が、ペアワイズ法の背景にあります。あらゆるパターンを網羅的にテストすると、膨大なテスト工数がかかるという場合によく用いられる手法となっています。
テスト対象やテストで確認したい内容によって、適切な手法を使い分けるとよいでしょう。
まとめ
テストケースとは、ソフトウェアテストの対象や確認内容、条件、期待される結果などを記したものです。つまり、プログラムが期待通り動作するかを確認するための手順をまとめた説明書のことを指します。
テストケース作成の際は、「誰が見ても理解できること」を意識することがポイントです。テストケースの設定要件を読み手に正しく伝えることができなければ、スムーズにテストを実施できなくなるほか、テスト品質が損なわれる可能性もあります。
テストの効率化を目指すなら、誰が読んでも理解できるテストケースの作成だけでなく、テスト自動化ツールやテスト管理ツールの導入・活用も有効です。