Jest를 이용해서 스마트하게 API 리팩토링 하기!

Many(김희만) Kim
직방 기술 블로그
3 min readMay 18, 2022

--

시간에 쫓겨 작성한 API, 누군가가 만들어놓은 API 리팩토링 해 본 경험 다들 한 번씩 있잖아요?

리팩토링의 핵심은 동작을 보장하면서 이전보다 더 나은 품질의 코드를 작성하는 것이라고 생각합니다.

최근 업무로 리팩토링을 진행하면서 조금 더 효율적으로 레거시와 데이터를 비교하면서 진행할 수 있을까 라는 고민을 하게 되었고 실제 업무에서 효과를 봤던 테스트 프레임워크 Jest의 기능을 이용한 스마트하게 API 리팩토링을 하는 방법을 소개해보려고 합니다.

테스트 데이터

샘플을 위한 테스트 데이터를 반환하는 서비스를 만들고 테스트 코드 실패 케이스를 위한 데이터도 작성합니다.

리팩토링 진행하기

리팩토링하는 상황을 구성하기 위해서 레거시에 해당하는 V1, 새롭게 리팩토링하는 API 에 해당하는 V2로 구성합니다.

데이터 비교 실패 케이스를 위해서 특정 ID 로 V1 API 를 호출하면 결과값이 다른 데이터를 반환합니다.

테스트 코드로 결과값 검증하기

정확한 테스트를 위해서 N번의 테스트를 진행합니다.
10개의 타겟 중 2개의 타겟이 실패했다.

실패 케이스 분석하기

10번의 테스트 중 2번의 테스트가 실패했습니다. 로직은 동일하게 리팩토링 한 것 같은데 실패했으니 실패 케이스를 분석합니다.

Jest Console 을 통해서 파악하기가 수월합니다.

실패 데이터를 살펴보니 V1, V2 의 age 데이터가 서로 다른 것을 확인했습니다.

데이터양이 많더라도 손쉽게 확인이 가능합니다.

수정 후 테스트 코드로 검증하기

분석한 내용을 토대로 잘못 작성된 코드를 수정하고 테스트 코드로 다시 검증합니다.

테스트 코드를 통해서 동작을 확인했고 이것으로 리팩토링을 마무리합니다.

마치며

방법에 대한 소개로 단순한 수준의 예제로 작성했지만 테스트 프레임워크의 기능을 통해서 DB 조회 후 테스트 대상을 동적으로 구성하거나 테스트에 필요한 사전 작업을 구성해서 테스트 과정을 자동화하는 등 추가 구성이 가능합니다.

이처럼 이미 많이 사용하고 익숙한 환경이지만 조금만 더 응용한다면 업무의 효율을 높이면서 일할 수 있는 환경을 구축할 수 있습니다.

여러분의 쾌적한 업무 환경에 도움이 될 수 있기를 바랍니다.

--

--

Many(김희만) Kim
직방 기술 블로그

안녕하세요 일잘러가 되고싶은 개발자입니다.