1. 광고배너
  2. 광고배너
  3. 광고배너
  4. 광고배너
/ 이전버튼 다음버튼
2
미리보기

퀄리티 코드-소프트웨어 테스팅 원칙과 실제, 패턴(에이콘 소프트웨어 테스팅 시리즈)
저자 : 스티븐밴스 ㅣ 출판사 : 에이콘출판 ㅣ 역자 : 이태휘

2017.03.14 ㅣ 300p ㅣ ISBN-13 : 9788960779853

정가30,000
판매가27,000(10% 할인)
적립금 1,500원 (5%)
배송일정 절판   (주말/공휴일 제외)
주문 수량 변경시 안내 배송안내
쿠폰 및 결제혜택 확인하기

결제혜택

닫기

크기 B5(257mm X 188mm, 사륙배판)
제품구성 단행본
이용약관 청약철회
국내도서 > 컴퓨터 > 시스템공학 > 소프트웨어공학
테스팅이 소프트웨어의 품질을 높이는 중요한 역할을 한다는 점은 누구나 인지하고 있으나, 막상 프로젝트를 마주해 테스팅을 하려면 어떻게 해야 할지 막막하다. 개발자들이 정작 테스팅에 대해서는 별다른 교육을 받지 못한 데 그 원인이 있다. 이 책에서는 저자가 이십여 년 간 프로페셔널 소프트웨어 개발자, 컨설턴트, 매니저 등으로 활동하며 익혀온 코드 수준의 자동화 테스팅 기법을 전수해준다. 테스팅의 기본 원칙 및 패턴과 더불어 소프트웨어 시스템을 어려움 없이 효과적으로 테스트하기 위한 다양한 세부 기법을 소개한다. 또한 근본적으로 소프트웨어를 설계할 때부터 테스팅을 염두에 두고, 테스트하기에 용이하게 소프트웨어를 설계하는 방안을 제시한다.
펼쳐보기

[목 차]

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

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

__커버리지를 고려한 단위 테스팅


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


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


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


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


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

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


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


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


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


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


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


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


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


3부. 실제 사례

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


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


부록. 참고 문헌


[본 문]

★ 지은이의 말 ★

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

★ 옮긴이의 말 ★

테스트는 중요한 자산이다. 테스트가 차곡차곡 쌓여갈수록, 소프트웨어의 품질과 개발자들의 유산도 함께 쌓인다. 테스트 베이스의 크기와 수준만 봐도 그 회사와 제품을 어느 정도 신뢰할지 결정할 수 있다. 하지만 대다수의 개발자는 하기 귀찮은 일로 문서 작성과 테스트를 꼽는다. 어떤 일이든 사람들이 하기 귀찮아 하는 경우는 들어가는 노력에 비해 얻는 것이 적거나 일이 불편하고 까다로운 경우이다.
테스트를 통해 얻는 것은 분명하다. 소프트웨어의 품질. 품질이라는 압축된 용어를 굳이 쓰지 않더라도, 실무자는 개발할 때 테스트의 중요성을 체감한다. 테스트가 없이는 이미 출시한 제품의 수정이 불가능하다. 버그 없는 소프트웨어는 없지만, 적어도 테스트가 커버하는 범위 내의 동작이 이전과 동일함을 보일 수는 있다. 탄탄한 테스트 베이스가 있으면 개발자는 제품이 새로 수정한 부분 때문에 다른 기존 동작이 바뀌는지 걱정할 필요 없이 마음 놓고 작업할 수 있다. 문제는 테스트를 작성하는 일 자체가 불편하고 까다롭다는 데 있다. 생각해보면 우리는 테스트하라는 말만 들었을 뿐, 슬기롭게 테스트하는 방법을 배우고 익힌 적이 없다. 직접 시행착오를 겪고 나서야 겨우 테스팅 관련 자료나 서적을 찾아보지만 실제 상황과 맞는 내용을 찾기도 쉽지 않다.
이 책은 소프트웨어 테스팅의 기본 원칙부터 테스트를 수월하게 작성하는 실제적인 기법들을 풍부한 예시와 함께 전해준다. 저자는 또한 소프트웨어를 설계할 때부터 테스팅을 염두에 두어야 함을 역설하고 좋은 설계안을 추천하고 있다. 이에 깊이 공감하며, 유지보수를 위해 코드의 가독성이 점점 중요한 요소가 됐듯이 테스트 용이성도 소프트웨어 개발에서 더욱 중요한 요소로 자리매김해야 할 것이라 생각한다. 원서가 출간되어 번역을 맡은 시점부터 출판 시점까지 3년이 넘는 시간이 흘렀지만, 이 책의 가치가 전혀 퇴색하지 않았다는 생각이 든다. 이 책이 시류에 편승하는 내용이 아니라 근본 원칙과 기본기를 담고 있음을 방증한다. 저자의 의도를 올바로 전달하려 노력했으나, 부족한 부분은 고스란히 역자의 책임이다. 질책과 더불어 독자 분들의 많은 제의를 부탁드린다.
펼쳐보기
테스팅이 소프트웨어의 품질을 높이는 중요한 역할을 한다는 점은 누구나 인지하고 있으나, 막상 프로젝트를 마주해 테스팅을 하려면 어떻게 해야 할지 막막하다. 개발자들이 정작 테스팅에 대해서는 별다른 교육을 받지 못한 데 그 원인이 있다. 이 책에서는 저자가 이십여 년 간 프로페셔널 소프트웨어 개발자, 컨설턴트, 매니저 등으로 활동하며 익혀온 코드 수준의 자동화 테스팅 기법을 전수해준다. 테스팅의 기본 원칙 및 패턴과 더불어 소프트웨어 시스템을 어려움 없이 효과적으로 테스트하기 위한 다양한 세부 기법을 소개한다. 또한 근본적으로 소프트웨어를 설계할 때부터 테스팅을 염두에 두고, 테스트하기에 용이하게 소프트웨어를 설계하는 방안을 제시한다.

★ 이 책에서 다루는 내용 ★

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

★ 이 책의 대상 독자 ★

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

★ 이 책의 구성 ★

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

옮긴이 이태휘
산업체와 학교, 연구기관을 거치며 여러 시스템 소프트웨어 개발 프로젝트를 수행하였다. 2007년부터 2010년까지 티맥스소프트에서 근무하며 티베로 관계형 데이터베이스 개발에 참여했다. 2014년에 서울대학교 컴퓨터공학부에서 박사 학위를 받았으며, 현재 한국전자통신연구원에서 선임연구원으로 재직 중이다.

펼쳐보기

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.
도서평점
내용
등록하기
0/2000자

이 분야의 베스트

더보기 >

    이 분야의 신간

    더보기 >
      맨위로가기

      영풍문고 로고

      • 회사명 : (주)영풍문고
      • 대표이사 : 김경환
      • 소재지 : 서울특별시 강남구 강남대로 542번지 (우)06110
      • 사업자 등록번호 : 773-86-01800 ㅣ 통신판매업 신고번호 : 2020-서울강남-01007 [ 사업자정보확인 ]
      • 개인정보관리 책임자 : 조순제 ㅣ E-mail : customer@ypbooks.co.kr ㅣ 대량주문 : 02-519-2860
      COPYRIGHT © YOUNGPOONG BOOKSTORE INC. ALL RIGHTS RESERVED.
      맨위로가기