단위 테스트 : 생산성과 품질을 위한 단위 테스트 원칙과 패턴

단위 테스트 : 생산성과 품질을 위한 단위 테스트 원칙과 패턴

$35.00
Description
소프트웨어 개발에 있어 단위 테스트는 이제 선택이 아니라 필수가 됐다. 단위 테스트에 대한 오해를 바로잡고, 올바른 단위 테스트에 대한 원칙, 테스트를 작성하는 스타일과 효과적인 테스트를 위한 소프트웨어 아키텍처를 이해할 수 있다. 또한 단위 테스트를 통합 테스트와 구분하고, 둘의 차이와 각각 활용법과 적절한 작성법, 안티 패턴 등을 알 수 있다.

저자

블라디미르코리코프

저자:블라디미르코리코프


역자:임준혁
시스템통합,개발자도구,국제표준프로토콜구현,전자상거래서비스,메신저서비스등다양한프로젝트에참여했다.오픈소스와새로운기술에관심이많고,개발자들의생산성과편의성에도움되는도구를만드는데즐거움을느낀다.

목차

1부.더큰그림

1장.단위테스트목표

1.1단위테스트현황
1.2단위테스트목표
1.2.1좋은테스트와좋지않은테스트를가르는요인
1.3테스트스위트품질측정을위한커버리지지표
1.3.1코드커버리지지표에대한이해
1.3.2분기커버리지지표에대한이해
1.3.3커버리지지표에관한문제점
1.3.4특정커버리지숫자를목표로하기
1.4무엇이성공적인테스트스위트를만드는가?
1.4.1개발주기에통합돼있음
1.4.2코드베이스에서가장중요한부분만을대상으로함
1.4.3최소유지비로최대가치를끌어냄
1.5이책을통해배우는것
요약

2장.단위테스트란무엇인가
2.1'단위테스트'의정의
2.1.1격리문제에대한런던파의접근
2.1.2격리문제에대한고전파의접근
2.2단위테스트의런던파와고전파
2.2.1고전파와런던파가의존성을다루는방법
2.3고전파와런던파비교
2.3.1한번에한클래스만테스트하기
2.3.2상호연결된클래스의큰그래프를단위테스트하기
2.3.3버그위치정확히찾아내기
2.3.4고전파와런던파사이의다른차이점
2.4두분파의통합테스트
2.4.1통합테스트의일부인엔드투엔드테스트
요약

3장.단위테스트구조
3.1단위테스트를구성하는방법
3.1.1AAA패턴사용
3.1.2여러개의준비,실행,검증구절피하기
3.1.3테스트내if문피하기
3.1.4각구절은얼마나커야하는가?
3.1.5검증구절에는검증문이얼마나있어야하는가
3.1.6종료단계는어떤가
3.1.7테스트대상시스템구별하기
3.1.8준비,실행,검증주석제거하기
3.2xUnit테스트프레임워크살펴보기
3.3테스트간테스트픽스처재사용
3.3.1테스트간의높은결합도는안티패턴이다
3.3.2테스트가독성을떨어뜨리는생성자사용
3.3.3더나은테스트픽스처재사용법
3.4단위테스트명명법
3.4.1단위테스트명명지침
3.4.2예제:지침에따른테스트이름변경
3.5매개변수화된테스트리팩터링하기
3.5.1매개변수화된테스트를위한데이터생성
3.6검증문라이브러리를사용한테스트가독성향상
요약

2부.개발자에게도움이되는테스트만들기

4장.좋은단위테스트의4대요소
4.1좋은단위테스트의4대요소자세히살펴보기
4.1.1첫번째요소:회귀방지
4.1.2두번째요소:리팩터링내성
4.1.3무엇이거짓양성의원인인가?
4.1.4구현세부사항대신최종결과를목표로하기
4.2첫번째특성과두번째특성간의본질적인관계
4.2.1테스트정확도극대화
4.2.2거짓양성과거짓음성의중요성:역학관계
4.3세번째요소와네번째요소:빠른피드백과유지보수성
4.4이상적인테스트를찾아서
4.4.1이상적인테스트를만들수있는가?
4.4.2극단적인사례1:엔드투엔드테스트
4.4.3극단적인사례2:간단한테스트
4.4.4극단적인사례3:깨지기쉬운테스트
4.4.5이상적인테스트를찾아서:결론
4.5대중적인테스트자동화개념살펴보기
4.5.1테스트피라미드분해
4.5.2블랙박스테스트와화이트박스테스트간의선택
요약

