퀄리티 코드 [소프트웨어 테스팅 원칙과 실제, 패턴]
- 원서명Quality Code: Software Testing Principles, Practices, and Patterns (ISBN 9780321832986)
- 지은이스티븐 밴스(Stephen Vance)
- 옮긴이이태휘
- ISBN : 9788960779853
- 30,000원
- 2017년 03월 14일 펴냄 (절판)
- 페이퍼백 | 300쪽 | 188*235mm
- 시리즈 : 소프트웨어 테스팅
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
요약
테스팅이 소프트웨어의 품질을 높이는 중요한 역할을 한다는 점은 누구나 인지하고 있으나, 막상 프로젝트를 마주해 테스팅을 하려면 어떻게 해야 할지 막막하다. 개발자들이 정작 테스팅에 대해서는 별다른 교육을 받지 못한 데 그 원인이 있다. 이 책에서는 저자가 이십여 년 간 프로페셔널 소프트웨어 개발자, 컨설턴트, 매니저 등으로 활동하며 익혀온 코드 수준의 자동화 테스팅 기법을 전수해준다. 테스팅의 기본 원칙 및 패턴과 더불어 소프트웨어 시스템을 어려움 없이 효과적으로 테스트하기 위한 다양한 세부 기법을 소개한다. 또한 근본적으로 소프트웨어를 설계할 때부터 테스팅을 염두에 두고, 테스트하기에 용이하게 소프트웨어를 설계하는 방안을 제시한다.
이 책에서 다루는 내용
■ 전체 코드의 단위 테스팅 단순화, 통합 테스팅 및 시스템 테스팅 개선
■ 의도와 구현을 구분한 테스팅의 신뢰성 및 확장성 향상
■ 테스트 작성법에 대한 혼란과 오해 정복
■ 부작용, 동작 특성, 상황적 제약 조건의 테스트
■ 설계와 테스트 용이성 간 절묘한 상호작용 이해
■ 주요 테스팅 결정을 이끄는 핵심 원칙 발견
■ 획득자/설정자, 문자열 처리, 캡슐화, 오버라이딩 변형, 노출도, 싱글턴 패턴, 에러 조건 등의 테스팅 탐구
■ 복잡한 경쟁 상태의 확정적 재현 및 테스트
이 책의 대상 독자
이 책은 전문 소프트웨어 개발자 또는 코드 품질을 향상하기 위해 코드 수준의 테스팅 실력을 높이려는 소프트웨어 개발자를 위한 책이다. 처음부터 코드의 정확성을 보증하고자 하는 테스트 주도 개발 및 조기 테스트 실무자에게 특히 유용할 것이다. 이 책에 나오는 기법은 대부분 통합 테스팅 혹은 시스템 테스팅에도 적용 가능하다.
이 책의 구성
1부, ‘테스팅의 원칙과 실제’에서는 테스팅을 성공적으로 이끄는 원칙과 실제를 다룬다. 1장에서는 이 책의 접근법을 공학의 컨텍스트에 두고, 공학, 장인정신, 최초 품질 및 소프트웨어 특유의 문제에 관해 논의한다. 2장에서는 의도의 역할에 대해 검토한다. 3장에서는 하나의 요소에 집중할 수 있게 해주는 테스팅 방법의 윤곽을 보여준다. 4장에서는 테스트하는 수고를 줄이는 몇 가지 방안을 비롯해, 설계와 테스트 용이성 간의 상호 영향을 논의한다. 5장에서는 테스트에 대한 의사 결정을 도울 만한 여러 테스팅 원칙을 제시한다.
2부, ‘테스팅과 테스트 용이성 패턴’에서는 테스팅을 위한 구현 패턴을 자세히 다룬다. 먼저 6장에서 테스트를 부트스트랩(bootstrap)하고 기법들의 기본 목록을 서술한다. 6장에서 소개한 주제를 7장부터 12장에 걸쳐 더 구체적으로 살펴본다. 9장에서는 코드의 의도에 관해 더 깊이 살펴보며 중간 정리를 한다. 13장에서는 많은 이들이 불가능하다고 여기는 일에 기술적으로 깊이 파고들어, 확정적으로(deterministically) 경쟁 상태(race condition)를 재현하는 기법들을 소개한다.
3부, ‘실제 사례’에서는 이 책에서 다룬 원칙과 기법들을 적용한 실제 사례 두 가지를 서술한다. 14장에서는 테스트 주도 개발을 통해 처음부터 자바 애플리케이션을 만드는 과정을 살펴보며, 어떻게 시작하고 어떻게 타입에 엄격한 언어에 기법을 적용하는지 설명한다. 15장에서는 테스트되지 않은 오픈소스 자바스크립트 제이쿼리(jQuery) 플러그인을 테스트하도록 가져오면서 동적 언어로 된 레거시(legacy) 코드를 다루는 방법을 설명한다. 두 사례 모두 상세한 깃허브(GitHub) 커밋 이력에 대한 참조 번호까지 함께 보여준다.
목차
목차
- 1부. 테스팅의 원칙과 실제
- 1장. 공학, 장인정신, 최초 품질
- 공학과 장인정신
- 초기 품질에서 장인정신의 역할
- 소프트웨어 장인정신을 뒷받침하는 실제
- 코드 검사기 제약조건 하에서의 단위 테스팅
- 커버리지를 고려한 단위 테스팅
- 2장. 코드의 의도
- 그 의도를 어디 뒀더라?
- 의도와 구현을 분리하기
- 생각해볼 만한 간단한 예제
- 3장. 뭐부터 하지?
- 테스팅 방법
- 테스팅 방법
- 4장. 설계와 테스트 용이성
- 설계 패러다임에 대한 일언
- 캡슐화와 관측 가능성
- 결합과 테스트 용이성
- 5장. 테스팅 원칙
- 테스트를 공들여 작성하라
- 제품 내에는 테스트 코드를 넣지 마라
- 구현 상의 의도를 검증하라
- 결합을 최소화하라
- 최소, 신선, 일회용 픽스처를 선호하라
- 사용 가능한 장치들을 이용하라
- 불완전한 검증보다 완전한 검증을 택하라
- 작은 테스트를 작성하라
- 문제를 분리하라
- 유일한 값을 사용하라
- 간단하게 유지하라: 코드를 제거하라
- 프레임워크를 테스트하지 마라
- 가끔은 프레임워크를 테스트하라
- 2부. 테스팅과 테스트 용이성 패턴
- 6장. 기초
- 생성자 부트스트랩하기
- 단순 획득자 및 설정자 테스트하기
- 상수를 공유하라
- 로컬 범위에서 재정의하라
- 일시적으로 교체하라
- 캡슐화하고 오버라이딩하라
- 노출도를 조절하라
- 주입에 의한 검증
- 7장. 문자열 처리
- 포함 기반 검증
- 패턴 기반 검증
- 값 기반 정밀 검증
- 서식을 사용한 정밀 검증
- 8장. 캡슐화와 오버라이딩 변형
- 데이터 주입
- 루프 조건을 캡슐화하라
- 에러 주입
- 협업자를 대체시켜라
- 기존의 무연산 클래스를 사용하라
- 9장. 노출도 조정
- 테스트와 코드를 같은 패키지로 묶기
- 분해하기
- 접근 수준 변경
- 테스트 전용 인터페이스
- 이름 없는 것들에 이름 붙이기
- 친구 되기
- 리플렉션을 통한 강제 접근
- 선언을 통한 범위 변경
- 10장. 중간 정리: 의도 다시 살펴보기
- 싱글턴 패턴 테스트하기
- 싱글턴 의도
- 테스팅 전략
- 싱글턴 성격 테스트하기
- 의도 알아차리기
- 11장. 에러 조건 검증
- 리턴 값을 검사하라
- 예외 타입을 검증하라
- 예외 메시지를 검증하라
- 예외에 실린 내용을 검증하라
- 예외 인스턴스를 검증하라
- 예외 설계에 관한 생각
- 12장. 이미 존재하는 이음매를 사용하라
- 직접 호출
- 의존 관계 주입
- 콜백, 관찰자, 리스너, 통지자
- 레지스트리
- 팩토리
- 최후의 수단인 로그 및 기타 장치들
- 13장. 병렬 처리
- 스레드와 경쟁 상태에 대한 간략한 소개
- 경쟁 상태 재현 전략
- 스레드의 태스크를 직접 테스트하라
- 공통의 로크를 통해 동기화하라
- 주입을 통해 동기화하라
- 감시 제어를 사용하라
- 통계적 검증
- 디버거 API
- 3부. 실제 사례
- 14장. 테스트 주도 자바
- 부트스트랩하기
- 첫 번째 기능
- 선 자르기
- 여러 개 처리로 넘어가기
- 고스트 프로토콜
- 옵션 가동하기
- 흐름에 따라가기
- 돌아보며
- 15장. 레거시 자바스크립트
- 시작하기
- DOM화
- 치약과 테스팅에 대하여
- 큰 함수 다루기
- 소프트웨어 고고학
- 돌아보며
- 부록. 참고 문헌
도서 오류 신고
정오표
정오표
[ p.21 : 11행 ]
코드 수준 테스팅와
->
코드 수준 테스팅과