-
[OKKYCON: 2018] 정진욱 - 테스트하기 쉬운 코드로 개발하기세미나 2020. 9. 6. 23:22반응형
테스트하기 쉬운 코드란?
- 같은 입력에 항상 같은 결과를 반환하는 코드 (Deterministic)
- 외부상태를 변경하지 않는 코드 (No side effects)
테스트하기 어려운 단계는? (2, 3)
- ConferenceRegistration (VO) 유효성 검사
- 이미 등록된 좌석 수 DB에서 읽어오기 (Not Deterministic)
- 요청한 좌석 수가 확보 가능한지 판단
- 등록 정보 저장 (Side effects)
- HTTP 결과 반환
테스트 코드를 만족하는 만큼만 최소한으로 구현을 하라
- 테스트는 1만 작성했지만 구현은 1, 2, 3을 하게되면 구현 코드 2, 3은 테스트에 커버되지 않음
- TDD의 점진적인 접근 방법의 긍정적인 효과를 잃어버림
방법
- 테스트하기 쉬운 코드와 어려운 코드를 분리
- 두 부류의 코드는 어디서 만나야 하나?
최대한 가장자리에서 만나게 한다. (Controller의 POST 메서드)
void Post(ConferenceRegistration registration) {
유효성검사();
좌석수조회();
좌석수확보가능판단();
등록정보저장();
return 결과반환;
} - 두 부류 코드가 만나는 가장자리는 어떻게 테스트하나?
수동 테스트 (curl, 직접 요청 날려보기) 자동 테스트가 필요 없을 경우
자동 테스트
추천하는 테스트 방법
- 두 부류의 코드르 분리해서 각각 테스트하고
- 가장자리에서 맞물려 돌아가는 코드는 수동테스트
반응형'세미나' 카테고리의 다른 글
[OKKYCON: 2018] 이규원 - 당신들의 TDD가 실패하는 이유 (0) 2020.09.27 [OKKYCON: 2018] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기 (0) 2020.09.13