Open1

単体テストでの expected / actual などの意味について📝

まさぴょん🐱まさぴょん🐱

単体テストでの expected / actual などの意味について📝

expected(期待値)

  • 意味: テストを実行する前に、開発者が「この処理の結果として得られるべき正しい値や状態」を定義したもの。
  • 役割: テストの基準となるもので、プログラムが正しく動作しているかどうかを判断するために使われます。例えば、関数に特定の入力を与えたときに、どのような出力が返ってくるべきかを事前に予測した値です。

actual(実測値)

  • 意味: テストを実行したときに、実際にプログラムや関数から得られた結果。
  • 役割: この「actual」の値が「expected」と一致するかどうかを比較することで、テストの合否を判断します。一致すればテストは成功(pass)、一致しなければ失敗(fail)となります。

具体例

例えば、以下のような関数のテストを考えます:

def add(a, b):
    return a + b
  • テストケース: add(2, 3) の結果をテストする。
  • expected: 5(2 + 3 = 5 が期待される結果)。
  • actual: 関数が実際に返した値(例えば、間違った実装で 6 になった場合)。
  • 結果: expected (5)actual (6) が一致しないので、テスト失敗。

単体テストやテスト全般で使われる関連用語

単体テストやテスト全般で使われる関連用語もいくつかあります:

  1. Assertion(アサーション)

    • テストで「expected」と「actual」を比較するための仕組みや命令。例えば、assert add(2, 3) == 5 のように記述されることが多い。
    • 主にテストフレームワーク(JUnit, pytest など)で使用される。
  2. Test Case(テストケース)

    • 特定の条件下で「expected」と「actual」を検証するためのシナリオや条件のセット。
  3. Fixture(フィクスチャ)

    • テストを実行する前に準備するデータや環境。例えば、テスト用の入力データやモックオブジェクト。
  4. Mock(モック)

    • 外部依存関係を模倣したもの。テスト対象のコードに影響を与える外部要因を制御し、「expected」な動作を検証しやすくする。
  5. Pass / Fail(合格 / 不合格)

    • テストの結果。「expected」と「actual」が一致すれば「Pass」、一致しなければ「Fail」。
  6. Given-When-Then

    • テストの構造を表現する手法。
      • Given: 前提条件(テストの初期状態)。
      • When: 実行する動作(テスト対象の処理)。
      • Then: 期待される結果(expected と actual の比較)。

補足

  • 「expected」と「actual」は、単体テストだけでなく、ソフトウェアテスト全般(統合テスト、システムテストなど)でも基本的な概念として使われます。
  • テストフレームワークによっては、これらを明示的に書く場合もあれば、暗黙的に処理される場合もあります(例: assertEquals(expected, actual))。