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

test: 백엔드 E2E 테스트 시간 단축 #324

Merged
merged 2 commits into from
Aug 12, 2024
Merged

Conversation

choyoungwoo9
Copy link
Collaborator

🎟️ 태스크

백엔드 E2E 테스트 시간 단축하기

✅ 작업 내용

  • 테스트에서 가용한 포트를 직접 찾도록 구현
  • E2E 테스트가 병렬적으로 수행될 수 있도록 구현

🖊️ 구체적인 작업

테스트에서 가용한 포트를 직접 찾도록 구현

  • portfinder 라이브러리 추가
  • 가용한 포트를 찾아 listen하고, 환경변수로 지정하는 listenAppAndSetPortEnv 메서드 추가
  • 테스트에서 사용할 포트를 환경변수로 받도록 변경

E2E 테스트가 병렬적으로 수행될 수 있도록 구현

  • E2E 테스트 속도 54.32% 증가
  • 각 테스트가 uuid값으로 임시 테스트 데이터베이스를 생성하고 테스트 완료 후 삭제
  • test:e2e명령어 runInBand(순차적 테스트 실행)삭제

🤔 고민 및 의논할 거리

  • E2E 테스트 시간을 줄이기 위해 테스트케이스마다 서버를 종료했다 다시 실행하는 재실행 로직을 없애는 방법과 병렬적으로 테스트파일을 테스트하는 방법을 고민해 보았습니다.
  • 고민의 결론은 아래와 같습니다.
  • 테스트케이스 별 서버 재실행 로직은 유지한다.
    • 테스트 케이스 마다 서버를 재실행하지 않아도 현재 테스트에서 문재가 발생하지 않으나, 문제가 발생하지 않은 원인이 특정 구현에 의존한다. 따라서 해당 구현이 바뀌거나 메모리의 저장하는 정보가 늘어났을때 테스트가 실패할 수 있고, 실패할 경우 디버깅이 어려울 가능성이 높다고 생각해 테스트케이스별 서버 재실행 로직을 유지하기로 결정함
  • 병렬적으로 테스트 파일을 테스트하려면 세가지 조건을 만족해야한다.
    • 테스트들이 서버를 공유하면 안된다.
      • 기본적인 세팅이 서버를 공유하지 않는것으로 확인됨
    • 테스트들이 서로 다른 포트를 사용해야한다.
      • 유효한 포트를 찾아주는 라이브러리를 사용하고, 이를 공통 테스트 셋업에 적용해 해결
    • 테스트들이 DB를 공유하면 안된다.
      • 공통 테스트 셋업에서 각 테스트가 사용할 DB의 이름을 uuid로 생성하고 환경변수로 셋팅해 해결
  • 병렬적으로 테스트 파일을 테스트하는 것을 성공
  • 최종적으로 E2E테스트 실행 시간을 로컬환경기준으로 23.36초에서 10.67초로 약 55% 빠르게 테스트할 수 있습니다.

📸 결과 화면(선택)

image

- portfinder 라이브러리 추가
- 가용한 포트를 찾아 listen하고, 환경변수로 지정하는 listenAppAndSetPortEnv 메서드 추가
- 테스트에서 사용할 포트를 환경변수로 받도록 변경
- E2E 테스트 속도 54.32% 증가
- 각 테스트가 uuid값으로 임시 테스트 데이터베이스를 생성하고 테스트 완료 후 삭제
- test:e2e명령어 runInBand(순차적 테스트 실행)삭제
@choyoungwoo9 choyoungwoo9 requested a review from kimsj-git August 12, 2024 10:28
@choyoungwoo9 choyoungwoo9 merged commit 7defc0f into dev Aug 12, 2024
1 check passed
@choyoungwoo9 choyoungwoo9 deleted the test/optimize-e2e-test branch August 12, 2024 10:28
@choyoungwoo9 choyoungwoo9 restored the test/optimize-e2e-test branch August 15, 2024 02:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant