Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

인수테스트에서 통합테스트로 마이그레이션한다. #303

Open
kdkdhoho opened this issue Sep 29, 2024 · 0 comments
Open

인수테스트에서 통합테스트로 마이그레이션한다. #303

kdkdhoho opened this issue Sep 29, 2024 · 0 comments

Comments

@kdkdhoho
Copy link
Collaborator

kdkdhoho commented Sep 29, 2024

Description

기존엔 인수 테스트를 작성했습니다.
하지만, 인수 테스트는 "소프트웨어 인수를 목적으로 하는 테스트이다. 소프트웨어를 인수하기 전에 명세한 요구사항(인수 조건)대로 잘 작동하는지 검증이 필요하다." (출처: Tecoble - 단위 테스트 vs 통합 테스트 vs 인수 테스트) 입니다.

기존 인수 테스트를 작성한 이유는, 소프트웨어 인수의 목적보다는 통합 테스트의 목적에 가까웠습니다.
하지만 일반적인 통합 테스트에 비해 테스트 속도가 1.5배에서 2배 정도 더 걸렸습니다.
또한, RestAssured의 요청은 테스트 컨텍스트의 스레드와 별개로 실행되기 때문에, DB 격리를 위해 직접 truncate 쿼리를 실행해줘야 했습니다.

반면, Application Layer - Repository Layer 통합 테스트를 수행하면 직접 메서드를 호출할 수 있어 상대적으로 테스트 코드 작성이 용이해지고 반드시 API를 호출해야 하는 제약 조건이 사라져 테스트가 편리해집니다. 속도 또한 최대 2배 가까이 빠르게 실행됩니다.
또, @Transactional 어노테이션을 활용하여 DB 격리를 위한 비용이 감소합니다.

따라서 인수 테스트를 통합 테스트로 마이그레이션 하는 작업을 진행합니다!

진행 방식

기존의 인수 테스트는 일단 두고, 통합 테스트로 작성이 완료된 테스트 케이스는 삭제하는 식으로 차츰차츰 진행합니다.

참고

  1. 통합 테스트에서 프레젠테이션 계층을 제외한 이유는, @WebMvcTest를 이용해 프레젠테이션 계층을 슬라이스 테스트하는 것이 효율적이라 판단했기 때문입니다.
  2. 2024. 09. 29. dev 브랜치 기준, 전체 테스트 실행 시간:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant