로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

퀄리티 코드

 [소프트웨어 테스팅 원칙과 실제, 패턴]
   
지은이 스티븐 밴스   |   출판사 에이콘  |   발행일 2017년 03월 14일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 30,000원27,000원 10%
마일리지 5% 1,500원
발행일 2017-03-14
ISBN 8960779857 | 9788960779853
기타정보 번역서 | 300쪽 | 일반
예상출고일 금일 가능 (근무일기준)
배송비 무료배송
   
소프트웨어
종합지수 0p
   
이 책의 원서
  Quality Code: Software Testing Principles, Practices, and Patterns
Addison-Wesley Professional | Stephen Vance
 

[ 요약 ]

테스팅이 소프트웨어의 품질을 높이는 중요한 역할을 한다는 점은 누구나 인지하고 있으나, 막상 프로젝트를 마주해 테스팅을 하려면 어떻게 해야 할지 막막하다. 개발자들이 정작 테스팅에 대해서는 별다른 교육을 받지 못한 데 그 원인이 있다. 이 책에서는 저자가 이십여 년 간 프로페셔널 소프트웨어 개발자, 컨설턴트, 매니저 등으로 활동하며 익혀온 코드 수준의 자동화 테스팅 기법을 전수해준다. 테스팅의 기본 원칙 및 패턴과 더불어 소프트웨어 시스템을 어려움 없이 효과적으로 테스트하기 위한 다양한 세부 기법을 소개한다. 또한 근본적으로 소프트웨어를 설계할 때부터 테스팅을 염두에 두고, 테스트하기에 용이하게 소프트웨어를 설계하는 방안을 제시한다.


[ 이 책에서 다루는 내용 ]

■ 전체 코드의 단위 테스팅 단순화, 통합 테스팅 및 시스템 테스팅 개선
■ 의도와 구현을 구분한 테스팅의 신뢰성 및 확장성 향상
■ 테스트 작성법에 대한 혼란과 오해 정복
■ 부작용, 동작 특성, 상황적 제약 조건의 테스트
■ 설계와 테스트 용이성 간 절묘한 상호작용 이해
■ 주요 테스팅 결정을 이끄는 핵심 원칙 발견
■ 획득자/설정자, 문자열 처리, 캡슐화, 오버라이딩 변형, 노출도, 싱글턴 패턴, 에러 조건 등의 테스팅 탐구
■ 복잡한 경쟁 상태의 확정적 재현 및 테스트


[ 이 책의 대상 독자 ]

이 책은 전문 소프트웨어 개발자 또는 코드 품질을 향상하기 위해 코드 수준의 테스팅 실력을 높이려는 소프트웨어 개발자를 위한 책이다. 처음부터 코드의 정확성을 보증하고자 하는 테스트 주도 개발 및 조기 테스트 실무자에게 특히 유용할 것이다. 이 책에 나오는 기법은 대부분 통합 테스팅 혹은 시스템 테스팅에도 적용 가능하다.


[ 이 책의 구성 ]

1부, ‘테스팅의 원칙과 실제’에서는 테스팅을 성공적으로 이끄는 원칙과 실제를 다룬다. 1장에서는 이 책의 접근법을 공학의 컨텍스트에 두고, 공학, 장인정신, 최초 품질 및 소프트웨어 특유의 문제에 관해 논의한다. 2장에서는 의도의 역할에 대해 검토한다. 3장에서는 하나의 요소에 집중할 수 있게 해주는 테스팅 방법의 윤곽을 보여준다. 4장에서는 테스트하는 수고를 줄이는 몇 가지 방안을 비롯해, 설계와 테스트 용이성 간의 상호 영향을 논의한다. 5장에서는 테스트에 대한 의사 결정을 도울 만한 여러 테스팅 원칙을 제시한다.
2부, ‘테스팅과 테스트 용이성 패턴’에서는 테스팅을 위한 구현 패턴을 자세히 다룬다. 먼저 6장에서 테스트를 부트스트랩(bootstrap)하고 기법들의 기본 목록을 서술한다. 6장에서 소개한 주제를 7장부터 12장에 걸쳐 더 구체적으로 살펴본다. 9장에서는 코드의 의도에 관해 더 깊이 살펴보며 중간 정리를 한다. 13장에서는 많은 이들이 불가능하다고 여기는 일에 기술적으로 깊이 파고들어, 확정적으로(deterministically) 경쟁 상태(race condition)를 재현하는 기법들을 소개한다.
3부, ‘실제 사례’에서는 이 책에서 다룬 원칙과 기법들을 적용한 실제 사례 두 가지를 서술한다. 14장에서는 테스트 주도 개발을 통해 처음부터 자바 애플리케이션을 만드는 과정을 살펴보며, 어떻게 시작하고 어떻게 타입에 엄격한 언어에 기법을 적용하는지 설명한다. 15장에서는 테스트되지 않은 오픈소스 자바스크립트 제이쿼리(jQuery) 플러그인을 테스트하도록 가져오면서 동적 언어로 된 레거시(legacy) 코드를 다루는 방법을 설명한다. 두 사례 모두 상세한 깃허브(GitHub) 커밋 이력에 대한 참조 번호까지 함께 보여준다.


