ソフトウエアテストで不具合を見逃す――。こうした問題が発生する原因の1つに、テスト設計で作成する「テストケース」がある。テストケースとは、テストの具体的な作業手順や期待結果をまとめたドキュメントだ。画面上でデータ入力したりボタンを押したりといったテストの実行はテストケースに沿って実行する。テストケースの出来が悪いと、確認すべき事項を確認しないままテストが終わってしまったり、テスト結果の合否判定を誤ってしまったりする。結果として不具合を見逃すことになる。あるSIベンダーの若手社員「ワカテくん」は、初めてのテストケース作成に挑んだ。
ワカテ:テストケース作成方針で決めた内容を基に、会社規定のフォーマットでテストケースを作成してみました。
センパイ:修正しないといけないポイントはあるけど、初めてにしては形になっているね。結構時間がかかったけど、迷いながら書いたのかな。
ワカテ:どれくらい細かく書けばいいのか、ずいぶん悩みました。自分がテスト実行を担当した経験から見ると、この内容でテスト実行できると思うのですが。
センパイ:テスト実行できるのかを意識して書いているのは大事なことだね。じゃあ、テストケースのそれぞれの項目についても一緒に確認していこうか。
テスト設計では、テスト実行に向けてテストケースを作成する。テストケースの記載に不足や曖昧さがあると、正しいテスト条件(テスト対象の状態や与えるデータなど)や手順でのテスト実行が困難になる。記載内容の粒度や明確さも重要だ。分かりづらい書き方になっていると、テスト実行者が実施手順に迷ってしまう、不具合があって不合格にすべきなのに合格にしてしまうといった問題の原因となる。
テスト計画、テストケース作成方針で決めた通りにテストを実行できるようにするためには、テストケースに以下の5つの要素が書かれていなければならない。これらが不明確であれば、確認すべき項目が漏れていることに気づけない恐れがある。テストを実施したとしても、テスト条件が不足していたり、期待結果の不適合に気づけなかったりする。
項目 | 説明 |
---|---|
テスト対象 | テストすべき対象 |
テスト観点・確認内容 | そのテストで確認したいこと |
テスト条件 | 与えるデータ、操作方法などのバリエーション |
テスト手順 | テストで確認すべき結果が出力されるまでの作業手順 |
期待値 | どのような結果になっていれば合格か、期待される結果 |
テストケースのフォーマットは現場によって異なる。ただ、フォーマットにかかわらず上記の5つの要素はテスト実行時に必ず考慮すべき事項となる。筆者が所属するSHIFTでは、以下のようにテスト実行に必須の5項目をテストケースに書くことを基本としている。
No | テスト対象 | テスト観点 | 確認内容 | テスト条件 | テスト手順 | 期待値 | ||
---|---|---|---|---|---|---|---|---|
画面 | エリア | 項目 | ||||||
テストケースは読み手を想定して書かなければならない。読み手としてはテスト実行者、ほかのテスト設計者、レビュアー、開発者が考えられる。こうした多様な読み手にテスト内容が伝わるようになっている必要がある。テストケースはどのようなテストを実施するかを明確にするために作成する。さまざまな読み手に理解できるように記述しておかなければ、作成する意味がなくなってしまう。
今回は以下のシステム仕様について、上記のフォーマットを使ってテストケースを作成していく方法を解説する。
(2)商品の種類は「通常商品」「特定日指定商品」の2種類が存在する。
(3)商品購入時、「お届け先」が日本国内で、「カート内商品」が通常商品の場合に、配送希望日時の選択を可能にする。
(4)「お届け先」が海外の場合、商品購入画面の「配送オプション」エリアに「配送希望日時を選択できません」と表示する。配送オプション画面では「配送希望日時を選択できません」と表示する。
(5)カート内に「特定日配送商品」が存在する場合、商品購入画面の「配送オプション」エリアでは、「配送希望日時を選択できません」と表示する。配送オプション画面では「配送希望日時を選択できません」と表示する。
テストケース作成方針は完了していて、テスト範囲、テスト観点、テスト条件は決まっているとしよう。テストケースの作成では、テスト観点ごとにテスト範囲を分解し、テスト条件に基づいて具体的な入力値や組み合わせパターンを考えていく。