컬리, BDD 패턴 적용으로 가독성 높은 테스트 코드 작성 사례 공유
·2020.02.24 00:00
핵심 내용
컬리 팀이 적립금 만료일 계산기 기능을 BDD 패턴으로 구현하며 테스트 코드의 가독성과 작성 경험을 개선했다.
자세히 보기
컬리 개발팀이 사내 기술 공유 세션을 통해 BDD(Behavior Driven Development) 패턴을 도입하고, 실제 업무 기능인 적립금 만료일 계산기에 적용한 사례를 공유했다. 기존 테스트 코드의 가독성 문제를 해결하기 위해 JUnit 5의 Nested 구조와 BDD 스타일을 결합했다.
적립금 만료일 정책과 테스트 구현
적립금 만료일 계산기는 지급일을 기준으로 다음 해 같은 분기 말일, 다음 해 같은 일, 또는 N일 후 등 세 가지 정책을 지원한다. 팀은 이 복잡한 로직을 한 번에 하나의 테스트만 작성하는 원칙을 지켜가며 BDD 방식으로 구현했다.
- 정책 1: 지급일 기준 다음 해 같은 분기 말일 (예: 2020년 1월 1일 지급 시 2021년 3월 31일 만료)
- 정책 2: 지급일 기준 다음 해 같은 일
- 정책 3: 지급일 기준 N일 후
페어 프로그래밍과 코드 리뷰를 통한 개선
초기 BDD 테스트 코드는 계층 구조가 명확하지 않아 가독성이 떨어졌다. 이에 따라 페어 프로그래밍과 PR(Pull Request) 리뷰를 거쳐 코드를 다듬었다. 특히 '테스트 코드는 한 번에 하나만 작성한다'는 원칙을 엄격히 적용해 불필요한 복잡성을 제거했다.
최종적으로 완성된 테스트 코드는 자연어에 가까운 서술로 작성되어 비개발자나 신규 입사자도 비즈니스 로직을 쉽게 이해할 수 있도록 개선됐다. 팀은 BDD 패턴이 테스트 작성의 재미와 가독성을 동시에 높여준다고 평가하며, 향후에도 BDD 기반 개발을 지속 실험할 계획이다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.