単体テストと統合テストの違いは何ですか? [重複] 質問する

単体テストと統合テストの違いは何ですか? [重複] 質問する

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

これらのテストには別の名前がありますか? ユニット テストを機能テストなどと呼ぶ人もいますか?

ベストアンサー1

ユニットテストは、比較的小さなコードが意図したとおりに動作しているかどうかを確認するためにプログラマーが記述するテストです。範囲が狭く、記述と実行が簡単で、プログラマーが有用と考えるものによって有効性が異なります。テストはプログラマーの使用を目的としており、他の人にとって直接役立つものではありませんが、テストが目的を果たせば、テスターや下流のユーザーはバグが減るというメリットを得られるはずです。

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

統合テストは、システムのさまざまな部分が連携して動作することを示すために行われます。統合テストはアプリケーション全体を対象とすることができ、テストをまとめるのにはるかに多くの労力を必要とします。通常、データベース インスタンスやハードウェアなどのリソースを割り当てる必要があります。統合テストは、少なくとも統合テスト環境が本番環境に似ている限り、一連の単体テストよりも (特にプログラマー以外の人に対して) システムが動作することを示す説得力のあるテストです。

実際には、「統合テスト」は、本番環境に似せて作成された環境に対する完全なシステム テストから、モック化されていないリソース (データベースやキューなど) を使用するテストまで、さまざまな目的で使用されます。統合テストの範囲の下限では、リポジトリがメモリ内データベースに対して実行される junit テストが統合テストになる可能性があり、上限では、アプリケーションがメッセージを交換できることを検証するシステム テストになる可能性があります。

おすすめ記事