[ 지은이의 말 ]

린 생산(Lean production)은 지난 수십 년에 걸쳐 제조업 분야에 혁신을 일으켰다. 종합적 품질 경영(TQM, Total Quality Management)이나 적시 생산(Just-in-time), 제약이론(Theory of Constraints), 토요타 생산 시스템 같은 프레임워크를 통해 전반적인 자동차 및 제조 품질의 상태를 크게 개선하고 핵심적인 경쟁 구도를 낳았다. 애자일 소프트웨어 개발과 같은 접근법은 린 생산 원리를 지식 분야인 소프트웨어 제품 개발에 가져왔지만, 원리를 기계적이지 않은 컨텍스트에 맞춰 조정해야 한다.
품질을 제품의 일부로 포함해 고객 만족을 높이고 총 유지 보수 비용을 줄이려는 아이디어는 테스트 주도 개발(TDD, Test-Driven Development), 우선 테스트(test-first) 및 조기 테스트(test-early) 방식 등으로 이어졌다. 어떤 취향을 지지하든 간에, 테스트 용이한 소프트웨어가 어떻게 생겼는지 이해하고 테스트를 성공적으로 구현하기 위해 다양한 기법을 충분히 익혀야 한다. 나는 원칙과 실제의 괴리가 테스팅 실패의 숨은 원인임을 깨달았다. “테스트 주도 개발을 해봐.”라고 말하기는 쉽지만, 막상 프로젝트를 마주하면 무엇부터 할지 막막한 개발자가 다수다.
사람들에게 테스트 주도 개발 혹은 최소한 조기 테스트 개발을 적용하는 법을 알려주면서 흔히 겪는 난관 중 하나가 테스트 작성법이다. 수학 함수처럼 입력을 사용하기 편한 출력으로 바꾸기만 하는 메소드를 시행(試行)하는 데는 아무 문제가 없다. 하지만 테스트하기 쉽지 않은 부가 효과나 동작 특성, 상황에 따른 제약 조건을 갖는 소프트웨어가 많다.
이 책은 개발자들에게 걸림돌이 되는 구체적인 상황을 어떻게 테스트하는지 거듭 알려달라는 요구에서 비롯됐다. 꾸준히, 몇 분 정도 차분히 자리잡고 앉아서 골칫거리인 코드에 대한 단위 테스트를 작성한다면, 여러분은 새로운 도구를 갖추게 될 것이다.

1부. 테스팅의 원칙과 실제

1장. 공학, 장인정신, 최초 품질
__공학과 장인정신
__초기 품질에서 장인정신의 역할
__소프트웨어 장인정신을 뒷받침하는 실제
__코드 검사기 제약조건 하에서의 단위 테스팅
__커버리지를 고려한 단위 테스팅

2장. 코드의 의도
__그 의도를 어디 뒀더라?
__의도와 구현을 분리하기
__생각해볼 만한 간단한 예제

3장. 뭐부터 하지?
__테스팅 방법

4장. 설계와 테스트 용이성
__설계 패러다임에 대한 일언
__캡슐화와 관측 가능성
__결합과 테스트 용이성

