-
1. 시작하기(1장~8장)읽은 책/테스트주도개발 By Example 2014. 3. 18. 12:18
Test-Driven Development : By Example
TDD는 단순한 두가지 규칙만을 따른다.
1. 테스트가 실패할 경우만 -> 새로운 코드를 작성!
2. 중복제거!
그리고 두려움을 갖지 맙시다! 용기를 가져요!
1. 불확실한 상태로 있는 대신, 가능하면 재빨리 구체적인 학습을 하기 시작한다.
-> 코딩을 시작하기 전에 정말로 불안한 마음으로 있는데 가만히 있지말고! 학습을 시작해야겠어요!!
2. 침묵을 지키는 대신, 좀 더 분명하게 커뮤니케이션을 한다.
3. 피드백을 회피하는 대신, 도움이 되고 구체적인 피드백을 찾는다.
4. (자신의 나쁜 성깔을 직접 해결해야한다.)
TDD의 리듬
1. 재빨리 테스트를 하나 추가한다.(테스트작성)
1-1.(컴파일되게하기)
2. 모든 테스트를 실행하고, 새로 추가한 것이 실패하는 지 확인한다. (실패하는지 확인하기 위해 실행.)
3. 코드를 조금 바꾼다.
4. 모든 테스트를 실행하고, 전부 성공하는지 확인한다. (실행하게 만듦)
5. 리팩토링을 통해 중복을 제거한다.
TDD의 목적
작동하는 깔끔한 코드를 얻는 것!
해결순서
작동하는!을 해결하고, (위의 리듬 중 1~4, 1~4는 빨리 진행해야 한다.)
깔끔한 코드!를 만들자. (위의 리듬 중 5)
습관으로 만들 것!
할일 목록을 작성하고(-> TEST 할것들로!)
완성후에는
줄을 긋는다. Why ? 일이 얼마나 남았고 할일이 무엇인지 알기 위해서.객체따위를 생각하지 말고 TEST CODE를 먼저 작성하자!!
작은 단계를 밟을 능력을 갖추어야 한다. (큰 단계를 먼저하면 작은단계를 할 수 없다)
모든 연산은 새 객체를 반환해야 한다. ( 값 객체는 equals()를 구현해야한다. )
비슷한 객체라 할지라도, 일단 테스트는 만들고 시작합시다. && 리팩토링전에 테스팅 코드가 있는지 확인하자.
주의해야할 것
테스트와 코드사이에 존재하는 의존성을 제거해야한다.
코드나 테스트 중 한쪽을 수정하면 반드시 다른 한쪽도 수정해야만 한다는 것.
동치성에 대한 코드가 정확히 작동한다는 것을 검증하는데 실패한다면, 곱하기 테스트 역시 곱하기에 대한 코드가 정확하게 작동한다는 것을 검증하는 데 실패하게 된다.
해결방안
1. 가짜로 구현하기: 상수를 반환하게 만들고 진짜 코드를 얻을 때까지 단계적으로 상수를 변수를 바꾸어 간다.
2. 명백한 구현 사용하기 : 실제 구현을 입력한다.
좋은 것!
중복된 로직을 끄집어 내는 것은 객체가 최고!
용어
값 객체 패턴(Value object pattern) : 객체를 값처럼 쓰는 것
삼각측량 : 예제가 두 개이상 있어야만 코드를 일반화 할 수 있다. (단, 삼각측량은 어떻게 리팩토링해야 하는지 전혀 감이 안 올때만 사용하자.)
동치성 : 두 객체가 같다는 의미.
읽어볼 책
김창준 - Extreme Programming Explained
책임중심설계 - 레베카위프스브록(Rebecca wifs-Broke)의 저서 참고
마틴파울러- Refactoring
리포트프레임워크는 뭘까? -> http://c2.com/doc/oopsla91.html
질문!
하위클래스가 있다는 것을 모르는 것이 좋은 건가요?
Money.dollar 랑 Money.createDollar보다 나은건가요?
'읽은 책 > 테스트주도개발 By Example' 카테고리의 다른 글
25~26장 (0) 2014.04.22 2. 1부 끝 (9장~16장) (0) 2014.03.25