단위 테스트 코드 작성을 기본으로 하는 테스트 주도 개발 방식은 소프트웨어가 테스트 가능한(Testable) 구조를 갖도록 강제하며, 이로 인해 보다 간단하면서도 구조화된 설계로 이끌 뿐만 아니라 코드에 대한 신뢰를 높일 수 있는 효과적인 방법이다. 이 책에서는 Go, 자바스크립트, 파이썬의 세 가지 프로그래밍 언어로 테스트 주도 개발을 실천하는 실용적 방법을 제공한다. 켄트 벡(Kent Beck)의 저서 『테스트 주도 개발』(인사이트, 2014)에서 다룬 돈 문제(Money Problem) 예제를 각 언어로 재해석해 서술했으며, 테스트 주도 개발 방식에 쉽고 재미있게 익숙해질 수 있도록 돕는다. 실패하는 테스트를 먼저 작성하고 프로덕션 코드를 작성해 테스트를 통과하게 만든 후 개선하는, '레드-그린-리펙터 사이클'의 테스트 주도 개발 필수 구성 요소 세 단계를 다룬다. 또한 GitHub Action을 활용한 지속적 통합과, 자동화된 회귀 테스트의 실천적 방법을 제시한다.
Contents
1부 시작하기
1장. 돈 문제
__레드-그린-리팩터: TDD 구성 요소
__문제 인식
__첫 번째 실패하는 테스트
____Go
____자바스크립트
____파이썬
__그린으로 전환
____Go
____자바스크립트
____파이썬
__마무리하기
____Go
____자바스크립트
____파이썬
__변경 사항 반영하기
__중간 점검
____Go
____자바스크립트
____파이썬
2장. 다양한 통화로 돈 계산
__유로에 발 들이기
____Go
____자바스크립트
____파이썬
__DRY한 코드를 유지하라
____Go
____자바스크립트
____파이썬
__반복하지 말라고 하지 않았나?
__분할 정복
____Go
____자바스크립트
____파이썬
__마무리하기
____Go
____자바스크립트
____파이썬
__변경 사항 반영하기
__중간 점검
__코드를 모듈로 나누기
__자바스크립트 모듈로 넘어가기
____CommonJS
____비동기 모듈 정의
____유니버설 모듈 정의
____ESModules
__테스트 개선하기
____테스트에서 중복 제거하기
____테스트 클래스 및 테스트 메서드 추가하기
____자동으로 테스트를 찾고 실행하기
____테스트가 성공적으로 실행되면 출력 생성하기
____앞서 실행된 테스트가 어써션에서 실패해도 모든 테스트를 실행하기
__변경 사항 반영하기
__중간 점검
__환율 변경
____Go
____자바스크립트
____파이썬
__변경 사항 반영하기
__중간 점검
13장. 지속적 통합
__핵심 개념
____버전 관리
____빌드 서버 및 에이전트
____아티팩트 저장소
____배포 환경
__모두 합치기
____깃허브 계정 생성
____깃허브 계정 인증
____코드 저장소를 깃허브에 푸시
____CI 빌드 스크립트 준비
____Go
____JavaScript
____Python
__변경 사항 반영하기
__중간 점검
__온라인 REPL
____Repl.it
____LeetCode
____CoderPad
____Go 플레이그라운드
____온라인 REPL의 종합 목록
__통합 개발 환경
____비주얼 스튜디오 코드
____인텔리제이 IDEA
____이클립스
__언어 도구 설치하기
____Go
____자바스크립트/ES6
____파이썬
부록 B. 세 언어의 간략한 역사
__Go
__자바스크립트
____단언 모듈
____모듈 메커니즘
__파이썬
부록 C. 감사의 말
Author
살림 시디퀴,김인태
소프트웨어 개발자, 교육자, 연사이자 저자다. 몇 번의 기술 호황과 불황이 반복되는 시기를 겪으며 의료, 유통, 관공서, 금융 및 제약 부문에서 크고 작은 팀의 일원으로 소프트웨어를 개발했다. 소프트웨어를 개발하는 동안 부끄러운지도 모른 채 저질렀던 실수에서 얻은 교훈을 다른 이들과 공유하고자 한다. 노력을 토대로 세계 무대로 나아가길 즐긴다. 경험을 글로 풀어 블로그(http://thesaleem.com/blog)에 게시하는데, 가끔은 제삼자의 관점에서 쓴 글도 볼 수 있다.
소프트웨어 개발자, 교육자, 연사이자 저자다. 몇 번의 기술 호황과 불황이 반복되는 시기를 겪으며 의료, 유통, 관공서, 금융 및 제약 부문에서 크고 작은 팀의 일원으로 소프트웨어를 개발했다. 소프트웨어를 개발하는 동안 부끄러운지도 모른 채 저질렀던 실수에서 얻은 교훈을 다른 이들과 공유하고자 한다. 노력을 토대로 세계 무대로 나아가길 즐긴다. 경험을 글로 풀어 블로그(http://thesaleem.com/blog)에 게시하는데, 가끔은 제삼자의 관점에서 쓴 글도 볼 수 있다.