本記事では「テストケースの作り方」についてご紹介します。
テストケースの基礎(概要・テストプロセス・テストシナリオの違いなど)から、必要な項目・作り方・注意点、洗い出し方法などを解説。
「テストケースを漏れなく網羅したい」「質の高いテストケースの書き方・作り方を知りたい」という方、必見の内容をお届けします。
テストケースとは
テストケースとは、ソフトウェアテストに際して用意する「実行条件や入力・出力データ、期待値や結果などの組み合わせ」を指します。
つまり、テストケース=「システムが意図した通りに動作するかを確認するために用意するものである」と言えます。
一般的には、ひとつのプログラムを検証するために複数のテストケースを作成するケースが大半です。
そのため万が一、テストケースに不備があった場合には以下のリスクが高まります。
- 確認事項をチェックできず、テストの意味がなくなる
- 妥当性が曖昧になり、テストの成否を誤ってしまう
- 結果として、システムの不具合・バグを見落す
テスト計画から実施までのプロセス
次に、「テスト計画から実施までのプロセス」についてご紹介します。
一般的な「テストのプロセス」は以下の通りです。
テストのプロセス
テスト計画:
テスト全体の方針・方向性、概要をまとめて記載します。
具体的には、目的・対象範囲・実施方法・テスト環境・テストスケジュールなどが挙げられます。
テスト設計:
テスト計画をもとに、どのようなテスト内容を実施するのかを明確化して記載します。
具体的な手順は以下の通りです。
テスト設計の手順
テスト実施:
仕様書をもとに、テストを実装・実行する
テストシナリオとテストケースの違い
テストシナリオと、テストケースの違いは「ドキュメントの内容」です。
テストシナリオでは「何をテストするか」を記載するのに対し、テストケースは「テストする方法」について記載します。その他の両者の違いは、以下の通りです。
テストシナリオ:
詳細なテストプロセスで構成されています。
テストケース:
特定のシステム・ソフトウェアテストに関する入力データ・実行条件・テスト手順・期待値・テスト結果の仕様で構成されています。
テストケースに必要な項目
テストケースは、テスト工程およびソフトウェア品質の成否を左右する重要なドキュメントです。
ここまでの内容をふまえ、「テストケースに必要な項目」をご紹介します。
テストケースを構成する項目は、以下の通りです。
テストケースを書く際には、最低限以下の項目を記載する必要があります。
テストケースに必要な項目
- テスト対象:
テストを行う対象となる機能・UIなど。 - テスト観点:
システムが正確に動作しているかを確認すべく、
「何をどのように検証すれば良いのか」という視点をまとめたもの。 - テスト条件:
テストの目的を達成するために満たすべき条件。前提条件とも言われる。 - 期待値:
テストを実装・実行し、どのような結果を求めるかを明確に文章化したもの
テストケースの作り方と注意点
次は、「テストケースの作り方と注意点」についてご紹介します。
テストケースを作成する際は、以下の点に注意しましょう。
テストケースを作るときの注意点
- テストケースを取捨選択する
- 異常系テストを組み込む
以上をふまえ、ここからは各注意点について解説します。
テストケースを取捨選択する
テストケースを作る際には、まず「テストケースを取捨選択すること」が大切です。テストケースを洗い出す上で、抜け漏れを防止し品質を向上すべく「網羅すること」が重要になります。
しかし、全てのケースを実施することは、現実的に不可能であることが大半です。
そのため、テストケースのコスト・質のバランスを考慮し、洗い出すべきテストケースに優先順位をつけるなどが重要かつ有効です。
異常系テストを組み込む
テストの分類には、正常系テストと異常系テストという分け方があります。
正常系テストでは、正しい入力値に対するシステム・ソフトウェアの動作確認をします。
一方で、異常系テストとは、「想定外の方法・誤入力など、仕様・動作のテスト条件(前提条件)をクリアしていない場合での動作・処理を、ユーザー視点を用いて行う確認」を指します。
ソフトウェアテストでは、テストケースにおける「ユーザー視点」の軽視が思わぬ不具合・バグに繋がるため、注意が必要です。
以上のことから、テストケースを作る際には上記の「異常系テスト」を組み込み、開発側の視点からユーザー視点に切り替えましょう。
テストケースを洗い出す方法
次は、「テストケースを洗い出す方法」についてご紹介します
テストケースの洗い出しには網羅性だけでなく、効率性も要となります。
一般的には、以下の方法が多く用いられています。
テストケースを洗い出す方法
- 同値分割
- 境界値分析
- 異常値分析
- デシジョンテーブル
- ランダムテスト
ここからは、上記の方法についてそれぞれ解説します。
同値分割
同値分割法とは、テストケース作成方法のひとつです。
主に、比較的少ないテスト回数で、広範囲での効率的なテストを可能にします。
具体的には、出力が同様になる入力値を各グループ(同値クラス)にまとめ、そのグループから代表値を1つ選択し、テストを実行します。
境界値分析
さらに、境界値分析もまたソフトウェアテストにおいてテストケース作成方法に含まれます。
具体的には、出力が同様になる入力値を各グループにまとめ、グループが隣接する境界やその前後の値を入力値として検証作業を行います。
ここでの境界値とは、「ある範囲の最小値もしくは最大値などの同値分割した領域の端となる値」を指します。
境界値テストでは、出力結果が変化する境界付近を重点的に検証することで、それらに潜む不具合・ミス(ヒューマンエラーなど)を効率的に検出し、プロジェクトに応じたテストケースを作成します。
また、境界値テストは同値分割法を行った後に、併用で実行されることも多々あります。
異常値分析
異常値分析とは、前述の「異常系テスト」と同様、ユーザー視点を用いてシステムに関する想定外の方法・誤入力などを考慮して行う分析方法です。
上記のような、仕様・動作のテスト条件(前提条件)をクリアしていない場合での挙動・動作を確認します。
デシジョンテーブル
デシジョンテーブルとは、論理関係をJIS規格の表形式で整理したものを指します。
システム・ソフトウェアの動作に関する「真・偽の組み合わせ・条件」を複数表にまとめて、それぞれの場合に対応する結果(どのような動作をするのか)を示したものです。
デシジョンテーブルの構成
デシジョンテーブルの例
ランダムテスト
ランダムテストとは、システム・ソフトウェアにランダムな入力値を用いて不具合・バグがないかを確認し、信頼性・性能を検証するものです。
また、ランダム入力に際しては、以下2つの方法があります。
- 疑似乱数生成アルゴリズムなどを活用する方法
- 手作業で適当な値を入力する方法
まとめ
いかがでしたでしょうか?
今回は「テストケースの作り方」についてご紹介しました。
テストケースの書き方・作り方を正確にイメージできるよう、基礎知識(概要・テストプロセス・テストシナリオの違いなど)から、必要な項目・作り方・注意点、洗い出し方法について解説しました。
本記事をきっかけに「テストケース」について、基礎から理解を深めることで、網羅性・妥当性の高いテスト実現にお役立ていただければ幸いです。
最後までお読みいただき、ありがとうございました。