더북(TheBook)

단위 테스트는 빨라야 한다. 통합 테스트는 보통 단위 테스트보다 훨씬 느리다. 티끌 모아 태산이라고 테스트 수백 개를 실행하기라도 하면 소수점만큼 미세한 속도 차이도 전체적으로는 큰 차이를 보일 수 있다.

통합 테스트는 한 번에 너무 많이 테스트한다는 것이 문제다. 예를 들어 자동차가 고장 났다고 가정해 보자. 어디가 말썽인지 찾아내서 고치려면 어떻게 해야 할까? 엔진은 여러 부품으로 구성되어 있으며, 각 부품은 다른 부품과 함께 작동하여 자동차를 움직인다. 이는 마치 엔진을 구성하는 여러 부품이 조별 과제에서 함께 결과를 내는 것과 같다. 조별 과제에서는 개인보다 팀이 우선이다. 자동차가 멈추면 특정 부품에 문제가 생긴 것일 수도 있지만, 여러 부품이 동시에 말썽을 부린 결과일 수도 있다. 엔진학과에서 부품을 공부하는 학생들의 조별 과제 결과물인 자동차 움직임을 일종의 통합 테스트로 생각할 수 있다. 테스트가 실패하면 모든 부품이 함께 F 학점을 받고, 성공하면 모든 부품이 함께 A 학점을 받는다.

소프트웨어에서도 같은 일이 발생한다. 개발자 대부분은 앱의 전체 기능, REST API의 응답 결과, UI의 동작을 통해 기능을 테스트한다. 이는 단일 기능이나 모듈이 아니라 여러 구성 요소가 함께 작동하여 최종 결과를 만들어 내는 방식을 테스트하는 것이다. 버튼을 누르면 특정 이벤트가 발생하고 함수, 모듈, 컴포넌트가 함께 작동하여 최종 결과를 만들어 낸다. 테스트가 실패하면 이 소프트웨어 구성 요소 모두가 다 같이 실패하여 전체 작업의 실패 원인을 파악하기가 어려울 수 있다(그림 1-7).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.