테스트하기 쉬운 코드의 조건

규갓 God Gyu·2025년 3월 25일

면접질문

목록 보기
101/142

순수 함수 - 동일한 입력에 대해 항상 동일한 출력을 반환하는, 부수 효과가 없는 함수
부수 효과를 일으키는 비순수 함수는 테스트하기 까다로움
ex - 함수 외부의 상태에 의존하거나, API 호출을 하거나, DOM을 직접 조작하는 등의 동작이 포함된 함수는 외부의 영향을 받으므로 테스트의 정확성을 보장 받기 어려움
반면 입력 받아 단순히 계산한 값을 반환하는 순수함수는 독립적으로 테스트하기 좋음

단일 책임 원칙을 준수한 코드도 테스트하기 용이
하나의 함수나 모듈이 한 번에 많은 역할 수행 시 테스트를 작성하기 어려움
ex - 데이터를 가져오는 함수가 UI를 렌더링하는 기능까지x - 데이터를 가져오는 함수가 UI를 렌더링하는 기능까지 포함한다면 테스트 작성하기 불리함
테스트 코드의 복잡도가 증가하며, 테스트가 실패할 때 그 원인을 파악하기 어려워지기 때문
역할 명확히 분리하여 한 가지 기능만 담당하도록 설계시, 테스트 코드가 간결하고 명확해짐

예측하기 쉬운 코드가 테스트하기 용이
코드가 복잡하고 내부동작 쉽게 이해할 수 없다면 테스트 작성하는 것도 어려움
따라서 명확한 변수명, 일관된 코드 스타일 유지, 예상치 못한 동작이 발생하지 않도록 설계하는 것이 주요

테스트 용이성 높이기 위해 코드 수정하는 게 합리적??

오히려 유지보수성을 해칠 때도 있음
ex - 테스트를 위해 private 메서드를 public으로 바꾸거나, 테스트만을 위한 메서드를 만드는 등의 행위는 오히려 코드 품질을 저하시킴

다만 테스트 작성이 어려우면 코드 품질에도 문제가 있을 가능성이 큼
ex - 함수 너무 많은 역할, 의존성이 강하게 결합되어 있을 시 테스트 어려움
이럴 땐 테스트 쉽게 만들기 위해 코드 개선 고려하는 것이 좋음
이러한 개선은 테스트 용이성 높일 뿐만 아니라 궁극적으로 코드의 품질 높임

profile
웹 개발자 되고 시포용

0개의 댓글