5장.목과테스트취약성
5.1목과스텁구분
5.1.1테스트대역유형
5.1.2도구로서의목과테스트대역으로서의목
5.1.3스텁으로상호작용을검증하지말라
5.1.4목과스텁함께쓰기
5.1.5목과스텁은명령과조회에어떻게관련돼있는가
5.2식별할수있는동작과구현세부사항
5.2.1식별할수있는동작은공개API와다르다
5.2.2구현세부사항유출:연산의예
5.2.3잘설계된API와캡슐화
5.2.4구현세부사항유출:상태의예
5.3목과테스트취약성간의관계
5.3.1육각형아키텍처정의
5.3.2시스템내부통신과시스템간통신
5.3.3시스템내부통신과시스템간통신의예
5.4단위테스트의고전파와런던파재고
5.4.1모든프로세스외부의존성을목으로해야하는것은아니다
5.4.2목을사용한동작검증
요약

6장.단위테스트스타일
6.1단위테스트의세가지스타일
6.1.1출력기반테스트정의
6.1.2상태기반스타일정의
6.1.3통신기반스타일정의
6.2단위테스트스타일비교
6.2.1회귀방지와피드백속도지표로스타일비교하기
6.2.2리팩터링내성지표로스타일비교하기
6.2.3유지보수성지표로스타일비교하기
6.2.4스타일비교하기:결론
6.3함수형아키텍처이해
6.3.1함수형프로그래밍이란?
6.3.2함수형아키텍처란?
6.3.3함수형아키텍처와육각형아키텍처비교
6.4함수형아키텍처와출력기반테스트로전환
6.4.1감사시스템소개
6.4.2테스트를파일시스템에서분리하기위한목사용
6.4.3함수형아키텍처로리팩터링하기
6.4.4예상되는추가개발
6.5함수형아키텍처의단점이해하기
6.5.1함수형아키텍처적용가능성
6.5.2성능단점
6.5.3코드베이스크기증가
요약

7장.가치있는단위테스트를위한리팩터링
7.1리팩터링할코드식별하기
7.1.1코드의네가지유형
7.1.2험블객체패턴을사용해지나치게복잡한코드분할하기
7.2가치있는단위테스트를위한리팩터링하기
7.2.1고객관리시스템소개
7.2.21단계:암시적의존성을명시적으로만들기
7.2.32단계:애플리케이션서비스계층도입
7.2.43단계:애플리케이션서비스복잡도낮추기
7.2..54단계:새Company클래스소개
7.3최적의단위테스트커버리지분석
7.3.1도메인계층과유틸리티코드테스트하기
7.3.2나머지세사분면에대한코드테스트하기
7.3.3전제조건을테스트해야하는가?
7.4컨트롤러에서조건부로직처리
7.4.1CanExecute/Execute패턴사용
7.4.2도메인이벤트를사용해도메인모델변경사항추적
7.5결론
요약

3부.통합테스트

8장.통합테스트를하는이유
8.1통합테스트는무엇인가?
8.1.1통합테스트의역할
8.1.2다시보는테스트피라미드
8.1.3통합테스트와빠른실패
8.2어떤프로세스외부의존성을직접테스트해야하는가
8.2.1프로세스외부의존성의두가지유형
8.2.2관리의존성이면서비관리의존성인프로세스외부의존성다루기
8.2.3통합테스트에서실제데이터베이스를사용할수없으면어떻게할까?
8.3통합테스트:예제
8.3.1어떤시나리오를테스트할까?
8.3.2데이터베이스와메시지버스분류하기
8.3.3엔드투엔드테스트는어떤가?
8.3.4통합테스트:첫번째시도
8.4의존성추상화를위한인터페이스사용
8.4.1인터페이스와느슨한결합
8.4.2프로세스외부의존성에인터페이스를사용하는이유는무엇인가?
8.4.3프로세스내부의존성을위한인터페이스사용
8.5통합테스트모범사례
8.5.1도메인모델경계명시하기
8.5.2계층수줄이기
8.5.3순환의존성제거하기
8.5.4테스트에서다중실행구절사용
8.6로깅기능을테스트하는방법
8.6.1로깅을테스트해야하는가?
8.6.2로깅을어떻게테스트해야하는가?
8.6.3로깅이얼마나많으면충분한가?
8.6.4로거인스턴스를어떻게전달하는가?
8.7결론
요약

