失敗しないテストケースの作り方と、効率よくテストを進める方法

最終更新日:

テスト工程は、ソフトウエアの品質を高める上でとても大切な工程です。
しかし、実際の現場では、プロジェクトの予算やスケジュールの都合で、テストに割ける時間が短く、十分なテストを行えないことに、頭を抱えている方も多いのではないでしょうか。
テスト工程のスケジュールを短縮する効果的な方法は、テストケースを効率よく作ることです。

この記事では、テストケースを漏れなく、効率よく洗い出す方法と併せて、テスト工程をスムーズに進める方法もご紹介します。

テストケースとはテストをするエンジニアのためのテスト手順書

テストケースとは、テストを行うエンジニアがどんなテストをすればいいか、その手順をまとめたものです。ひとつのシナリオが完結するまでのテストケースを集めたものを、テストスイートと呼びます。

テストケースに記載される具体的な内容は、テストを行う前提となる条件、テストの方法、そのテストによって得られる正しい結果、期待結果です。

テスト仕様書とはテスト観点とテストケースで成り立つドキュメントである

テストケースと混同されがちなドキュメントに、テスト仕様書があります。テスト仕様書とは、テスト観点とテストケースが記載されたドキュメントです。
テスト観点とは、機能が正しく動作した結果をどうテストするかという切り口です。 テスト仕様書の作成者は、テスト観点をまとめて、テストすべきポイントを洗い出し、実際にテストをするエンジニアが行う手順をテストケースとして記載します。

テスト観点が誤っていたり、あいまいだったりすると、最悪の場合、意味のないテストケースが作られ、テストをするエンジニアは無駄なテストを続ける羽目になります。時間も手間もかけたのに、品質の悪いシステムやソフトウエアを納品するといった事態は避けたいものです。
テストを効率的に行うには、まずテスト観点を明瞭にすることが大事です。

よくある3つのダメなテストケース

テストケースにも、良いテストケースと、ダメなテストケースがあります。良いテストケースとは、テストの手順や、テストの結果が正しいか、正しくないのか判断基準が明快で、誰がテストをしても同じ結果が出るものです。テスト工程の中でも、テストをするエンジニアが「これどうやるんだろう?」と思うことなく、テストを行うことができれば、それだけでテスト工程は短くなります。

それでは、ダメなテストケースとは、どのようなものでしょうか。テストケースでよくある3つのダメな例と、作られてしまう理由を説明します。

1.不要なテストパターンが多い

「テストケースに漏れがないようしなければ」と、すべてのテストケースを網羅しようとした結果、テストケースを適切に取捨選択できなかった場合に起きてしまう事態です。
システムやソフトウエアの動作のすべての組み合わせをテストしようとすると、場合によっては天文学的な数の組み合わせができてしまいます。品質を高める上で、すべてのテストケースを網羅することはもちろん大切なのですが、テスト工程に充てられる時間は限られているので、敢えてテストケースから外す決断も必要です。

2.異常系テストが足りない

思い出してみてください。仕様書通りの操作だけをしてくれるユーザーに、あなたは出会ったことがあるでしょうか。
実際にシステムやソフトウエアを使うユーザーの視点がないと、思わぬバグが発生しかねません。テストケースを作るときには、開発者の視点から、ユーザーの視点に切り替えることが大切です。

3.表現がわかりにくい

テストケースの表現があいまいな場合、テストをするエンジニアはテストケースの理解に悩む羽目になります。「これはどうテストすればいいんですか?」と聞いてくれるなら、まだ時間のロスだけで済みますが、「なんとなくこうだろう」という判断でテストしてしまうと、正しい結果が得られない可能性があります。

テストをするエンジニアは、ソフトウエアの仕様や機能の内容をすべて把握している訳ではありません。中にはテストのためだけに、プロジェクトの途中から参加しているエンジニアもいるでしょう。
誰がテストをしても迷わないように、具体的な手順や期待値を示す必要があります。

漏れなく、効率よくテストケースを洗い出す方法

それでは、テストケースを漏れなく、効率よく洗い出すには、どうしたらいいのでしょうか。
多くの方が実践している4つの方法を紹介します。

1.同値分割

同値分割とは入力値を有効・無効の集合に分割し、同じ部分集合に入る値はすべて同じ結果とみなす方法です。
たとえば、平成〇〇年という〇〇年に入力する場合の有効値は1~31と想定され、0以下と32以上は無効となります。この場合だと、有効値として5、無効値として-10、42などをテストしてみると良いでしょう。

2.境界値分析

境界値分析とは、バグが多く潜む有効値と無効値の境界をテストする方法です。
バグが多い理由は、数字の書き間違いや>と≧の書き間違いなど、エンジニアならあるあるのミスが潜みがちだからです。
例えば、平成の場合だと、0と1、31と32など、境界に近い2つの数値をテストすると良いでしょう。

3.ディシジョンテーブル

ディシジョンテーブルとは状態や入力値と、状態や入力値の組み合わせであるルール、動作がまとめられた表です。入力値も、結果である動作も複雑な場合、パターンを網羅できます。
分量が多くなるのが難点ですが、すべてをテストできなくても、ディシジョンテーブルを作成することでパターンが一覧化され、テストケースの抜けをチェックするのに役立ちます。

