프론트엔드 E2E Test에 대한 고찰
최근 프론트엔드에서 E2E 도입을 시작했다. 기존에도 E2E가 있었지만 다음과 같은 이슈가 있었음 해당 이슈들은 다음과 같이 처리 또는 해결 방안 모색 중이다.
1. Test data가 수시로 바뀌는 경우가 있어 Test code를 최신 Test data에 맞게 변경해줘야 하는 번거로움이 생겼음
- 기존 Test DB를 테스트서버 DB로 사용했던 반면, 개인별 DB를 만들어 Test data가 변경되는 일이 없도록 수정 (개인별 DB도 병렬 task처리에서 data 일관성이 깨질 수 있기 때문에 필요한 수만큼 늘림 현재 프로젝트에서는 구직자, 빅브라더, 채용관으로 3개 스키마로 구성)
- 개발자가 편하게 사용할 수 있도록 Docker container를 활용하여 손쉽게 DB가 만들어지고 최신 Mock data가 초기값으로 삽입 될 수 있도록 수정
- seed API 제작으로 모든 Test case마다 데이터베이스가 초기화 될 수 있도록 기능 개선
2. 강제성이 부여되지 않아, 관리가 미흡해지고 그에 따라 책임 없는 E2E Test code들이 버려지는 현상이 있었음
- 실서버 및 테스트서버 Pull-request요청 시 E2E test code가 실행되고, 실패 시 배포가 이루어지지 않도록 강제
앞으로 개선된 E2E Test를 통해 QA의 피로를 줄이고, 더욱 안정성 있는 개발이 될것을 기대한다. 또한, 열심히 작성한 Test Code가 관리 미흡으로 인해 사라지는 현상을 줄일 수 있도록 노력해야겠다.
3. API Seed가 너무 오래 걸리는 현상이 있음
각 Test Case마다 일관성있는 DB를 위해 DB를 초기화 하는 작업이 있음. 하지만 초기화 시간이 너무 오래 걸려, 자원이 부족해지고, test case마다 timeout이 발생하는 현상이 생김. 이러한 이슈들을 해결하기위해 다음과 같은 방법 모색 중.
- 초기단계에서만 migration을 진행하고, 그 이후 초기화는 snapshot을 활용.
- postgreSQL을 임시로 SQLite와 같은 인메모리 DB로 교체.
- migration이 완료된 상태로 이미지를 생성.