9장.목처리에대한모범사례
9.1목의가치를극대화하기
9.1.1시스템끝에서상호작용검증하기
9.1.2목을스파이로대체하기
9.1.3IDomainLogger는어떤가?
9.2목처리에대한모범사례
9.2.1목은통합테스트만을위한것
9.2.2테스트당목이하나일필요는없음
9.2.3호출횟수검증하기
9.2.4보유타입만목으로처리하기
요약

10장.데이터베이스테스트
10.1데이터베이스테스트를위한전제조건
10.1.1데이터베이스를형상관리시스템에유지
10.1.2참조데이터도데이터베이스스키마다
10.1.3모든개발자를위한별도의데이터베이스인스턴스
10.1.4상태기반데이터베이스배포와마이그레이션기반데이터베이스배포
10.2데이터베이스트랜잭션관리
10.2.1제품코드에서데이터베이스트랜잭션관리하기
10.2.2통합테스트에서데이터베이스트랜잭션관리하기
10.3테스트데이터생명주기
10.3.1병렬테스트실행과순차적테스트실행
10.3.2테스트실행간데이터정리
10.3.3인메모리데이터베이스피하기
10.4테스트구절에서코드재사용하기
10.4.1준비구절에서코드재사용하기
10.4.2실행구절에서코드재사용하기
10.4.3검증구절에서코드재사용하기
10.4.4테스트가데이터베이스트랜잭션을너무많이생성하는가?
10.5데이터베이스테스트에대한일반적인질문
10.5.1읽기테스트를해야하는가?
10.5.2리포지터리테스트를해야하는가?
10.6결론
요약

4부.단위테스트안티패턴

11장.단위테스트안티패턴
11.1비공개메서드단위테스트
11.1.1비공개메서드와테스트취약성
11.1.2비공개메서드와불필요한커버리지
11.1.3비공개메서드테스트가타당한경우
11.2비공개상태노출
11.3테스트로유출된도메인지식
11.4코드오염
11.5구체클래스를목으로처리하기
11.6시간처리하기
11.6.1앰비언트컨텍스트로서의시간
11.6.2명시적의존성으로서의시간
11.7결론
요약

출판사 서평

◈이책의구성◈

이책의11개장은크게네개부로나뉜다.1부에서는단위테스트를소개하고일반적인단위테스트원칙을살펴본다.
1장에서는단위테스트의목표를정의하고좋은테스트와좋지않은테스트를구별하는방법을개략적으로살펴본다.
2장에서는단위테스트의정의와단위테스트의두분파를설명한다.
3장에서는단위테스트구성,테스트픽스처(testfixture)재사용,테스트매개변수화와같은몇가지기본주제를되짚어본다.
2부에서는주제의핵심을다룬다.좋은단위테스트를만드는방법을알아보고테스트를좀더가치있게리팩터링하는방법을자세히살펴본다.
4장에서는좋은단위테스트를구성하고이책전체에서사용되는공통적인기준들이되는4대요소를정의한다.
5장에서는목(mock)에대한사례를구축하고테스트취약성과의관계를알아본다.
6장에서는단위테스트의세가지스타일을살펴보고,그중가장품질이좋은스타일은어느것이고그이유는무엇인지알아본다.
7장에서는테스트를너무복잡해지지않게리팩터링하고최소한의유지비로최대한의가치를얻는방법을설명한다.
3부에서는통합테스트와관련된내용을다룬다.
8장에서는통합테스트가무엇인지알아보고,그장점과절충에대해전반적으로살펴본다.
9장에서는목에대해알아보고,목이어떻게테스트에큰도움이되는지를설명한다.
10장에서는테스트에서관계형데이터베이스와어떻게작업하는지를설명한다
4부의11장에서는일반적인단위테스트안티패턴을살펴본다.아마도그중몇몇은전에만난적이있을수도있다.