통합 테스트(Integration Test) - TestCode(6)공부방2023. 7. 1. 00:42
Table of Contents
728x90
728x90
서론
본 포스팅은 아래의 인강을 듣고, 추가 공부가 필요한 내용들을 포함하여 정리한 포스팅입니다.
통합 테스트 (Integration Test)
여러 모듈이 협력하는 기능을 통합적으로 검증하는 테스트로, 단위 테스트가 끝난 모듈을 통합하는 과정에서 발생하는 오류를 찾기 위한 테스트이다. 단위 테스트만으로는 기능 전체의 신뢰성을 보장할 수 없을 뿐더러, 한 Product 위에 여러 모듈이 있고, 해당 모듈들이 유기적으로 관계를 맺고 있기 때문에, 모듈들을 결합한 형태로 테스트를 수행 해봐야 한다. 그렇기에 주로 확인하는 것은 모듈 간의 상호작용이다. 모듈 사이의 인터페이스 오류는 없는지, 모듈이 올바르게 연계되어 동작하고 있는지를 체크한다.
단위 테스트와 달리 개발자가 변경할 수 없는 부분(외부 라이브러리 등)까지 묶어 검증할 때에도 사용한다.
스프링부트에서는 클래스 상단에 @SpringBootTest를 붙여 수행할 수 있다.
@SpringBootTest
class ApplicationTests {
@Test
void contextLoads() {
}
}
접근 방식
하향식 (Top-Down)
- 가장 상위의 모듈부터 통합하며 테스트를 순차적으로 진행한다.
- 테스트 제어 흐름은 UI에서 시작해 DB로 끝나는 Top-Down의 이동
- 하향식 테스트를 위헤 테스트 스텁(Stub)으로 I/F 테스트 진행한다.
- 구현이 비교적 간단하고, 애플리케이션의 다른 부분에 대한 종속성이 낮다.
- 단순하고 점진적인 특성으로 인해 인터페이스 오류를 빠르게 식별할 수 있다.
- 웹 애플리케이션과, 여러 계층의 소프트웨어 아키텍처 모두에 사용 가능하다.
상향식 (Bottom-Up)
- 최하위 모듈부터 시작하여, 위쪽으로 작업하며 테스트하고 통합하는 방식이다.
- 상향식 테스트를 위해 테스트 드라이버(Driver)로 I/F 테스트 진행
- 기성 구성 요소를 기존 제품과 통합하려 할 때 일반적으로 사용된다.
- 성공률이 높고, 비교적 빠른 통합 테스트 형태이다.
- 하위 모듈을 먼저 테스트하기 때문에, 기본적인 모델이 원활하게 함께 실행되는지 확인할 수 있다.
- 마지막 테스트 드라이버가 설치될 때까지 시스템 수준 기능을 관찰하는 것이 불가능하다.
샌드위치
- 하향식과 상향식 테스트의 접근 방식을 결합한 방식이다.
- 상단, 하단, 중간 계층의 세 가지 계층으로 분리된다.
- 중간 계층에서 모듈 테스트를 시작하고, 위 아래로 진행하여 최상위 및 최하위 모듈에 우선 순위가 지정되도록 한다.
- 스텁과 드라이버 모두를 사용하여 모든 수준에서 모듈을 테스트한다.
- 테스트 시간이 길다.
- 여러 하위 프로젝트로 분리될 수 있는 대규모 프로젝트, 큰 소프트웨어 모듈을 테스트할 때 사용한다.
빅뱅 (BigBang)
- 모듈을 각각 따로 구현하고, 전체 시스템을 한번에 테스트한다.
- 테스트를 위한 드라이버와 스텁 없이, 실제 모듈들로 실행한다.
- 테스트 수행 기간이 짧다.
- 결함의 격리가 어렵다.
참조
https://www.geeksforgeeks.org/sandwich-testing-software-testing/
https://needjarvis.tistory.com/443
https://corgibytes.com/blog/2016/03/28/pyramid-of-tests/
관련 포스팅
테스트 코드를 작성하는 이유 - TestCode (1)
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!