サニティテストとは?

サニティテストとは?

Yang

はじめに

サニティテストはリグレッションテストの一部分で、バグの修正やコードまたは機能の変更後、ソフトウェアに影響を与えず仕様書通りに正しく動作するか、新規のバグが発生しないかを保証するテストです。また、サニティテストの結果によって、ソフトウェアビルド(以下、ビルドという)が次のレベルのテストを受けることができるかどうかが決まります。

今回はサニティテストを深く掘り下げ、サニティテストを解説し、特徴や、メリット・デメリットなどを説明します。

サニティテストの解説

サニティテストは健全化を図るテストです。

サニティテストでは、バグ修正後やコードまたは機能変更後に、ビルドが期待値の通りに動作するかどうかを確認し、リグレッションテストやシステムテストなどに進むに値するかどうかを判断します。ビルドが正しく動作している場合は、QAチームはリグレッションテストやシステムテストなどに進めます。正しく動作していないとテスターが判断した場合は、ビルドは開発者に返送されます。

サニティテストは狭く深い範囲を確認するテストで、無駄な時間やリソースの浪費を避け、短時間で完結できます。リグレッションテストに十分な時間やリソースが足りない場合は、サニティテストを実施することでビルドに問題がないかを確認します。

サニティテストは以下を検証、確認します。
・新規機能や変更後の機能が仕様書通りに動作するか
・コードや機能に影響の少ない変更を加えた後に、他の既存機能に影響しないこと
・次のレベルのリグレッションテストに移行可能か

サニティテストの特徴

シンプル

簡単に設計や実行ができます。

台本・文書がない

サニティテストはテスト台本¹やテスト文書²が 必要ありません。その代わり、実行する際にテスターは自分の知識・経験でビルドを検証し、機能を保証します。

¹テスト台本は一般的にテスト手順仕様を指します。 ISTQB用語集。
²テスト文書(ドキュメント)にはテストのプロセス、目標、結果に関する文書が含まれます。さらに、テストを実施するためにテスト環境、設定する情報も含まれます。 ISTQB用語集。

狭く深いテスト

サニティテストは、ソフトウェアテストの一種で狭く深い範囲を確認するテストです。システム全体ではなく特定の範囲しかカバーしませんが、対象とする範囲を掘り下げます。

テスターが実施する

サニティテストはソフトウェアテストの理解とITの専門知識が必要なため、通常QAチームが実行します。

リグレッションテストのサブセット

ビルドに何らかの変更が行われた場合、リグレッションテストではシステム全体をテストし、バグがないかどうかを検証しますが、サニティテストではシステム全体ではなく、特定の部分のみをテストします。

サニティテストは、リグレッションテストを実施する前によく行われます。

サニティテストのメリット・デメリット

a. メリット:

・ビルドのコア機能が正しく機能しているかを早く効率的に検出できます
・文書(設計書)を作成する必要がないため、短時間で完了できます
・バグが発生した場合、そのビルドを却下するのでリグレッションテストを実施する必要がなくなります。リグレッションテストにかかる時間と手間を省きます
・特定の機能を個別にテストするため、バグや問題のあるオブジェクトを特定しやすいです

b. デメリット

・ビルドの特定の部分のみを対象としているため、それ以外の部分の問題が発見できません
・台本がないので同じような問題があった際に参照できません
・ビルドの機能とステートメント³のみにフォーカスします
・ 設計構造までは範囲に含まれないため、開発者はサニティテストで発見されたバグの修正に難航します。

³ステートメントとはプログラミング言語の実体。実行の最小単位であること。 ISTQB用語集。

サニティテストのプロセス

サニティテストは、以下のプロセスで行われます

プロセス1:識別

最初のプロセスでは、前回のテスト以降、どの機能が新しく追加されたのか、バグが修正されたのか、既存コンポーネントを変更後にコードのどの部分が修正されたのかを特定します。これにより、サニティテストの対象を確認できます。

プロセス2:評価

テスト対象のコンポーネントを分析することで、コンポーネントの仕様書に定義されている属性や動作を理解できます。その後テスターはサニティテストの期待値を把握でき、テストの結果の合否を素早く判断できます。

プロセス3:テスト

このプロセスでは、追加や変更されたモジュールのコンポーネント、パラメーター、機能といったすべてのテスト対象にサニティテストを実行します。

サニティテストとスモークテストの違い

サニティテストだけではなく、スモークテストもソフトウェアテストの一種で、ソフトウェア開発プロセスのさまざまな段階でシステムが正しく動作しているかを確認するために実施されるテストです。両方とも時間とリソースを浪費することを防ぐことができます。

両テストには他の共通点もあるので、サニティテストとスモークテストを混同してしまう人もいるようです。ここでは、サニティテストとスモークテストの違いを簡単にお伝えさせていただきます。

サニティテストとスモークテストの主な違いは、次の図の通りです。

サニティテストとスモークテストの違い

まとめ

サニティテストは、ビルドの特定部分の機能を素早く確認することで、ビルドの安定性と合理性を確保することができます。効率的かつ素早く実施できるテストのでコストや時間、手間を省きます。サニティテストはソフトウェアの品質を維持するため、エンドユーザーの満足度向上に繋がります。