1. ホーム
  2. unit-testing

[解決済み] ユニットテストとインテグレーションテストの違いは何ですか?[重複あり]

2022-03-24 01:08:43

質問

単体テストと結合テストの違いは何ですか?

これらのテストには異なる名称があるのでしょうか?ユニットテストを機能テストと呼ぶ人がいるように、など?

どのように解決するのですか?

A 単体テスト は、比較的小さなコードの断片が、意図したとおりに動作しているかどうかを検証するために、プログラマが記述するテストです。範囲は狭く、書きやすく、実行しやすく、その有効性はプログラマが何を有用と考えるかに依存する。テストはプログラマが使用することを目的としており、他の誰かに直接役立つものではありませんが、もしテストがその役割を果たすなら、テスターや下流のユーザはバグが減るという恩恵を受けるはずです。

ユニットテストであることの一部は、テスト対象のコードの外側にあるものをモック化またはスタブ化することを意味します。ユニットテストは、外部のシステムに依存してはいけません。ユニットテストは、外部のシステムとうまく動作することを証明するのではなく、内部の一貫性をテストするものです。

について 統合テスト は、システムの異なる部分が一緒に動作することを実証するために行われます。統合テストは、アプリケーション全体をカバーすることができ、まとめるのに、より多くの労力を必要とします。通常、データベースインスタンスやハードウェアのようなリソースを、テスト用に割り当てる必要があります。統合テストは、少なくとも統合テスト環境が実稼働環境に似ている限り、 単体テストよりもシステムが動作することを (特に非プログラマに対して) より説得力のある形で示すことができます。

実際、quot;integration test" は、本番環境に似せた完全なシステムテストから、モックアウトされていないリソース(データベースやキューなど)を使用するテストまで、さまざまなものに使用されます。統合テストの下限としては、インメモリデータベースに対してリポジトリを実行する junit テストがあり、上限としては、アプリケーションがメッセージを交換できることを確認するシステムテストがあり得ます。