5장. 테스팅 원칙
__테스트를 공들여 작성하라
__제품 내에는 테스트 코드를 넣지 마라
__구현 상의 의도를 검증하라
__결합을 최소화하라
__최소, 신선, 일회용 픽스처를 선호하라
__사용 가능한 장치들을 이용하라
__불완전한 검증보다 완전한 검증을 택하라
__작은 테스트를 작성하라
__문제를 분리하라
__유일한 값을 사용하라
__간단하게 유지하라: 코드를 제거하라
__프레임워크를 테스트하지 마라
__가끔은 프레임워크를 테스트하라

2부. 테스팅과 테스트 용이성 패턴

6장. 기초
__생성자 부트스트랩하기
__단순 획득자 및 설정자 테스트하기
__상수를 공유하라
__로컬 범위에서 재정의하라
__일시적으로 교체하라
__캡슐화하고 오버라이딩하라
__노출도를 조절하라
__주입에 의한 검증

7장. 문자열 처리
__포함 기반 검증
__패턴 기반 검증
__값 기반 정밀 검증
__서식을 사용한 정밀 검증

8장. 캡슐화와 오버라이딩 변형
__데이터 주입
__루프 조건을 캡슐화하라
__에러 주입
__협업자를 대체시켜라
__기존의 무연산 클래스를 사용하라

9장. 노출도 조정
__테스트와 코드를 같은 패키지로 묶기
__분해하기
__접근 수준 변경
__테스트 전용 인터페이스
__이름 없는 것들에 이름 붙이기
__친구 되기
__리플렉션을 통한 강제 접근
__선언을 통한 범위 변경

10장. 중간 정리: 의도 다시 살펴보기
__싱글턴 패턴 테스트하기
__싱글턴 의도
__테스팅 전략
__싱글턴 성격 테스트하기
__의도 알아차리기

11장. 에러 조건 검증
__리턴 값을 검사하라
__예외 타입을 검증하라
__예외 메시지를 검증하라
__예외에 실린 내용을 검증하라
__예외 인스턴스를 검증하라
__예외 설계에 관한 생각

12장. 이미 존재하는 이음매를 사용하라
__직접 호출
__의존 관계 주입
__콜백, 관찰자, 리스너, 통지자
__레지스트리
__팩토리
__최후의 수단인 로그 및 기타 장치들

13장. 병렬 처리
__스레드와 경쟁 상태에 대한 간략한 소개
__경쟁 상태 재현 전략
__스레드의 태스크를 직접 테스트하라
__공통의 로크를 통해 동기화하라
__주입을 통해 동기화하라
__감시 제어를 사용하라
__통계적 검증
__디버거 API

3부. 실제 사례

14장. 테스트 주도 자바
__부트스트랩하기
__첫 번째 기능
__선 자르기
__여러 개 처리로 넘어가기
__고스트 프로토콜
__옵션 가동하기
__흐름에 따라가기
__돌아보며

15장. 레거시 자바스크립트
__시작하기
__DOM화
__치약과 테스팅에 대하여
__큰 함수 다루기
__소프트웨어 고고학
__돌아보며

부록. 참고 문헌

스티븐 밴스(Stephen Vance)
1992년부터 프로페셔널 소프트웨어 개발자, 컨설턴트, 매니저, 멘토, 강사로 활동해왔다. 1997년부터 코드 수준의 자동화 테스팅 기법을 수련하고 가르쳤다. 다양한 산업 분야에서 스타트업 회사부터 포춘 100대 기업까지 두루 거치며 일했다. 미국과 유럽 도처의 소프트웨어 학술회의에서 강연했다. 아내와 함께 메사추세츠 주 보스턴에 살고 있다.
등록된 서평이 없습니다.
카토 토모야...
권건우, 이...
노먼 마우러...
 
전체평균(0)
회원평점   회원서평수 0
에이콘 출판사의 신간
R고 하는 금융 분석: 핵심 금융 이론부터 고급 분석 기법까지 R로 이해하기
파람 지트, 파라샨트 바츠 저
27,000원
(10%↓+5%)
 
퍼펙트 프리젠테이션 시즌 2
김재성 저
27,000원
(10%↓+5%)
 
생활 속 문제를 통해 배워보는 머신 러닝
알렉산더 콤스 저
27,000원
(10%↓+5%)
 
리눅스 컨테이너 LXC
콘스탄틴 이바노프 저
27,000원
(10%↓+5%)
 
AWS 관리 Cookbook
루카스 챈, 로완 유델 저
27,000원
(10%↓+5%)
 
이메일주소수집거부