4.状態遷移テスト

例えば、ワープロソフトでは、ファイルの保存ウィンドウが開いているときにファイルの変更ができないなど、ユーザーの操作を敢えて制限することで、使いやすくしています。このように、システムやソフトウエアは状態によって使える機能が変わります。正しく動作しているかどうかという開発者の視点だけでなく、ユーザーの視点に立って、状態が遷移する過程や、それぞれの状態別にテストを行いましょう。

ランダムテスト

上記の4つの方法を用いて網羅的にテストをしたとしても、バグが漏れてしまうことがあります。潜んでいるバグを見つけ出すために、更に追加でテストを行う方法も紹介します。

ランダムテストとは、手あたり次第に入力や操作を行う手法で、アドリブテストやモンキーテストとも呼ばれます。論理性がないため、網羅性や信頼性を考えると、全体的には用いない方が良いテスト手法です。
論理性がないとはいえ、ランダムテストでも多くのバグが見つかりますし、特に、勘が良いエンジニアだと論理的なテストより多くのバグを発見することもありますので、念押しでテストをする際には効果があります。
さらに、セキュリティの脆弱性を発見するために予測不可能なデータを入力するファズテストや、納品前に念のためシステムやソフトウエアをテストする際など、特殊な状況では有効な方法です。

テストケースを効率よく進めるには情報共有が大切

システムやソフトウエアの開発に納期がある以上、納期までに品質を担保できるだけのテストを行わなければなりません。そのためには、テストケースを作成する手法を使うだけでなく、チームの情報共有がテストケースを作成し、テストを行う効率を高めることにもつながります。

開発工程とテスト工程で、関わってくるエンジニアが違ったり、増えたりするプロジェクトの場合は、特に効率が上がる可能性があります。

開発工程と結合工程のテストを仕分けする

開発工程のエンジニアが単体テストを行ってから、テスト工程の結合テストへと進む際、単体テストでやるべきか、結合テストでやるべきか、あいまいな機能が出てきます。

ここで、コミュニケーションが足りないと、お互いに「相手がやっただろう」と思い込んで、本来やらねばならないテストケースが漏れてしまったり、逆に、「相手がやっていないだろう」と思って重複してテストを実施して無駄な工数がかかったりしてしまいます。

普段からコミュニケーションを密に取ることで、お互いのテストを行う範囲を把握でき、過不足による手戻りや無駄を省くことができます。

システムやソフトウエアの仕様を理解してテストできるエンジニアを増やす

テストを実施するエンジニアの中には、テスト工程から突然参加したり、新人で経験不足から、システムやソフトウエアの仕様を理解していない方がいます。

そうしたエンジニアがテストを実施すると、テストの期待結果がNGだった場合に、原因がバグなのか、仕様なのか判断できないと、仕様を把握している少数のスタッフに質問が集中してしまい、回答までタイムロスが発生しかねません。

仕様を把握しているスタッフも手が回らず、テストをするエンジニアが個々に「仕様書を見て判断する」という状況になれば、仕様書を読み込む作業が発生し、さらならる時間のロスを招いていしまいます。

では、どうすれば効率よくテストケースを消化できるのでしょうか。答えは、テスト対象のシステムやソフトウエアを把握している人を増やすことです。

テストケースを洗い出す設計段階から、テストを行うエンジニアにも参加してもらうなど、仕様を理解してもらう機会を増やしましょう。

実際のテストケース実施の際、仕様を把握しているエンジニアと把握していないエンジニアで2~3名のグループを作り、問題解決を効率よく行えるとスムーズにテストが進みます。

まとめ

テスト実施において、テストケースの網羅性や、スムーズに進める方法をご紹介しました。

更にテストを効率よく進めるには、便利なツールに頼るのも一手です。

管理システムといえば、BacklogやRedmine、Jiraなど、BTSとしても活用できるツールをお使いの方は多いと思います。 最近では、テスト管理に特化したツールが登場し、BacklogやRedmine、JiraなどのBTSとの連携も可能な、クラウド型のサービスも提供されるようになっています。 テスト管理ツールは、テストケース全体を把握できるだけでなく、進捗管理や結果の入力、エビデンスの添付など、システムやソフトウエアのテストに役立つ機能が満載です。

クラウド型のテスト管理ツールQangarooは現在お使いのテストケースをまとめたExcelファイルの取り込みも可能です。

無料で登録が可能ですので、まずはお試しください。

テスト管理でお困りの方へ

  • テストの進捗が一目でわかるようにしたい
  • テストケースごとのエビデンスをすぐ確認したい
  • テスト管理にかかる時間を減らしたい

クラウド型のテスト管理ツール「Qangaroo」は、テスト管理のお困りを解決します。

お問い合わせ 機能について詳しく知る

一つ先をゆくテスト管理ツール「Qangaroo」、
その真価を無料でご体感ください。

無料トライアル版では、Qangaroo のサポートチームとのコミュニケーションを通じて、
卓越したユーザーインターフェースや機能性をお確かめいただけます。今すぐトライ!

お問い合わせ 無料で試してみる