통합 테스트

통합 테스트

단위 테스트와는 달리 여러 개의 모듈 또는 컴포넌트가 함께 작동하는지, 서로 잘 통합되는지를 검증

  • 단위 테스트의 요구사항 중 하나라도 충족하지 못하는 테스트는 통합 테스트 범주에 속한다.

  • 즉, 단위 테스트가 아닌 모든 테스트는 통합 테스트에 해당한다.

단위 테스트의 세 가지 요구사항

  • 소프트웨어의 가장 작은 단위(모듈,클래스,함수)의 개별적인 동작 단위를 검증해야 한다.

  • 빠르게 수행되어 결과를 즉시 제공할 수 있어야 한다.

  • 각각의 단위 테스트는 독립적으로 실행되고 다른 테스트에 영향을 끼치지 않아야 한다.

장점

  • 통합 테스트는 여러 모듈의 상호작용을 통해 코드를 더 많이 거치므로 회귀 방지가 단위 테스트보다 우수하다.

  • 유저 시나리오에 가까운 상황을 재현하여 시스템을 검증 할 수 있다.

단위 테스트로 가능한 많은 비즈니스 시나리오의 예외 상황을 확인하고, 통합 테스트는 시나리오의 성공적인 흐름과 단위 테스트가 다루지 못한 예외 상황을 다룬다.

빠른 실패 (Fast Fail)

버그를 빨리 나타나게 하는 것을 빠른 실패 원칙이라 하며, 통합 테스트에서 할 수 있는 대안이다.

예기치 않은 오류가 발생하자마자 현재 연산을 중단시키는 것으로 애플리케이션의 안정성을 높힐 수 있다.

  • 피드백 루프 단축: 버그를 빨리 발견할수록 더 쉽게 해결 가능

  • 지속성 상태 보호: 버그는 앱의 상태를 손상시키는데, 손상된 상태가 DB로 침투하면 고치기 훨씬 어려워지므로 빠르게 실패하면 손상이 확산되는것을 방지할 수 있다.

어떤 예외 상황에 잘못 실행돼 전체 에플리케이션이 즉시 실패한다면 해당 예외 상황은 테스트할 필요가 없다.

외부 의존성

프로세스 외부 의존성은 관리 의존성비관리 의존성으로 나뉜다.

관리 의존성 (구현 세부사항)

  • 애플리케이션을 통해서만 접근할 수 있는 프로세스 외부 의존성

  • 관리 의존성과의 상호작용은 프로세스 외부에서 관찰할 수 없다.

  • Ex:) Database

비관리 의존성 (식별할 수 있는 동작)

  • 다른 애플리케이션이 접근할 수 있는 프로세스 외부 의존성

  • 비관리 의존성과의 상호 작용은 외부에서 관찰할 수 있다.

  • Ex) SMTP

관리 의존성은 실제 인스턴스를 사용하고, 비관리 의존성은 목으로 대체하라.

Last updated