책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 프로그래밍 기초/개발 방법론
· ISBN : 9788994774916
· 쪽수 : 568쪽
· 출판일 : 2015-03-24
책 소개
목차
1부. TDD와 Django 개요
1장. 기능 테스트를 이용한 Django 설치
- 테스팅 고트님께 복종하라! 테스트가 없으면 아무것도 하지 마라!
- Django 가동 및 실행
- Git 리포지토리 실행
2장. unittest 모듈을 이용한 기능 테스트 확장
- 기능 테스트를 이용한 최소 기능의 애플리케이션 설계
- 파이썬 기본 라이브러리의 unittest 모듈
- 강제 대기
- 커밋
3장. 단위 테스트를 이용한 간단한 홈페이지 테스트
- 첫 Django 애플리케이션과 첫 단위 테스트
- 단위 테스트는 무엇이고, 기능 테스트와 어떤 차이가 있을까?
- Django에서의 단위 테스트
- Django의 MVC, URL, 뷰 함수
- 마침내 실질적인 애플리케이션 코드를 작성한다
- urls.py
- 뷰를 위한 단위 테스트
4장. 왜 테스트를 하는 것인가?
- 프로그래밍은 우물에서 물을 퍼 올리는 것과 같다
- 셀레늄을 이용한 사용자 반응 테스트
- "상수는 테스트하지 마라"는 규칙과 탈출구로 사용할 템플릿
- 리팩터링에 관해
- 메인 페이지 추가 수정
- 정리: TDD 프로세스
5장. 사용자 입력 저장하기
- POST 요청을 전송하기 위한 폼(Form) 연동
- 서버에서 POST 요청 처리
- 파이썬 변수를 전달해서 템플릿에 출력하기
- 스트라이크 세 개면 리팩터
- Django ORM과 첫 모델
- POST를 데이터베이스에 저장하기
- POST 후에 리디렉션
- 템플릿에 있는 아이템 렌더링
- 마이그레이션을 이용한 운영 데이터베이스 생성하기
6장. 최소 동작 사이트 구축
- 기능 테스트 내에서 테스트 격리
- 필요한 경우에는 최소한의 설계를
- TDD를 이용한 새로운 설계 반영하기
- 새로운 설계를 위한 반복
- Django 테스트 클라이언트를 이용한 뷰, 템플릿, URL 동시 테스트
- 목록 아이템을 추가하기 위한 URL과 뷰
- 모델 조정하기
- 각 목록이 하나의 고유 URL을 가져야 한다
- 기존 목록에 아이템을 추가하기 위한 또 다른 뷰
- URL includes를 이용한 마지막 리팩터링
2부. 웹 개발 핵심편
7장. 멋있게 만들기: 레이아웃, 스타일링, 테스트
- 레이아웃과 스타일을 기능적으로 테스트하기
- 멋있게 만들기: 레이아웃, 스타일링, 테스트
- Django 템플릿 상속
- 부트스트랩 통합하기
- Django의 정적 파일
- 부트스트랩 컴포넌트를 이용한 사이트 외형 개선
- 사용자 지정 CSS 사용하기
- 얼버무리고 넘어간 것: collectstatic과 다른 정적 디렉터리
- 이번 장에서 다루지 못한 것
8장. 스테이징 사이트를 이용한 배포 테스트
- TDD와 배포 시 주의가 필요한 사항
- 항상 그렇듯이 테스트부터 시작
- 도메인명 취득
- 수동으로 서버를 호스트 사이트로 프로비저닝하기
- 코드를 수동으로 배포
- 운영 준비 배포 단계
- 자동화
9장. 페브릭을 이용한 배포 자동화
- 배포를 위한 페브릭 스크립트 파헤치기
- 자동화 스크립트 실행해보기
- 배포용 Git 태그
- 추가 정보
10장. 입력 유효성 검사 및 테스트 구조화
- FT 유효성 검사: 빈 작업 아이템 방지
- 모델-레이어 유효성 검증
- 뷰를 통한 모델 유효성 검증
- Django 패턴: 폼 렌더링 뷰와 같은 뷰에서 POST 요청 처리
- 리팩터링: 하드코딩된 URL 제거
11장. 간단한 폼
- 유효성 검증 로직을 폼으로 옮기기
- 뷰에서 폼 이용하기
- POST 요청을 받는 뷰에서 폼 사용하기
- 다른 뷰에 폼 적용하기
- 폼 자체 save 메소드 사용
12장. 고급 폼
- 중복 아이템 확인을 위한 FT
- 뷰 계층에서의 중복 아이템 검증 실험
- 고유성 검증 처리를 위한 복잡한 폼
- List 뷰에 있는 기존 리스트 아이템 폼 사용하기
13장. 조심스럽게 자바스크립트 시도해보기
- FT부터 시작하자
- 기본 자바스크립트 테스트 실행자 설정
- jQuery와 픽스처 Div
- 필요한 기능을 확인하기 위한 자바스크립트 단위 테스트 작성
- TDD 주기에서의 자바스크립트 테스트
- 중요한 상용구 코드와 네임스페이스
- 몇 가지 누락된 것들
14장. 신규 코드 배포하기
- 스테이징 서버 배포
- 운영 서버 배포
- 데이터베이스 에러가 발생한다면?
- 마무리: 신규 릴리즈용 git tag
3부. 고급편
15장. 사용자 인증, 외부 플러그인 통합, 자바스크립트를 이용한 모킹
- Mozilla Persona(BrowserID)
- 예비 코딩 Spiking
- 역스파이킹
- 외부 컴포넌트를 대상으로 하는 자바스크립트 단위 테스트: 첫 번째 모크!
16장. 서버 측 인증 및 파이썬 모킹
- 스파이크 로그인 뷰
- 파이썬을 이용한 모킹
- 사용자 정의 백엔드 인증 역스파이킹: 인터넷 요청 모킹
- 최소 사용자 정의 user 모델
- 진실의 순간: FT가 성공할 것인가?
- 로그아웃 테스트와 함께 FT 끝내기
17장. 테스트 픽스처, 로그, 서버 측 디버깅
- 사전 생성된 세션을 이용해서 로그인 처리 건너뛰기
- 백문이 불여일견: 스테이징을 이용한 마지막 버그 잡기
- 스테이징 서버에 있는 테스트 데이터베이스 관리
- 로그 코드 다듬기
- 정리
18장. 나의 목록 페이지 완성: 아웃사이드-인 TDD
- 대체 방식: 인사이드-아웃
- 왜 아웃사이드-인 방식을 선호하나?
- 나의 목록 기능을 위한 테스트
- 외부 계층: 프레젠테이션 및 템플릿
- 한 계층 내려가기: 뷰 함수(컨트롤러 계층)
- 아웃사이드-인에서의 API 사용
- 뷰 계층의 다음 요구사항: 신규 목록이 소유자를 기억해야 한다
- 모델 계층으로 내려가기
19장. 테스트 격리 및 테스트에 귀 기울이기
- 다시 찾아온 결정의 순간: 뷰 계층이, 존재하지 않는 모델 코드에 의존
- 첫 번째 시도: 격리를 위한 모크 사용
- 테스트에 귀 기울이기: 조잡한 테스트는 리팩터링 신호다
- 완벽하게 격리된 뷰가 되도록 테스트 재작성
- 폼 계층으로 내려가기
- 마지막으로 모델 계층으로 내려가기
- 진실의 순간(그리고 모킹의 위험)
- 계층 간 상호작용은 일종이 계약이다
- 추가 테스트 하나
- 다듬기: 통합된 테스트에서 유지해야 할 것
- 결론: 언제 격리된 테스트 또는 통합된 테스트를 작성해야 하는가?
20장. 지속적 통합
- 젠킨스 설치
- 프로젝트 설정
- 첫 번째 빌드
- 가상 모니터 설정에 의한 헤드리스 방식 FT 실행
- 화면 캡처 취득
- 일반적인 셀레늄 문제: 경합 상태
- 젠킨스 내에서 QUnit 자바스크립트 테스트 및 PhantomJS 실행
- CI 서버 추가 설정사항
21장. SNS의 영향, 페이지 패턴 그리고 실습
- 다중 사용자를 위한 FT와 addCleanup 구현
- 셀레늄 작용/대기 패턴 구현
- 페이지 패턴
- 두 번째 사용자를 위한 FT 확장 및 나의 목록 페이지
- 독자를 위한 실습
22장. 빠른 테스트, 느린 테스트 그리고 논쟁거리
- 가정: 단위 테스트는 매우 빠르고 좋다
- 순수 단위 테스트의 문제점
- 결론: 테스트를 통해 얻고자 하는 것이 무엇인가?
- 구조적 관점의 해결책
- 결론
부록 A. PythonAnywhere
- 파이어폭스 및 셀레늄 세션을 Xvfb와 함께 실행
- Django를 PythonAnywhere 웹 앱으로 설정하기
- /Tmp 폴더 정리
- 화면 캡처
- 배포 관련 장
부록 B. Django 클래스 기반 뷰
- 클래스 기반 제네릭 뷰
- 메인 페이지에 FormView 적용
- form_valid를 이용한 CreateView 변경
- 참조와 목록 추가 처리를 위한 더 복잡한 뷰
- 이전 뷰와 신규 뷰 비교
- CBGV 단위 테스트를 위한 최적의 방법
부록 C. Ansible을 이용한 프로비저닝
- 시스템 패키지와 Nginx 설치
- Gunicorn 설정 및 서비스 재시작을 위한 핸들러 사용
- 추가 작업
부록 D. 데이터베이스 마이그레이션 테스트
- 스테이징 환경에 배포 시도
- 로컬에서의 마이그레이션 테스트 실행
- 데이터 마이그레이션 삽입
- 신규 마이그레이션을 함께 테스트하기
- 결론
부록 E. 추가 작업
- 사이트와 이메일을 통한 알림 기능
- Postgres로 교체
- 다른 종류의 브라우저를 이용해서 테스트 실행
- 404와 500 테스트
- Django 관리 사이트
- BDD 툴 조사
- 보안 테스트 작성
- 디그레이션(Degration) 확인용 테스트
- 캐시 및 성능 테스트
- 자바스크립트 MVC 프레임워크
- 비동기 및 웹소켓
- py.test로 교체
- 클라이언트-서버 암호화
- 여러분이 제안하고 싶은 것은 무엇인가?
부록 F. 커닝 페이퍼
- 초기 프로젝트 설정
- 기본 TDD 작업 흐름
- 개발 환경 테스트에서 탈출하기
- 일반적인 테스트를 위한 조언
- 셀레늄/기능 테스트를 위한 조언
- 아웃사이드-인, 테스트 격리 vs. 통합된 테스트, 모킹
부록 G. 참고 문헌