피드로 돌아가기
"Prime Testable" Code
Dev.toDev.to
Backend

Side Effects 제거와 Deterministic 설계를 통한 테스트 효율 극대화

"Prime Testable" Code

Aaron Maxwell2026년 5월 9일2beginner

Context

복잡한 비즈니스 로직 내의 Side Effects와 Non-deterministic 요소로 인한 Unit Test 작성 비용 증가. 테스트 코드 작성의 심리적/기술적 진입 장벽이 코드 품질 저하와 회귀 버그 발생의 원인으로 작용.

Technical Solution

  • No Side Effects 원칙 적용을 통한 외부 상태 변경(DB 쓰기, 파일 생성 등) 배제
  • Deterministic 설계 도입으로 동일 Input에 대해 항상 동일 Output을 보장하는 순수 함수 구조 지향
  • Prime Testable 영역과 Non-deterministic 영역의 물리적 분리 전략 채택
  • 에러 발생 가능성이 높은 복잡한 로직을 Prime Testable 컴포넌트로 격리하여 테스트 밀도 상향
  • 관심사 분리를 통한 테스트 용이성 확보 및 메인 로직의 신뢰성 기반 구축

- 함수 내부에서 외부 I/O 또는 전역 상태 변경이 발생하는지 확인 - 동일 입력값에 대해 실행 시점마다 결과가 달라지는 Non-deterministic 로직 식별 - 복잡한 계산 로직을 별도의 Pure Function으로 추출하여 Unit Test 대상화 - 테스트 작성이 어려운 구간 발견 시 아키텍처 수준의 로직 분리 검토

원문 읽기