様々なソフトウェアが使用される近年ではユーザーの利便性や快適さが重要視されており、それらを損なうようなバグやエラーが発生しないソフトウェアが求められています。
ソフトウェアの品質管理に必要なソフトウェアテストの中でも、その成否を左右する重要な要素がテストケースの作成です。今回はテストケース作成のポイントを、成功パターンと失敗パターンとともにご紹介いたします。
テストケースとはなにか?
テストケースとは、プロジェクトにおけるテスト設計から、想定されるユーザーの行動・要件や手順、具体的な方法などを文章化したものです。テストを明確に記録することで実施内容の透明化やテスト漏れの防止に繋がります。
テストケースの作成では、はじめに対象となるソフトウェアを分析して詳細を把握し、考えられるテスト項目を抽出します。作成したテスト項目は優先度をつけて数が絞り込まれ、プロジェクトごとのテストケースとしてまとめられます。この工程で選ばれたテスト項目に対し、最小限のリソースで実施できるように作成することが求められます。
テストケースとは
テストケースの定義については、国際的な標準規格を定めている「IEEE Standard 829-1983」で定められています。この中ではテストケースは、プログラムやシステムなど各項目に対し、入力内容や予想結果、さらに実行された状態などを文章化するものとされています。
参照: 829-1983 – IEEE Standard for Software Test Documentation
ソフトウェアテストでは、プログラムやシステムを実際に動かし、テストした結果を検証します。何のためにソフトウェアテストを行うのかを事前に決めず、やみくもに作業させているだけでは、効果的なソフトウェアテストを行うことができないので、実施する目的や一定の判断基準が求められます。
テストケース作成の主な目的は、ソフトウェアテストの抜け漏れ防止と透明化です。
ユーザーによっては想定外の使い方をしてしまう可能性もあるので、ソフトウェアテストは開発者が個人の視点や判断で行うのではなく、誰でも同じ内容のテストを行うことができるよう、「この状態で、この動作をしたときには、このような結果になる」と内容を簡潔に記載する必要があります。
つまり、テストケースとは実際の操作内容を詳細に文章化したものです。テストケースに従ってテストが行われ、ソフトウェアの動作が正しいのかを判断する材料となります。
テストケースが必要な理由
テストケースが必要となる理由は、ソフトウェアテストの抜け漏れを防止と、実施するテストの内容や目的の透明化です。また、定められた実施期間や納期を守るための進捗管理もテストケースの役割の一つです。
ソフトウェアは、開発者の想像を超える使い方をされることが多々あります。そのため、システムエンジニアなど仕様書をもとに作成した開発者が考えうるテストケースだけでは、テストの抜け漏れが発生し大きなバグにつながってしまう可能性があります。
これを未然に防ぐためには、テスト設計の段階で目的を明確にし、必要な作業範囲や工数を納期・予算と掛け合わせ、テストケースを作成することが必要です。
また、リリース後にバグが見つかった場合には、開発工程に関わったエンジニアでも、どのようなテスト設計を行ったのかを把握しておくことが大切です。同じテストを行ってしまう二度手間を防ぐことだけではなく、追加のテスト実施を効率的に行うためにも、テストケースが利用されます。
こうして、テスト設計の順番や入力方法をまとめたテストケースに基づき、第三者視点から検証されたソフトウェアは、開発者の意図とユーザーの要望を満たす製品として、高い品質で世に送り出されます。
テストケースはどのように作成する?
それでは、テストケースはどのように作成するのでしょうか? 実際の作成方法を見ていきましょう。
ソフトウェアテストの種類
テスト手法には様々な種類があります。よく実施されるテスト手法から見ていきましょう。
・機能テスト
単一の、もしくは結合したプログラムが要求されている仕様どおりに目的を達成することができるか、確認します。
・スペックベーステスト
設計書や仕様書、またはマニュアルの記述に沿って、同等の機能が備わっているのかを確認します。
・ストレス(負荷)テスト
システムが耐えることができるストレス(負荷)値の最大値を検証するため、最大設計負荷、もしくはそれ以上の負荷の下で行うテストです。
・ドメインテスト
境界値分析などの複数の変数をテストします。連続した値や、数式で表すことができる関係にある値を扱う際に適しています。
・回帰テスト
大規模で複雑なプログラム構成においては、一見関連性がないプログラムの相互関係によって欠陥が発生する可能性があります。回帰テストでは、プログラムを変更したときに新たな不具合が起きていないか確認します。
・シナリオテスト
考えられる一般的な使われ方(シナリオ)を想定して、そのとおりに問題なく動作するのかテストします。
・ユーザーテスト
システムを利用するユーザーを対象とし、実際に使用してもらうテストです。開発者の視点からは見えなかった使い心地の悪さや、潜んでいた不具合を発見することができます。
・状態遷移テスト
仕様書で定められている画面や設定の移り変わりが、正しい条件になっているのかを確認します。特定の経路を辿ることで予期していない遷移が発生する、といったバグを検出しやすいです。
・探索的テスト
事前に作成したテストケースに従わずに、直前のテスト結果に応じて次のテストをしていきます。これによって、臨機応変にテスト項目を決めることが可能です。
よいテストケースの作成方法
よいテストケースである基準は、実施者が何度変わっても同じように利用できることです。操作の内容が曖昧にならないように言葉や意味を統一して記載することで、テストケースに従って同じ操作すれば、実施担当者が誰であっても同じ結果になることが期待できます。
例えば、検索エンジンで検索を行うというテストケースでは、操作手順が「キーワードを入れて検索」だけでは不十分です。この説明文では何をキーワードに入れたのかが、人によって異なる可能性があるためです。
テストケースを読んで、次の人がどのように操作をしてよいのか分からない部分があると、実施する内容が人によって変わる可能性があるため、よいテストケースとはいえなくなります。同じ結果を導くことができないのであれば、テストケースは意味を成さなくなります。
そのため、よいテストケースを作るためには「検索フォームに[求人]と入力し、検索ボタンをクリック」など、細かい行動を明文化する必要があります。これによって異なる人が操作をしても、同じ文字を入力し、同じ行動をさせることができます。
つまり、明確なトレーサビリティ(追跡可能性)があるのかがポイントとなります。さらに、期待される動作についても明確に記載しておくと、テスト結果を評価しやすくなり、よりよいテストケースとなるでしょう。
テストケースの失敗例
テストケースを作成する際によく取り上げられる失敗例を見てみましょう。どのような場合は失敗なのかを考えることで、次のテストケースを作る際に活かすことができるでしょう。
異常系テストの実施不足
代表的な失敗例は、数値の入力項目に文字を入力した場合や、エラー画面が表示されデーターベースに接続できない場合など、異常を引き起こす操作がなされるパターンの予測が足りないテストケースです。
実際に、システムの運用が開始されると、開発している側が予想していないパターンで入力や操作されることは少なくないでしょう。開発者が考える使い方と、ユーザーの考える使い方が同じであるとは限らず、人によって大きく異なることもあります。
テストケース作成の際に異常系テストが足りない場合、ユーザーに意図しない使われ方をしたときに思わぬバグが発生することになりかねません。
ユーザー観点でシステムや製品を見ることを忘れず、実際に操作しそうなあらゆる利用シーンを想像することが必要です。
開発者が思っていなかった使い方をユーザーがした際には、不具合が発生しやすいソフトウェアと評価される恐れもあります。
開発者側から見ると想像しにくい入力パターンや操作があると感じたなら、テストケースの作成を第三者に依頼することは一つの解決策となるでしょう。
不要なテストケースを作ってしまう
テストケースに漏れがないよう気をつかって作成し過ぎると、不要なテストケースを作りすぎてしまうことがあります。
想定されるシステムやソフトウェアの動作すべてを組み合わせると、大抵の場合、テストケースは天文学的な数になってしまいます。そのため、必要なテストケースを取捨選択しなければなりません。
もちろん、テストケースが不十分となる事態は避けなければなりませんが、あえてテストケースから外すこともまた必要です。
本来定めたテスト実施目的とは無関係な意味のないテストケースは外しておき、本当に必要なテストケースを選択します。すべてのケースを選択するためには、膨大な時間と手間が必要となり、作業リソースが不足してしまうからです。
このように、テストケースの作成は判断に迫られることが多く、テスト・品質案件では上流工程の基礎となるためスキルアップの第一歩となります。
さらには、テスト工程だけではなく開発工程を学ぶきっかけとなり、経験を積み重ねることで開発工程を把握することにもつながることでしょう。
「SOFTWARE JOBS(ソフトウェアジョブズ)」ではテストケース作成をはじめ、テスト・品質案件を中心に、上流工程のプロジェクトに関わるための、スキルアップとキャリアのチャンスを広げる案件を多数ご紹介しております。
経験を積みたい、スキルを身に着けたいとお考えの方はぜひ「SOFTWARE JOBS(ソフトウェアジョブズ)」で紹介している案件をご覧ください。
まとめ
テストケースの作成は、ソフトウェア品質向上の重要なポイントのひとつです。製品を世に送り出す前に考えられる不具合を、テストケースで明文化することによって潜在的な不具合・バグを発見し、対処することにつながります。
テストケース作成からソフトウェアの品質維持に関わっていることを意識し、テスト・品質案件に関わることは、高品質なソフトウェアを作る基礎を身に着けることにつながります。キャリア形成のための一つの手段としてご検討されてみてはいかがでしょうか。