본문 바로가기
SW

테스트 주도 개발(Test-Driven Development:By Example) - 1부 : 화폐 예제 (3 ~ 4장)

by 라꾸스떼(YR) 2020. 2. 1.
반응형

[3장] 모두를 위한 평등

어떤 계약에 새로운 보상 항목을 추가하면 그 계약 자체가 변하게 된다.

객체를 값처럼 쓸 수 있는데 이것을 값 객체 패턴(value object pattern)이라고 한다. 값 객체에 대한 제약사항 중 하나는 객체의 인스턴스 변수가 생성자를 통해서 일단 설정된 후에는 결코 변하지 않는다는 것이다. 값 객체를 사용하면 별칭 문제에 대해 걱정할 필요가 없다는 아주 큰 장점이 있다.

값 객체가 암시하는 것 중 하나는 2장에서와 같이 모든 연산은 새 객체를 반환해야 한다는 것이다.

삼각측량을 이용하려면 예제가 두 개 이상있어야만 코드를 일반화할 수 있다. 테스트 코드와 모델 코드 사이의 중복을 잠깐만 무시하자. 두 번째 예가 좀더 일반적인 해를 필요로 할 때, 오로지 그때만 비로소 일반화한다.

어떻게 리팩토링해야 하는지 전혀 감이 안 올 때만 삼각측량을 사용한다.

 

[정리]

-우리의 디자인 패턴(값 객체)이 하나의 또다른 오퍼레이션을 암시한다는 걸 알아챘다.

 

[4장] 프라이버시

동치성 문제를 정의했으므로 이를 이용하여 테스트가 조금 더 많은 이야기를 해줄 수 있도록 만들자.

만약 동치성 테스트가 동치성에 대한 코드가 정확히 작동한다는 것을 검증하는 데 실패한다면, 곱하기 테스트 역시 곱하기에 대한 코드가 정확하게 작동한다는 것을 검증하는 데 실패하게 된다. 이것은 TDD를 하면서 적극적으로 관리해야 할 위험 요소다. 우리는 완벽함을 위해 노력하지는 않는다. 모든 것을 두번 말함으로써(코드와 테스트로 한 번씩) 자신감을 가지고 전진할 수 있을 만큼만 결함의 정도를 낮추기를 희망할 뿐이다.

 

[정리]

-오직 테스트를 향상시키기 위해서만 개발된 기능을 사용했다.

-두 테스트가 동시에 실패하면 망한다는 점을 인식했다.

-위험 요소가 있음에도 게속 진행했다.

-테스트와 코드 사이의 결합도를 낮추기 위해, 테스트하는 객체의 새 기능을 사용했다.

반응형

댓글