본문 바로가기
책/단위 테스트

[단위 테스트] 6장 단위 테스트 스타일

by 오오오오니 2025. 3. 18.

6장 단위 테스트 스타일

2025년 2월 3일

♦️ 단위 테스트 스타일

💡
함수형 프로그래밍과 출력 기반 테스트와의 관련성
단위테스트 품질
출력기반 > 상태기반 > 통신 기반

출력 기반 테스트

입력을 넣고 생성되는 출력을 점검하는 방식
순수 함수 방식으로 작성된 코드에만 적용
전역 상태나 내부 상태를 변경하지 않는 코드에만 적용되므로 반환 값만 검증하면 됨.

상태 기반 테스트

작업이 완료된 후 시스템의 상태를 확인
출력 기반 테스트보다 크기가 큰 편이므로 유지보수가 쉽지 않다.

통신 기반 테스트

목을 사용해 테스트 대상 시스템과 협력자 간의 통신을 검증
애플리케이션 경계를 넘어서 외부 환경에 사이드 이펙트가 보이는 통신만 확인해야 한다.

리팩터링 내성 지표로 비교

출력 > 상태 > 통신
출력 기반 테스트가 테스트 대상 메서드에만 결합되므로 거짓 양성 방지에 가장 우수
애플리케이션 경계를 넘는 상호 작용을 확인하고 해당 상호 작용의 사이드 이펙트가 외부 환경에 보이는 경우에만 목이 괜찮다.

유지 보수성

출력 > 상태 > 통신

함수형 프로그래밍

사이드 이펙트가 없는 코드 선호를 강조하는 프로그래밍 방식
수학적 함수 처럼 숨은 입출력이 없는 함수 스타일
출력 기반 테스트를 적용할 수 있는 메서드 유형은 수학적 함수뿐
숨은 입출력의 유형: 사이드 이펙트, 예외, 내외부 상태에 대한 참조

함수형 아키텍처

비지니스 로직을 처리하는 코드와 사이드 이펙트를 일으키는 코드 분리
결정을 내리는 코드 → 함수형 코어
해당 결정에 따라 작용하는 코드 → 가변 셀
⇒ 두 계층을 잘 분리하면 출력 기반 테스트 가능
⇒ 가변 셀은 통합 테스트에 맡길 수 있음
→ 모든 프로젝트가 복잡도가 높은 것이 아니여서 복잡도와 중요성을 고려해 함수형 아키텍처를 전략적으로 적용
→ 모든 테스트를 출력 기반 스타일로 전환 하는 것이 아니라 가능한 한 많은 테스트 전환