이미 소장하고 있다면 판매해 보세요.
|
차례
옮긴이의 글 추천의 글 지은이의 글 감사의 글 1부 서론 1장 테스트 주도 개발의 핵심은 무엇인가? 1.1 학습 과정으로서의 소프트웨어 개발 1.2 피드백은 가장 기본적인 도구다 1.3 변화를 돕는 실천법 1.4 테스트 주도 개발 간단 정리 1.5 좀 더 큰 그림 1.6 전 구간 테스트 1.7 테스트의 수준 1.8 외부 품질과 내부 품질 2장 객체를 활용한 테스트 주도 개발 2.1 객체망 2.2 값과 객체 2.3 메시지를 따르라 2.4 묻지 말고 말하라 2.5 그래도 가끔은 물어라 2.6 협력 객체의 단위 테스트 2.7 목 객체를 활용한 TDD 지원 3장 도구 소개 3.1 이미 아는 내용이라면 넘어가도 좋다 3.2 간략한 JUnit 4 소개 3.3 햄크레스트 매처와 assertThat() 3.4 jMock2: 목 객체 2부 테스트 주도 개발 과정 4장 테스트 주도 주기 시작 4.1 우선 동작하는 골격을 대상으로 테스트하라 4.2 동작하는 골격의 외형 결정 4.3 피드백 소스 구축 4.4 불확실성은 일찍 드러내라 5장 테스트 주도 개발 주기의 유지 5.1 각 기능을 인수 테스트로 시작하라 5.2 회귀를 포착하는 테스트와 진행 상황을 측정하는 테스트를 분리하라 5.3 테스트를 가장 간단한 성공 케이스로 시작하라 5.4 읽고 싶어 할 테스트를 작성하라 5.5 테스트가 실패하는 것을 지켜보라 5.6 입력에서 출력 순서로 개발하라 5.7 메서드가 아닌 행위를 단위 테스트하라 5.8 테스트에 귀를 기울이라 5.9 주기의 미세 조정 6장 객체 지향 스타일 6.1 유지 보수성을 고려한 설계 6.2 내부 대 이웃 6.3 단일 책임 원칙 6.4 객체 이웃의 유형 6.5 전체는 부분의 합보다 단순해야 한다 6.6 콘텍스트 독립성 6.7 올바른 정보 감추기 6.8 우리 견해가 반영된 관점 7장 객체 지향 설계의 달성 7.1 테스트를 먼저 작성하는 것이 설계에 어떻게 도움이 되는가 7.2 분류보다 의사소통 7.3 값 타입 7.4 객체는 어디에서 오는가? 7.5 인터페이스로 관계를 식별하라 7.6 인터페이스도 리팩터링하라 7.7 객체를 구성해 시스템의 행위를 기술하라 7.8 고수준 프로그래밍을 위한 대비 7.9 그럼 클래스는? 8장 서드 파티 코드를 기반으로 한 개발 8.1 소유한 타입에 대해서만 목 객체를 적용하라 8.2 통합 테스트에서 애플리케이션 객체에 목 객체를 적용하라 3부 동작하는 예제 9장 경매 스나이퍼 개발 의뢰 9.1 맨 처음부터 시작하기 9.2 경매와의 상호 작용 9.3 안전하게 진행하기 9.4 이건 진짜가 아니야 10장 동작하는 골격 10.1 골격 사용 준비 10.2 최초 테스트 10.3 몇 가지 초기 선택 11장 첫 테스트 통과하기 11.1 테스트 도구 구축 11.2 테스트 실패와 통과 11.3 필요한 최소한의 것 12장 입찰 준비 12.1 시장 소개 12.2 입찰 테스트 12.3 AuctionMessageTranslator 12.4 가격 메시지 분석 12.5 마무리 13장 스나이퍼가 입찰하다 13.1 AuctionSniper 도입 13.2 입찰 전송 13.3 구현 정리 13.4 결정을 미루라 13.5 창발적 설계 14장 스나이퍼가 경매에서 낙찰하다 14.1 우선 실패하는 테스트를 작성한다 14.2 누가 입찰자에 대해 알고 있는가? 14.3 스나이퍼는 할 말이 더 있다 14.4 스나이퍼가 일부 상태를 획득하다 14.5 스나이퍼가 낙찰하다 14.6 꾸준하게 진행하기 15장 실제 사용자 인터페이스를 향해 15.1 좀 더 현실적인 구현 15.2 가격 세부 사항 표시 15.3 스나이퍼 이벤트의 단순화 15.4 완수 15.5 마지막 손질 15.6 고찰 16장 여러 품목에 대한 스나이핑 16.1 여러 품목에 대한 테스트 16.2 사용자 인터페이스를 통한 항목 추가 16.3 고찰 17장 Main 분석 17.1 역할 찾기 17.2 채팅 추출 17.3 연결 추출 17.4 SnipersTableModel 추출 17.5 고찰 18장 세부 사항 처리 18.1 좀 더 유용한 애플리케이션 18.2 충분할 때 멈추라 18.3 고찰 19장 실패 처리 19.1 뭔가 제대로 동작하지 않는다면? 19.2 실패 감지 19.3 실패 보여주기 19.4 스나이퍼 연결 끊기 19.5 실패 기록 19.6 고찰 4부 지속 가능한 테스트 주도 개발 20장 테스트에 귀 기울이기 20.1 대체할 수 없는 객체에 대해 목 객체를 적용해야 한다(마법을 쓰지 않고) 20.2 로깅은 기능이다 20.3 구상 클래스에 대한 목 객체 적용 20.4 값에 목 객체를 적용하지 말라 20.5 비대한 생성자 20.6 혼동되는 객체 20.7 너무 많은 의존성 20.8 너무 많은 예상 구문 20.9 테스트가 우리에게 말해주는 것(여러분이 귀 기울인다면) 21장 테스트 가독성 21.1 테스트 이름은 기능을 기술한다 21.2 정규 테스트 구조 21.3 테스트 코드의 능률화 21.4 단정과 예상 구문 21.5 리터럴과 변수 22장 복잡한 테스트 데이터 만들기 22.1 테스트 데이터 빌더 22.2 비슷한 객체 생성 22.3 빌더 조합 22.4 팩터리 메서드를 이용한 도메인 모델 강조 22.5 사용 시점에서 중복 없애기 22.6 의사소통이 우선이다 23장 테스트 진단 23.1 실패하는 설계 23.2 작고, 문제에 집중하고, 이름을 잘 지은 테스트 23.3 설명력 있는 단정 메시지 23.4 매처를 활용한 세부 사항 강조 23.5 자기 서술적인 값 23.6 명확하게 가공된 값 23.7 추적자 객체 23.8 예상이 충족됐음을 명시적으로 단정하라 23.9 진단은 일급 기능이다 24장 테스트 유연성 24.1 표현이 아닌 정보를 위한 테스트 24.2 정확한 단정 24.3 정확한 예상 구문 24.4 ‘실험용 쥐’ 객체 5부 고급 주제 25장 영속성 테스트 25.1 들어가며 25.2 영속화 상태에 영향을 주는 테스트 격리 25.3 테스트 트랜잭션 경계를 명시적으로 만들기 25.4 영속성 연산을 수행하는 객체에 대한 테스트 25.5 영속화 가능한 객체 테스트하기 25.6 하지만 데이터베이스는 느리다! 26장 단위 테스트와 스레드 26.1 기능과 동시성 정책의 분리 26.2 동기화에 대한 단위 테스트 26.3 수동적인 객체에 대한 부하 테스트 26.4 백그라운드 스레드를 이용한 테스트 스레드 동기화 26.5 단위 부하 테스트의 한계 27장 비동기 코드 테스트 27.1 샘플링 또는 대기 27.2 두 가지 구현 27.3 제어하기 어려운 테스트 27.4 갱신 내역 분실 27.5 아무런 효과가 없는 행동에 대한 테스트 27.6 동기화와 단정 구별 27.7 이벤트 소스의 외부화 후기 목 객체의 간략한 역사 부록 A jMock2 정리 노트 부록 B 햄크레스트 매처 작성 참고 문헌 찾아보기 |
|
“TDD로 좀 더 탄탄한 객체 지향 개발을 이끄는 안내서”
테스트 주도 개발은 코드를 짜기 전에 테스트를 먼저 만들라는 단순한 아이디어에서 출발하지만 개발자의 숙련된 기술과 판단이 필요하다. 이 책은 소프트웨어 개발의 여러 층위에서 TDD가 어떻게 작동하는지 보여주면서 테스트로 코드를 객체 지향적으로 구성하고 기능을 구현하며 목 객체로 객체 간 관계를 설명하는 방법을 제시함으로써 TDD를 사용하는 팀이 실제 개발 프로젝트에서 부딪힐 법한 문제를 체계적으로 풀어가는 가이드를 제안한다. 이 책에서 다루는 내용: * TDD를 효과적으로 구현하는 법 * 더 깔끔하고 유지 보수하기 좋은 코드를 만드는 법 * 테스트로 지속 가능한 품질 유지하기 * 실제 개발 프로젝트에서 TDD, 목 객체, 객체 지향 설계를 함께 활용하는 법 이해하기 * 목 객체로 객체 지향 설계 가이드하기 * TDD 중 부딪히는 난관 해결하기 |