책 소개
마이크로소프트 테스팅의 실체를 속속들이 들여다 본다! 마이크로소프트의 유명 현직 테스팅 전문가(SDET)들이 집필한 소프트웨어 테스팅 실무서. 사내 9,000여 명의 테스터가 사용하고 있는 툴과 시스템, 베스트 프랙티스를 소개한다. 마이크로소프트의 테스트 설계와 관리 방식, 그들만의 교육 방법과 커리어 개발 방식, 앞으로의 도전을 알려준다.
[ 소개 ]
놀랍도록 멋진 책이다. 소프트웨어 테스팅에 관련된 모든 사람이 반드시 읽어야 할 서적이다. 마이크로소프트의 소프트웨어 테스팅에 대한 접근 방법과 미래의 테스팅에 대한 시각을 엿볼 수 있다.
흥미로운 조합: 세상에서 가장 어려운 테스팅 문제를 접하는 회사에서 훌륭한 테스터들이 들려주는 테스팅 이야기
마이크로소프트는 테스팅과 테스터에 대단한 가치를 두는 기업이다. 그들의 성공과 도전을 공유하는 경험담은 모든 테스팅 조직에 훌륭한 교훈이다.
마이크로소프트 테스팅의 실체를 들여다 본다!
마이크로소프트가 개발자 수만큼의 테스터를 두고 있다는 사실은 놀랄 만한 일이다. 150개가 넘는 제품 포트폴리오의 품질을 관리하는 테스팅 부문의 강조 또한 놀랍다.
마이크로소프트에서도 유명한 3명의 현직 테스팅 전문가가 집필한 이 책은 사내 9,000여 명의 테스터가 사용하고 있는 툴과 시스템, 모범 사례를 소개한다. 마이크로소프트의 테스트 설계와 관리 방식, 그들만의 교육 방법과 커리어 개발 방식, 앞으로의 도전에 대해 배워보자. 조직에 맞게 적용할 수 있는 실용적 통찰력을 얻을 수 있다.
[ 이 책에서 다루는 내용 ]
▶ 제품 생명주기에 걸쳐 효과적인 테스트를 설계하고 실행하는 방법
▶ 기능 테스트의 비용과 리스크를 최소화하고 구조적 기법의 적용 시점을 파악하는 방법
▶ 버그와 잠재적인 유지 보수 이슈를 파악하기 위해 코드 복잡도를 측정하는 방법
▶ 모델을 사용해 테스트 케이스를 생성하고 예측 불가능한 애플리케이션 동작을 찾고 리스크를 관리하는 방법
▶ 자동화 테스트를 적용하는 시점을 파악하는 방법과 자동화 테스트의 장기적 사용을 위해 설계하고 이를 자동화 인프라스트럭처에 통합하는 방법
▶ 우수한 테스터의 특징을 파악하고, 테스트 실행, 시스템 검사, 효율적인 진척도를 추적하는 데 효과적인 툴을 검토하는 방법
▶ 서비스와 상용 패키지 소프트웨어 테스팅의 차이점을 탐색하는 방법
[ 이 책의 대상 독자 ]
마이크로소프트의 테스터에 관심 있거나 마이크로소프트에서 테스트에 어떻게 접근하는지 알고 싶은 사람을 위한 책이다. 소프트웨어 테스팅을 다룬 많은 책을 대체할 수는 없지만 마이크로소프트가 소프트웨어를 개선하기 위해 테스팅 기법과 방법론을 어떻게 적용하는지는 알 수 있을 것이다.
마이크로소프트 테스터에겐 자신이 몸담은 회사에서 사용 중인 기법과 접근 방법을 담고 있으므로 관심이 있을 것이다. 테스터가 아닌 분들도 마이크로소프트에서 테스터의 역할을 알게 돼 흥미로울 것이다.
[ 이 책의 구성 ]
이 책은 독자가 마이크로소프트 제품, 마이크로소프트 엔지니어, 마이크로소프트 테스터, 테스트 역할, 엔지니어링 소프트웨어에 대한 일반적인 접근 방법에 익숙해지게 하는 것으로 시작한다. 2부에서는 마이크로소프트에서 일반적으로 사용하는 테스트 접근 방법과 툴을 다룬다. 3부에서는 테스팅에 사용하는 툴과 시스템을 소개한다. 마지막 4부에서는 마이크로소프트의 테스팅과 품질에 대한 미래의 방향과 미래를 만들기 위한 방법을 설명한다.
[ 추천의 글 ]
올해 초 나의 멘토이자 절친한 친구이며 나와 같은 윈도우 인터내셔널 팀원인 팀과 나는 우리의 기술 역량을 높이는 방법에 대해 토론 중이었다. 그때 팀이 아주 좋은 책을 읽고 있다며 내게 이 책의 원서 『How we test Software at Microsoft』를 내밀었다. 이 책에서 저자들은 단순한 테스팅 이론을 다룬 기존 테스팅 책들과 달리 자신들의 수많은 경험과 시행착오를 통해 체득된 내용을 다룬다. 실제로 마이크로소프트의 테스트 리더들은 실무자 관리와 테스트의 진행 상황 보고 업무는 물론 축적된 경험과 기술을 바탕으로 상당한 전문성을 확보하고 있다. 그리고 구체적으로 더 나은 테스트를 하기 위해 개선해야 할 점뿐만 아니라 실무자들에게 구체적으로 도움을 줄 수 있는 부분이 무엇인지 치열하게 고민한다. 따라서 유능한 리더들인 저자진의 생생한 경험이 녹아있는 이 책은 마이크로소프트 내의 테스터들에게도 널리 추천되고 있다.
최근 국내 회사들 또한 테스트에 대한 인식이 높아지고 있으며 상당히 실력 있는 테스터들을 보유하고 있다. 다만 한 조직이 소프트웨어의 품질과 테스팅을 내재화하는 과정은 많은 시간이 걸리며 수많은 시행착오와 끊임없는 개선작업을 요구한다. 다만 다양한 소프트웨어 제품을 출시하는 마이크로소프트는 남들보다 앞서 이런 과정을 거침으로써 역량 있는 내부 인력과 최적의 프로세스와 다양한 툴들을 보유하게 됐다.
이 책에서 독자들은 구체적으로 어떻게 소프트웨어 테스트가 한 조직에 녹아 들고 어떤 방식으로 활용되면서 내재화되는지에 대한 노하우를 익히게 된다. 소프트웨어 테스팅에는 정답도 은총알도 없다. 조직과 제품 성격에 맞는 소프트웨어 테스팅과 품질문화가 정착되기까지는 우리 테스터들의 열정과 노력 그리고 조직의 지원이 절실하다. 이 책에서 밝혀지는 여러 가지 방법과 노하우가 독자들이 속한 조직에 맞게 응용되고 실천되어 여러분의 테스팅에 일조하기를 기원하며 이 책을 국내 독자들에게 추천한다.
[ 소개 ]
놀랍도록 멋진 책이다. 소프트웨어 테스팅에 관련된 모든 사람이 반드시 읽어야 할 서적이다. 마이크로소프트의 소프트웨어 테스팅에 대한 접근 방법과 미래의 테스팅에 대한 시각을 엿볼 수 있다.
- 피터 짐머러, 시멘스 AG의 수석 엔지니어
흥미로운 조합: 세상에서 가장 어려운 테스팅 문제를 접하는 회사에서 훌륭한 테스터들이 들려주는 테스팅 이야기
- 제임스 휘태커, 『How to Break Software』의 저자
마이크로소프트는 테스팅과 테스터에 대단한 가치를 두는 기업이다. 그들의 성공과 도전을 공유하는 경험담은 모든 테스팅 조직에 훌륭한 교훈이다.
- 리 코플랜드, 『A Practitioner’s Guide to Software Test Design』의 저자
마이크로소프트 테스팅의 실체를 들여다 본다!
마이크로소프트가 개발자 수만큼의 테스터를 두고 있다는 사실은 놀랄 만한 일이다. 150개가 넘는 제품 포트폴리오의 품질을 관리하는 테스팅 부문의 강조 또한 놀랍다.
마이크로소프트에서도 유명한 3명의 현직 테스팅 전문가가 집필한 이 책은 사내 9,000여 명의 테스터가 사용하고 있는 툴과 시스템, 모범 사례를 소개한다. 마이크로소프트의 테스트 설계와 관리 방식, 그들만의 교육 방법과 커리어 개발 방식, 앞으로의 도전에 대해 배워보자. 조직에 맞게 적용할 수 있는 실용적 통찰력을 얻을 수 있다.
[ 이 책에서 다루는 내용 ]
▶ 제품 생명주기에 걸쳐 효과적인 테스트를 설계하고 실행하는 방법
▶ 기능 테스트의 비용과 리스크를 최소화하고 구조적 기법의 적용 시점을 파악하는 방법
▶ 버그와 잠재적인 유지 보수 이슈를 파악하기 위해 코드 복잡도를 측정하는 방법
▶ 모델을 사용해 테스트 케이스를 생성하고 예측 불가능한 애플리케이션 동작을 찾고 리스크를 관리하는 방법
▶ 자동화 테스트를 적용하는 시점을 파악하는 방법과 자동화 테스트의 장기적 사용을 위해 설계하고 이를 자동화 인프라스트럭처에 통합하는 방법
▶ 우수한 테스터의 특징을 파악하고, 테스트 실행, 시스템 검사, 효율적인 진척도를 추적하는 데 효과적인 툴을 검토하는 방법
▶ 서비스와 상용 패키지 소프트웨어 테스팅의 차이점을 탐색하는 방법
[ 이 책의 대상 독자 ]
마이크로소프트의 테스터에 관심 있거나 마이크로소프트에서 테스트에 어떻게 접근하는지 알고 싶은 사람을 위한 책이다. 소프트웨어 테스팅을 다룬 많은 책을 대체할 수는 없지만 마이크로소프트가 소프트웨어를 개선하기 위해 테스팅 기법과 방법론을 어떻게 적용하는지는 알 수 있을 것이다.
마이크로소프트 테스터에겐 자신이 몸담은 회사에서 사용 중인 기법과 접근 방법을 담고 있으므로 관심이 있을 것이다. 테스터가 아닌 분들도 마이크로소프트에서 테스터의 역할을 알게 돼 흥미로울 것이다.
[ 이 책의 구성 ]
이 책은 독자가 마이크로소프트 제품, 마이크로소프트 엔지니어, 마이크로소프트 테스터, 테스트 역할, 엔지니어링 소프트웨어에 대한 일반적인 접근 방법에 익숙해지게 하는 것으로 시작한다. 2부에서는 마이크로소프트에서 일반적으로 사용하는 테스트 접근 방법과 툴을 다룬다. 3부에서는 테스팅에 사용하는 툴과 시스템을 소개한다. 마지막 4부에서는 마이크로소프트의 테스팅과 품질에 대한 미래의 방향과 미래를 만들기 위한 방법을 설명한다.
[ 추천의 글 ]
올해 초 나의 멘토이자 절친한 친구이며 나와 같은 윈도우 인터내셔널 팀원인 팀과 나는 우리의 기술 역량을 높이는 방법에 대해 토론 중이었다. 그때 팀이 아주 좋은 책을 읽고 있다며 내게 이 책의 원서 『How we test Software at Microsoft』를 내밀었다. 이 책에서 저자들은 단순한 테스팅 이론을 다룬 기존 테스팅 책들과 달리 자신들의 수많은 경험과 시행착오를 통해 체득된 내용을 다룬다. 실제로 마이크로소프트의 테스트 리더들은 실무자 관리와 테스트의 진행 상황 보고 업무는 물론 축적된 경험과 기술을 바탕으로 상당한 전문성을 확보하고 있다. 그리고 구체적으로 더 나은 테스트를 하기 위해 개선해야 할 점뿐만 아니라 실무자들에게 구체적으로 도움을 줄 수 있는 부분이 무엇인지 치열하게 고민한다. 따라서 유능한 리더들인 저자진의 생생한 경험이 녹아있는 이 책은 마이크로소프트 내의 테스터들에게도 널리 추천되고 있다.
최근 국내 회사들 또한 테스트에 대한 인식이 높아지고 있으며 상당히 실력 있는 테스터들을 보유하고 있다. 다만 한 조직이 소프트웨어의 품질과 테스팅을 내재화하는 과정은 많은 시간이 걸리며 수많은 시행착오와 끊임없는 개선작업을 요구한다. 다만 다양한 소프트웨어 제품을 출시하는 마이크로소프트는 남들보다 앞서 이런 과정을 거침으로써 역량 있는 내부 인력과 최적의 프로세스와 다양한 툴들을 보유하게 됐다.
이 책에서 독자들은 구체적으로 어떻게 소프트웨어 테스트가 한 조직에 녹아 들고 어떤 방식으로 활용되면서 내재화되는지에 대한 노하우를 익히게 된다. 소프트웨어 테스팅에는 정답도 은총알도 없다. 조직과 제품 성격에 맞는 소프트웨어 테스팅과 품질문화가 정착되기까지는 우리 테스터들의 열정과 노력 그리고 조직의 지원이 절실하다. 이 책에서 밝혀지는 여러 가지 방법과 노하우가 독자들이 속한 조직에 맞게 응용되고 실천되어 여러분의 테스팅에 일조하기를 기원하며 이 책을 국내 독자들에게 추천한다.
- 마이크로소프트 윤석원
목차
목차
- 1부 마이크로소프트에 대해
- 01장 마이크로소프트의 소프트웨어 엔지니어링
- 마이크로소프트의 비전, 기업 가치, 높은 선호도의 비결
- 대규모 소프트웨어 엔지니어링 기업
- 효율적인 대규모 비즈니스 개발
- 공유 팀 모델
- 대기업의 소규모 비즈니스
- 다양한 엔지니어 고용
- 엔지니어링 분야
- 세계적 소프트웨어 개발사를 향해
- 정리
- 02장 마이크로소프트의 소프트웨어 테스트 엔지니어
- 이름을 붙여볼까?
- 마이크로소프트의 테스터가 항상 SDET는 아니다
- 테스터가 더 많아야 한다
- 학교 방문 채용
- 업계 경력직 채용
- 마이크로소프트 SDET 되기
- 마이크로소프트 엔지니어링 커리어
- 테스트 부문의 커리어 패스
- 테스트 아키텍트
- IC 테스터
- 관리자가 되는 것이 승진은 아니다
- 테스트 관리자
- 정리
- 03장 엔지니어링 생명주기
- 마이크로소프트의 소프트웨어 공학
- 전통적 소프트웨어 공학 모델
- 마일스톤
- 마이크로소프트에서의 애자일
- 기능 통합
- 프로세스 개선
- 마이크로소프트의 정형적 프로세스 개선 시스템
- 전시상황실에서 소프트웨어 출시
- 의무 실행
- 정리: 음식을 다 만들고
- 마이크로소프트의 소프트웨어 공학
- 2부 테스팅
- 04장 테스트 케이스 작성을 위한 실용적 접근
- 좋은 소프트웨어 설계와 테스트 설계
- 테스트 패턴 사용
- 테스트 시간 추정
- 테스트 시작
- 질문하기
- 테스트 전략 수립
- 테스트 용이성
- 테스트 설계 명세서
- 정상 동작 테스트와 오동작 테스트
- 테스트 케이스 설계 시 고려해야 할 기타 항목
- 블랙박스, 화이트박스, 그레이박스
- 마이크로소프트의 탐색적 테스팅
- 정리
- 05장 기능 테스팅 기법
- 기능 테스팅의 필요성
- 동등 클래스 분할
- 변수 데이터 분할
- 동등 클래스 분할 동작
- 파라미터의 서브셋 분석
- ECP 테스트
- 동등 클래스 분할 요약
- 경계 값 분석
- 경계 값 테스트의 정의
- 경계 값 분석을 위한 새로운 공식
- 숨겨진 경계 값
- 경계 값 분석 요약
- 조합 분석
- 조합 테스팅 접근 방법
- 조합 분석의 적용
- 조합 분석의 효과
- 조합 분석 요약
- 정리
- 06장 구조적 테스팅 기법
- 블록 테스팅
- 블록 테스팅 요약
- 결정 테스팅
- 결정 테스팅 요약
- 조건 테스팅
- 조건 테스팅 요약
- 기본 경로 테스팅
- 기본 경로 테스팅 요약
- 정리
- 블록 테스팅
- 07장 코드 복잡도에 따른 리스크 분석
- 비지니스 리스크
- 복잡한 문제
- 코드 라인 수 측정
- 사이클로매틱 복잡도 측정
- 할스테드 메트릭
- 객체지향 메트릭
- 사이클로매틱 복잡도가 높다고 반드시 버그가 많은 것은 아니다
- 복잡도 메트릭 제대로 다루기
- 정리
- 08장 모델 기반 테스팅
- 모델링 기초
- 모델 테스팅
- 모델 설계
- 소프트웨어 모델링
- 유한 상태 모델 만들기
- 모델 자동화
- 테스팅을 지원하는 모델링
- 베이시안 도해 모델
- 페트리 넷
- 마이크로소프트의 모델 기반 테스팅 툴
- 스펙 익스플로러
- 언어와 엔진
- 모델링 팁
- 정리
- 추천 도서와 툴
- 버그 워크플로우
- 버그 추적
- 버그의 일생
- 버그 추적 시스템의 속성
- 버그 리포트를 작성하는 이유
- 버그 리포트의 구조
- 버그 선별
- 버그 리포트의 일반적인 실수
- 데이터 사용
- 데이터 오용: 성과 측정으로서의 버그
- 버그 바
- 테스트 케이스 관리
- 테스트 케이스란?
- 테스트 케이스의 가치
- 테스트 케이스 구조
- 테스트 케이스 작성 시의 실수
- 테스트 케이스 관리하기
- 케이스와 포인트: 테스트 케이스 수 세기
- 테스트 결과 추적과 해석
- 정리
- 자동화의 가치
- 자동화냐 아니냐, 그것이 문제로다
- UI 자동화
- 테스트 자동화 구성 요소
- 마이크로스프트에서의 SEARCH
- 설정
- 실행
- 분석
- 보고
- 초기화
- 도움말
- 실행, 자동화, 실행!
- 모두 연동하기
- 대규모의 테스트 자동화
- 일반적인 자동화 실수
- 정리
- 기능성을 넘어
- ‘~성’ 테스트하기
- 성능 테스팅
- 성능 측정 방법
- 스트레스 테스팅
- 분산 스트레스 테스팅
- 분산 스트레스 아키텍처
- 멀티 클라이언트 스트레스 테스트 속성
- 호환성 테스팅
- 애플리케이션 라이브러리
- 애플리케이션 검증기
- 자기 개밥 먹기
- 접근성 테스팅
- 접근성 페르소나
- 접근성 테스트하기
- MS 액티브 액세서빌리티를 위한 테스팅 툴
- 사용성 테스팅
- 보안성 테스팅
- 보안 위협 모델링
- 퍼지 테스팅
- 정리
- 코드 변경
- 통제하기
- 변경 추적
- 무엇이 변경됐나?
- 왜 변경됐나?
- 소스 관리를 위한 공간
- 빌드
- 일일 빌드
- 정적 분석
- 네이티브 코드 분석
- 매니지드 코드 분석
- 단지 또 다른 툴
- 테스트 코드 분석
- 테스트 코드가 제품 코드다
- 더 많은 툴
- 특수한 문제를 위한 툴
- 모든 사람을 위한 툴
- 정리
- 테스팅과 품질
- 정보를 제공하는 테스팅
- 품질에 대한 이해
- 해결책은 고객
- 게임에서의 사례
- 윈도우 오류 보고
- WER 사용 사례
- 버킷 활용하기
- 버킷에 쌓인 문제 처리하기
- 테스트와 WER
- 스마일 전송 프로그램
- 스마일 전송 프로그램 효과
- 고객과의 연결(커넥트)
- 정리
- 두 가지 부문: 서비스와 테스트 기법
- 마이크로소프트 서비스 전략
- 인터넷 서비스로의 관심 이동
- 라지 스케일에서 메가 스케일로의 성장
- 성장의 발목을 잡는 전력
- 서비스와 패키지 제품
- 독립형에서 계층형 서비스로 이동
- 혁신의 물결
- S+S와 서비스에 대한 테스트 접근 방법 설계
- S+S 테스팅 기법
- 통합 테스팅, 테스트 플래그, 에뮬레이션
- 지속적인 품질 개선 프로그램
- 내가 본 일반적인 버그
- 결함 분석 자동화
- 분석 마비 상황의 극복
- 결함 비교
- 좋은 로깅 사례
- 로그 파일의 구조
- 결함 분석 자동화 통합
- 머신 가상화
- 가상화의 장점
- 가상 머신 테스트 시나리오
- 테스트 도중 발생하는 오류
- 추천하지 않는 테스트 시나리오
- 코드 리뷰와 인스펙션
- 코드 리뷰의 유형
- 체크 리스트
- 리뷰 시 고려 사항
- 리뷰의 두 얼굴
- 툴이 너무 많아도 문제
- 간소화, 재사용, 재활용
- 무엇이 문제인가?
- 공개 개발
- 정리
- 전향적 사고의 필요성
- 한걸음 물러서서 앞을 내다보기
- 품질 문화를 위한 노력
- 테스팅과 품질 보증
- 누가 품질의 주인인가?
- 품질 비용
- 테스트의 새로운 역할
- 테스트 리더십
- 마이크로소프트 테스트 리더십 팀
- 테스트 리더십 의장
- 테스트 리더십 활동
- 테스트 아키텍트 그룹
- 테스트 엑설런스 팀
- 공유
- 도움
- 소통
- 미래 주목하기
- 마이크로소프트 테스트 엑설런스 팀의 감독
- 리더십 3원소
도서 오류 신고
정오표
[ p21 목차 8장 부분 페이지 전체 수정 ]
08장 모델 기반 테스팅 229
모델링 기초 230
모델 테스팅 232
모델 설계 232
소프트웨어 모델링 234
유한 상태 모델 만들기 238
모델 자동화 238
테스팅을 지원하는 모델링 246
베이시안 도해 모델 246
페트리 넷 247
마이크로소프트의 모델 기반 테스팅 툴 248
스펙 익스플로러 249
언어와 엔진 255
모델링 팁 259
정리 260
추천 도서와 툴 261
수정페이지 PDF 다운로드>>
[ p120 10행 ]
바로 수정이 돼야 하는 버그했다. → 바로 수정이 돼야 하는 버그였다.
08장 모델 기반 테스팅 229
모델링 기초 230
모델 테스팅 232
모델 설계 232
소프트웨어 모델링 234
유한 상태 모델 만들기 238
모델 자동화 238
테스팅을 지원하는 모델링 246
베이시안 도해 모델 246
페트리 넷 247
마이크로소프트의 모델 기반 테스팅 툴 248
스펙 익스플로러 249
언어와 엔진 255
모델링 팁 259
정리 260
추천 도서와 툴 261
수정페이지 PDF 다운로드>>
[ p120 10행 ]
바로 수정이 돼야 하는 버그했다. → 바로 수정이 돼야 하는 버그였다.