안녕하세요. 인포그랩 프로덕트팀에서 프론트엔드 엔지니어로 일하는 Hailie입니다. 저는 개발자로서 효과적인 코드 개선 방안을 항상 고민합니다. 그러나 테스트 코드는 제게 다소 먼 이야기로 생각했는데요. 최근 팀에서 어드민 프로젝트*를 개선하면서 테스트 코드의 필요성을 절실히 느꼈습니다. 이에 팀 논의 결과, 테스트 코드를 어드민 프로젝트에 소규모로 도입했습니다.
이 글에서는 제가 테스트 코드를 도입한 과정과 그 결과를 공유하려 합니다. 테스트 코드가 아직 낯선 팀이나 테스트 코드 도입을 고민하는 분들께 유용한 정보가 되기를 바랍니다.
*어드민 프로젝트: 인포그랩의 DevOps 전문 학습 솔루션 expertLABS의 콘텐츠 에디터
도입 배경

제가 테스트 코드의 필요성을 느낀 이유는 코드 품질과 안정성 문제 때문이었습니다. 어드민 프로젝트의 구조는 간단했지만 아래 문제가 반복적으로 나타났는데요. 저는 테스트 코드로 이 문제를 해결하고 싶었습니다.
- 리팩토링 후 버그 발생: 코드를 리팩토링해도 특정 사용자 시나리오에서 예상치 못한 버그가 종종 발생했습니다. 그 결과, 디버깅 시간이 길어지고, 배포 일정이 지연됐습니다.
- 코드 리뷰 효율 저하: 변경된 코드가 ‘기존 동작을 깨지 않는지’ 코드 리뷰 과정에서 수동으로 확인할 때가 많았습니다. 수동 확인에 시간이 걸리다 보니 리뷰 효율이 떨어졌습니다.
- 난해한 코드 누적: 시간이 지날수록 비즈니스 로직이 복잡해지고, 다른 팀원이 이해하기 어려운 코드가 쌓였습니다. 그 결과, 온보딩과 코드 유지 보수에 시간이 오래 소요됐습니다.
이러한 이유로 저는 테스트 코드가 ‘있으면 좋은 부가 요소’가 아니라 ‘필수 개발 도구’임을 깨달았습니다. 이에 어드민 프로젝트에 테스트 코드를 시범 도입하기로 마음먹었습니다.
제가 테스트 코드 도입을 어드민 프로젝트에서 먼저 실험한 이유는 이렇습니다.
- 간단한 구조: 어드민 프로젝트의 구조는 비교적 간단하고, 반복된 패턴이 있었습니다. 따라서 테스트 코드를 처음 도입하기에 적합했습니다.
- 낮은 실패 부담: 어드민 프로젝트는 사용자와 직접 상호작용을 하지 않는 프로젝트였습니다. 이에 테스트 실패가 서비스에 큰 영향을 미치지 않을 걸로 예상했습니다.
- 용이한 재사용: 어드민 프로젝트용 테스트 패턴을 한 번 작성하면, 유사한 컴포넌트나 로직에도 쉽게 적용할 수 있을 걸로 기대했습니다.
도입 과정

먼저 저는 조직 규모별로 다양한 테스트 코드 도입 사례를 조사하고 실험했습니다. 이 과정에서 인포그랩 프로덕트팀과 어드민 프로젝트에 효과적인 테스트 코드 도입 방안을 찾았고요. 이를 실무에 적용했습니다. 제가 조사한 타사의 테스트 코드 도입 사례와 시사점, 어드민 프로젝트의 테스트 코드 적용 과정을 소개하겠습니다.
타사 사례 연구
제가 조사한 조직 규모별 테스트 코드 도입 사례는 아래와 같습니다.

*E2E(End To End) 테스트: 애플리케이션 흐름을 처음부터 끝까지 테스트
**MSW(Mock Service Worker): API Mocking 라이브러리
***Cypress: 웹 애플리케이션 회귀 테스트를 위한 프론트엔드 테스트 자동화 도구
****Playwright: 브라우저 테스트와 웹 스크래핑을 위한 오픈 소스 자동화 라이브러리
시사점 도출
저는 위 사례에서 다음 두 가지 시사점을 얻었습니다.
- 신규 기능에 우선 적용: 모든 영역에 테스트 코드를 한꺼번에 도입하기보다 신규 기능부터 테스트를 작성해 적용 범위를 점차 확대하는 게 현실적입니다.
- 작은 프로젝트부터 도입 시작: 테스트 코드 도입 효과는 대규모 코드베이스보다 작은 프로젝트에서 더 큽니다. 따라서 어드민 프로젝트는 테스트 코드 도입을 먼저 실험하기에 적합한 환경이었습니다.
이러한 점을 고려해 저는 테스트 코드 도입을 프로젝트로 작게 시작해 적용 범위를 점진적으로 넓히기로 했습니다.
어드민 프로젝트 적용
저는 아래 과정을 거쳐 어드민 프로젝트에 테스트 코드를 적용했습니다.
- 테스트 코드 학습: 저는 단위 테스트를 1차 목적으로 삼았습니다. 그다음, Jest*와 React Testing Library(RTL)를 중심으로 테스트 코드 작성법을 학습하고 실무에 적용했습니다.
- 팀 내 기술 세션 진행: 어드민 프로젝트에서 작성한 테스트 코드를 토대로 테스트 코드 작성법과 관련 도구의 특징을 팀 내 기술 세션에서 소개했습니다. 세션에서 피드백도 받았습니다.
- 팀 내 코드 리뷰: 팀원들과 테스트 코드를 리뷰하며, 보완 사항을 논의했습니다. 또 유의미한 테스트 코드 기준을 마련했습니다.
*Jest: Meta에서 개발한 JavaScript 테스트 프레임워크
도입 효과

저는 어드민 프로젝트에 테스트 코드를 도입한 뒤, 다음 효과를 경험했습니다.
빠른 문제 확인, 수정
코드 변경 이후, ‘기존 기능이 잘 작동하는지’ 신속히 확인할 수 있었습니다. 그동안 어드민 프로젝트에서는 기존 코드와 기능을 자주 수정해야 했는데요. 그 결과, 코드 리팩토링과 기능 확장 시 기존 코드의 안정성이 약화했습니다. 이제 테스트 코드로 이러한 문제를 빠르게 확인하고 해결할 수 있고요. 테스트 코드 덕분에 ‘변경 사항이 어디서 문제를 일으켰는지’ 신속히 추적하고, 수정 시간도 단축했습니다.
높은 개발 속도 유지
팀 내 짧은 스프린트 주기와 높은 릴리즈 속도를 안정적으로 유지했습니다. 테스트 코드로 코드와 기능 문제를 빠르게 확인하고 해결한 덕분입니다. 아울러 테스트 자동화로 요구사항을 구현한 뒤, ‘모든 핵심 로직이 정확히 작동하는지’ 신속히 확인했습니다. 이 또한 개발 속도를 빠르게 유지하는 데 도움이 됐습니다.