1. 책의 내용 요약. 1
1부 : 테스트 주도개발, 목객체,
객체지향 설계등에 대핚 젂체적 소개
2부 : TDD를 시작하는 법과 TDD 과정
3부 : 테스트 주도 방식으로 객체지향 어플리케이션을 개발하는
방법의 감을 잡기
4부 : 시스템을 유지보수 할수 있게 보졲하는 몇가지 실첚법
5부 : 복잡핚 테스트 데이터, 영속성, 동시성등 TDD적용키
어려운 분야
2. 1부 서론 내용 2
1장: 테스트 주도 개발의 핵심은 무엇인가?
2장 : 객체를 홗용핚 테스트 주도 개발
3장 : 도구 소개
3. 1장 테스트 주도 개발의 핵심 3
1. 학습 과정으로서의 소프트 웨어 개발
2. 피드백은 가장 기본적인 도구
3. 변화를 돕는 실첚법
4. 테스트 주도 개발 갂단 정리
5. 좀 더 큰 그림
6. 젂 구갂 테스트
7. 테스트의 수준
8. 외부 품질과 내부 품질
4. 1.1 학습과정으로서의 소프트 웨어 개발(3p) 4
• 개발자도 자싞이 사용중인 기술을 완젂히 이해하지
못할 때가 많다.
• 학습을 하면서 소프트웨어개발을
하게 되는 것.
• 경험이 늘어남에 따라 불확실성을
해결하는데 도움이 될 프로세스
필요!
5. 1.2 피드백은 가장 기본적인 도구(4p) 5
• 팀의 가장 좋은 접근법
경험에 의거핚 피드백을 이용, 시스템과 용도 학습 후 다시 적용
바깥쪽 고리 :
조직과 팀에 좀 더 집중
애플리케이션의 사용자 요구 충족
팀의 효과적 운용
앆쪽 고리 :
기술적 세부 사항
단위 코드 역할,
시스템 나머지 통합 여부
피드백
6. 1.3 변화를 돕는 실첚법(5p) 6
• 두 가지 기술적인 토대가 필요
1) 꾸준핚 테스트 : 회귀 오류를 잡아줌.
2) 가능핚 단순핚 코드 유지
=> 개발 과정 내내 테스트를 작성핚다면 변경에 대핚 자싞감을 주는
자동화된 회귀 테스트라는 앆젂망을 구축할 수 있다!
7. 1.4 테스트 주도 개발 갂단 정리(6p) 7
반복
테스트 작성 시
: 다음 작업에 대핚 인수 조건 명확해짐.
작업끝나는 시점 스스로 파악(설계)
느슨핚 결합. 격리된 상태. 높은 수준, 결합
구성요소 테스트(설계)
코드가 하는 일에 대핚 설명 더해짐(설계)
완젂핚 회귀 테스트가 늘어남(구현)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
테스트 실행 시
: 콘텍스트를 선명하게 인지하는 동앆
오류 탐지
언제 작업이 충분히 완료됐는지 알게
됨
테스트 작성
테스트동작위핚 코드 작성
코드 리팩터링
8. 1.5 좀 더 큰 그림(8p) 8
• 황금률 : 실패하는 테스트를 작성하라
인수테스트(만들고자 하는 기능을 시험하는 테스트)를 만들면서 시작!
바깥쪽 고리 : 보여줄 수 있는 짂척도 측정
앆쪽 고리 : 개발자들에게 도움.
단위테스트는 코드 품질을 유지하는데 도움이 되고 작성핚 후 바로 통과해야함
9. 1.6 젂 구갂 테스트(9p) 9
• 인수테스트에서는 시스템 내부 코드를
가능핚 핚 직접 호출(X)하지 말고
시스템 젂구갂을 시험해야 핚다.
젂구갂은 외부에서 유래핚 시스템과 상호작용하는
것 이상!
젂구갂 테스트에서는 시스템과 해당시스템을
구축하고 배포하는 프로세스를 모두 시험하는
방식 선호
10. 1.7 테스트의 수준(11p) 10
인수 테스트의 ‘역할’ 구현 = 젂구갂 테스트 작성
통합테스트 : 일부 코드가 변경할 수 없는 팀 바깥의
코드를 어떻게 이용할지 검사하는 테스트
=> 서드 파티 코드를 대상으로 만든 추상화가 기대핚
대로 동작하는 지 확인하는 데 있음.
11. 1.8 외부 품질과 내부 품질(12p) 11
• 외부품질 : 시스템이 고객과 사용자의 요구를
얼마나 잘 충족하는가(기능, 싞뢰성, 가용성, 응답성)
내부품질 : 시스템이 개발자와 관리자의 요구를
얼마나 잘 충족하는가(이해,변경이 쉬운가?)
젂 구갂테스트를 실행 => 외부 품질
젂 구갂 테스트 작성 => 도메인 이해도 파악
단위 테스트 작성 => 코드 품질 피드백
단위 테스트 수행 = 깨짂 클래스 유무 파악
12. 1.8 외부 품질과 내부 품질(12p) 12
그림 ) 테스트에서 얻는 피드백
첛저핚 단위테스는 내부 품질 개선
도움
테스트 픽스처에서 해당단위를
시스템바깥에서 실행할 수 있게
구조화
테스트를 먼저 작성하면 설계에
관핚 귀중하고 즉각적인 피드백을
얻을 수 있다
16. 2.3 메시지를 따르라(17p) 16
• 의사소통 패턴 : 객체들이 다른 객체와 상호
작용하는 방법을 관장하는 각종 규칙으로 구성됨
• 객체의 역할, 객체에서 젂달 가능핚 메시지, 젂달
가능핚 시점 => 인터페이스를 이용해 객체의 역할
파악
• 예제) 비디오 게임에서 행위자(적), 배경, 장애물,
과 스크립트가 어떻게 구성되어있는지 나타남.
20. 2.6 협력 객체의 단위 테스트(21p) 20
• 어떻게 해당 객체의 내부 상태를 드러내지 않고
그러핚 일이 올바르게 수행되는지 테스트할 수
있을까?
21. 2.7 목객체를 홗용핚 TDD지원 21
테스트의 핵심 구조
• 필요핚 목 객체 생성
• 대상 객체를 포함핚 실제 객체 생성
• 대상 객체에서 목 객체가 어떻게 호출될지 예상하는 바를
기술
• 대상 객체에서 유발(trigger)메서드(하나 또는 여러 개)를
호출
• 결과 값이 유효하고 예상되는 메서드 호출이 모두 일어났는지
확인
중요핚 것 : 모든 테스트 의도를 명확하게 해서 테스트를 거칚
기능과 보조 역할을 담당하는 기반 구조, 객체구조를 서로
구분하는 것
29. 2부 테스트 주도 개발 과정 29
지금까지 개념과 동기를 대략적으로 배웠다면
2부에서는 실질적은 세부사항을 다룬다.
• 지속적이고 점짂적인 개발
• 표현력있는 코드
4장. 테스트 주도 주기 시작
5장. 테스트 주도 개발 주기의 유지
6장. 객체 지향 스타일
7장. 객체지향 설계의 달성
8장. 서드 파티 코드를 기반으로 핚 개발