Java メソッドのテスト

メソッド・レベル・テスト では、メソッド・コード内に定義されているさまざまな条件を、他のメソッドから分離して実際に試してみます。これにより、個々のメソッドを単体で個別にテストできます。 通常は、考えられるすべての入力をメソッドが正しく処理するかどうかを確認することに焦点が置かれます。 この目的のために提供されているメソッド・レベル・テスト・パターンを使用できます。 メソッド・レベル・テストは、多くの場合、後のクラス・レベル・テストに向けて必要とされる最初のステップです。

Java™ メソッドをテストするには、次のようにします。
  1. メソッド用のテストを作成する。

    コードをまだ書いておらず、テストを第一とする設計アプローチに従う意向である場合は、少なくともメソッド・シグニチャーだけはテストを生成する前に定義しておく必要があります。

  2. テスト・データ・テーブルを使用して、メソッド・パラメーター用のシンプル値を定義する。

    すべてのメソッド・パラメーターおよびメソッドの戻り値は、自動的にテスト・データ・テーブル内の入力値または予期出力値として識別されます。 グローバル変数やクラスの属性のような環境パラメーターも入出力パラメーターと見なせますが、これらは自動的にはテスト・データ・テーブルに現れません。 これらの変数および属性をテストするには、テスト対象メソッドへの呼び出しの前に初期化ポイントを追加し、さらにテスト対象メソッドへの呼び出しの後に検証アクションを追加します。

  3. テスト対象メソッドを含んでいるコンポーネントが、テストで想定する適切な状態になっていることを確認する。

    テスト対象メソッドを呼び出す前に、テスト対象メソッドを特定の状態にするためのメソッドを呼び出す必要がある場合は、テスト振る舞いスクリプトにメソッド呼び出しを追加できます。

    例えば、スタックに対する pop() メソッドの機能 (つまり、スタックの一番上から項目を 1 つ除去する機能) をテストする必要があるとします。 しかし、何かを除去するためには、最初にスタックに何かを追加する必要があります。 したがって、テスト対象メソッドの呼び出しに先立って、その前提条件を満たすために幾つかのメソッドを呼び出さなければならないことがよくあります。

  4. テストを実行する。

    テストを実行して、すべてが適切に機能していることを確認します。 失敗が報告された場合は、テスト・データ・コンパレーターを使用して、テスト結果の理解に役立ててください。 それでも結果を解釈できない場合は、デバッガーを使用してください。 成功するまで、テストを何度でも再実行してください。

  5. データ区分化技法を使用して、幾つかのデータ・セットを定義する。

    シンプル・パラメーター値を使用するテストの定義後に、可能な値のドメイン内のデータをより多く使用するようにして、テストを拡張することが重要です。 識別済みのすべてのパラメーターに対してデータの区分化を実行すると、テスト値を効率よく定義できます。 このデータ区分化に基づき、テスト・データ・テーブルを使用して、必要と思われるデータ・セットをすべて作成してください。

    また、値のセットおよび値の範囲を含めて、テスト範囲を大きくすることもできます。 ただし、データ・セット内に定義した各値はそれぞれが個々のテストと見なされ、個々のテストの数を増やせばテストの実行時間も長くなることを理解しておく必要があります。

  6. テストを再実行する。

    定義した予期される値と監視した実際の値との間に、まだ差がある可能性があります。 その原因としては、入力が不適切であった、出力が不適切であった、またはテスト対象コンポーネントに欠陥があったということが考えられます。 トラブルシューティングには、デバッガーおよび「テスト・エクスプローラー」ビューを使用してください。

  7. テスト範囲を評価する。

    テスト範囲を評価するには、プロファイル・パースペクティブの「範囲 (Coverage)」ビューに移動して、先ほど定義したテストのプロファイルを作成します。 行のカバー率が 100% 未満である場合は、カバーするデータ範囲を広げたり、新しいデータ・セットを幾つか追加したり、新しいテストを定義したりしてみてください。 コード・カバレッジのモニターについての詳細は、オンライン・ヘルプに記載されています。

    追加するデータ・セットを決定するには、カバーされていないコード行を識別します。 通常は、それらの行はコード内で行われる判断 (例えば、if 文など) と関連しています。 非常に多いのは、その条件が常に偽と評価されるので、その判断に続くコード・ブロックがカバーされないという場合です。 このコード・ブロックをカバーするには、正しいパラメーター値を識別して、それらの値を持つデータ・セットを追加します。

メソッドのテスト方法を説明した詳しい例は、『テスト・データの定義』を参照してください。
関連概念
テスト戦略
Java サブシステム
状態ベースのテスト技法
関連タスク
Java クラスのテスト
ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2004. All Rights Reserved. (C) Copyright IBM Japan 2005