「テストケースとは…?」 「聞いたことはあるけど、詳細は知らない…」 「意味はなんとなく知っているけど、本当に必要なのか…」
そんなテストケースに関するお悩みをお持ちの方も多いでしょう。この記事では、テストケースについて詳しく解説していきます。
テストケースとは
テストケースは、ソフトウェア開発においてプログラムの動作を確認する手順を文書化したものです。新機能の開発や既存の変更後、システムが正常に動作するか確認するために重要です。テストケースは主に正常系と異常系に分けられ、正常系では期待通りの動作を確認し、異常系ではエラー処理が適切に行われることをテストします。
テストケースを作成するタイミング
テストケースを作成するのは、主に開発が一通り完了し、バグが少ない状態になってからです。システムを動かしている途中で多くのバグが発生する場合、その時点でテストを行うのは早すぎる可能性があります。バグが多い状態ではテストを進めるのが難しく、正しいエラーを見極めることも難しくなるからです。
テストケースを作成する目的
テストケースを作成する理由について説明します。
システムを開発した人やシステムに詳しい専門家がテストを行う場合でも、テストケースを作成しなければ、重大な問題が見逃され、それがインシデントにつながる可能性があります。以下では、テストケースを作成する目的について詳しく説明します。
必要なテストを実施するため
テストケースを作成する主な目的は、必要なテストを完了することです。テストケースを使わずにテストを進めると、本来行うべきテストが抜け落ちることがあります。また、テストを行った証拠がないため、第三者がテストの完了状況を確認するのが難しくなります。
ソフトウェアが正常に動作することを証明するために
テストケースを作成する理由の一つは、ソフトウェアが正常に動作することを証明するためです。これにより、開発者や顧客からの信頼を得ることができます。
不要なテストを排除するため
必要なテストを行うことも大切ですが、不要なテストを避けることも重要です。テストケースを作成し、第三者に確認してもらうことで、無駄なテストを見極め、人件費や時間を節約することができます。
誰が実行しても同じ結果になるようにするため
ソフトウェアのテストは複数の人が何度も行います。そのため、具体的な手順がなければ、異なる人が異なる結果を出してしまう可能性があります。一貫性のあるテストを行うために、テストケースを作成し、明確な手順を定義することが重要です。
以上の理由から、テストケースの作成はソフトウェア開発において非常に重要です。
テストの種類について
テストケースを作成する際には、どのようなテストの種類があるかを理解しておく必要があります。正しいテストの種類を知らないと、的外れなテストケースを作成してしまったり、必要なテストを見落としてしまう可能性があります。以下では主なテストの手法を簡潔に紹介します。
機能テスト 新しい機能がクライアントの要求通りに動作するか確認するテストです。正常系(エラーなしの動作)と異常系(エラーが適切に処理されるか)を確認します。主にブラックボックステストが使われ、入力と出力を比較して要件を満たしているか確認します。
ドメイン分析テスト 同値分析や境界値分析に基づいて、システムの境界値での振る舞いをテストする手法です。特に数値などの境界値でエラーが起こりやすいため、重要です。
仕様書確認テスト 修正されたシステムが仕様書や設計書通りに動作しているかを確認するテストです。仕様書の変更があった場合は、その修正が正しく反映されているかを確認します。
負荷テスト システムが想定される最大負荷に耐えられるかどうかを確認するテストです。通常はテスト環境で行い、システムの性能限界を把握します。
回帰テスト システムに変更があった場合に、他の部分に新たな不具合が発生していないかを確認するテストです。変更前の機能が正常に動作していることを確認します。
受け入れテスト 発注者がシステムが要求通りに動作するかを確認する最終的なテストです。実際の運用前に行い、問題点を特定します。
シナリオテスト ユーザーがシステムを操作した際に想定通りに動作するかを確認するテストです。実際の操作シナリオに基づいて行います。
状態遷移テスト 画面遷移が正しく行われるかを確認するテストです。ユーザーの操作に対する画面の反応をテストします。
探索的テスト テストケースをあらかじめ作成せず、テストを進めながら次のテストの内容を決定していく手法です。システムの挙動を見ながらテストを進め、フィードバックを行います。
これらのテスト手法を理解し、適切なタイミングで使用することが、効果的なテストケース作成の鍵です。
テストケース作成の観点
テストケースを作成する際の観点について簡潔に説明します。
全体
- 入力値に対する想定通りの結果かどうか
- 想定外の値が入力された場合の対応
- 正常な値が適切に入力できるか
- エラー時のメッセージ出力の正確さ
- 文字数制限や数字入力制限の適切さ
環境
- 実際の運用環境を想定したテスト
- 時間やタイムゾーンの違いに対する確認
セキュリティ
- 脆弱性の確認
- 認証・認可処理の正確さ
- 不正アクセス時の処理の確認
エラー
- エラーメッセージの正確さ
- エラー発生時のロールバック処理
- データの不正更新の防止
- 例外処理の確認
画面表示
- データ未設定時の表示確認
- エラー時や成功時のポップアップ表示
- 画面遷移の正確さ
データ内容
- データベース更新の確認
- データ抽出の正確さ
- トランザクション処理の考慮
接続
- 多数ユーザーによる同時操作時の負荷テスト
- ネットワーク状況の不良時のテスト
- 処理中断時の挙動確認
- ユーザー環境(OSなど)の考慮
テストケースの入力値
テストケース作成時にどのような値を入力すれば良いか、以下の手法を使って効率的に説明します。
境界値分析は、値の境界やその隣の値を重点的にテストする方法です。例えば、10桁までの数値入力であれば、9桁、10桁、11桁の値をテストします。
同値分割では、同じ結果が期待される場合に、一つのグループから一つの値を選んでテストします。例えば、0〜9の数値入力の項目において、「7」を入力して正常に処理されるかを確認します。
ペアワイズ法は、複数の要因を組み合わせてテストケースを作成する技法で、ソフトウェアの不具合の発生要因を最小限に抑えます。
エラー推測は、経験に基づいてエラーが起きそうな値をテストする手法です。例えば、数値しか受け付けない項目にマイナス値やNULL、文字列を入力してエラーが正しく処理されるかを確認します。
テスト外注化が可能である
テストケースの作成方法と重要性について説明してきましたが、すべての観点を網羅できない場合や曖昧な内容だと、バグ発見が遅れたり重大な問題が生じることがあります。そのため、確実で効率的なテストを行うためには、テストケースの作成を外部に委託する方法が考えられます。経験豊富な企業やパートナーに依頼し、コストを削減しつつテストを進めることを提案します。
まとめ
テストケース作成はテストを行う上で重要な業務であるため、確実に行う必要があります。テストケース作成を専門的に行なっている企業にテストを外注化すれば、安全確実なテストを実現させることができるでしょう。
株式会社エイチビーラボでは、ベトナムに特化したオフショア開発サービスを提供しております。テストケース作成には豊富な実績があります。また、クラウドやITインフラ、システム関連でお困りの方は、ぜひお気軽にお問い合わせください。ご相談から、開発、運用まで親身にサポートいたします。
詳しくは下記の記事もご参照ください。
➡ テストケースとは?その種類やわかりやすい作成方法を徹底解説 - HBLAB JSC