Top

Selenium 웹드라이버 테스트 자동화 [구글이 선택한 웹 애플리케이션 UI 테스팅 툴]

  • 원서명Selenium Testing Tools Cookbook (ISBN 9781849515740)
  • 지은이언메시 건데차
  • 옮긴이김유성, 최근호
  • ISBN : 9788960775305
  • 40,000원
  • 2014년 02월 28일 펴냄
  • 페이퍼백 | 480쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

요약

Selenium 3.1.0 버전 기준
이 책은 구글이 선택한 웹 애플리케이션 UI 자동화 테스팅 도구인 셀레늄(Selenium) 웹드라이버를 사용해 웹 애플리케이션 테스트 프레임워크를 구축하는 내용을 다룬다. 셀레늄 API를 배우고 나면 애플리케이션의 성능 측정이나 모바일 기기에서 동작하는 웹 애플리케이션 테스트, 젠킨스 같은 도구를 활용해 테스트의 효율을 높이는 방법까지 현실 세계에서 부딪치는 다양한 도전 과제의 해답을 얻을 수 있다.

이 책에서 다루는 내용

■ 위치 지정자에 대한 이해와 다양한 위치 지정자 메소드로 신뢰성 높은 테스트 코드를 만드는 방법
■ 셀레늄 웹드라이버 API를 사용하는 테스트 코드 작성
■ 페이지 팩토리 패턴으로 강건하고 유지 보수 용이한 테스트 프레임워크 구축
■ 데이터 주도 테스트와 셀레늄 API를 확장해 수행하는 사용자 정의 테스트
■ 셀레늄 웹드라이버와 함께 JBehave, SpecFlow, FitNesses 같은 ATDD/BDD 도구를 사용하는 방법
■ 아이폰, 아이패드, 안드로이드 기기와 시뮬레이터에서 수행하는 모바일 웹 애플리케이션 테스트
■ 테스트 커버리지를 높이면서 실행 시간을 단축하는 셀레늄 그리드의 설정 방법

이 책의 대상 독자

이 책의 대상 독자는 품질보증 관리자나 테스트 전문가, 테스트 매니저는 물론, 셀레늄과 자바를 사용해 웹 애플리케이션 테스트를 경험한 개발자까지 다양하다. C#, 파이썬, 루비 사용자를 위한 예제도 준비돼 있다.

이 책의 구성

1장, ‘엘리먼트 위치 지정’에서는 셀레늄 웹드라이버에서 제공하는 방법으로 웹 페이지에서 엘리먼트 위치를 지정하는 내용을 다룬다. 셀레늄 웹드라이버는 XPath와 CSS, DOM 같은 다양한 위치 지정자(locator) 중 최선의 방법을 제공해 엘리먼트 위치를 지정한다. 물론 사용자 정의 위치 지정자도 만들어 사용할 수 있다. 1장의 예제는 셀레늄 웹드라이버 위치 지정자 API와 친숙해지는 데 도움을 준다.

2장, ‘셀레늄 API 사용’에서는 셀레늄 API를 사용해 테스트 코드를 만드는 방법을 설명한다. 셀레늄 API를 살펴본 다음에는 복잡한 마우스 움직임이나 키보드 입력 같은 사용자 상호작용을 그대로 재현하면서 웹 애플리케이션의 다양한 UI 엘리먼트를 다룰 수 있다.

3장, ‘테스트 흐름 제어’에서는 셀레늄 웹드라이버 API를 사용해 신뢰성 있는 테스트 자동화 프레임워크 구축 방법을 다룬다. 훌륭한 테스트 자동화 프레임워크는 강건함과 신뢰성, 회복성, 예외 처리 능력을 포함한다. 3장의 예제는 명시적 대기 시간과 묵시적 대기 시간으로 동기화를 이루고, 여러 개의 윈도우를 다루거나 테스트 중에 나타나는 팝업 창과 알림 창에 대처하는 방법을 설명한다.

4장, ‘데이터 주도 테스팅’에서는 테스트 자동화 방법론 중 하나인 데이터 주도 테스트를 소개한다. 셀레늄 웹드라이버는 데이터 주도 테스트를 지원하는 빌트인 기능은 없지만, 셀레늄 웹드라이버 API를 확장해 데이터 주도 테스트를 수행할 수 있다. 4장은 JUnit/아파치 POI와 JDBC를 사용한 테스트 예제를 다룬다.

5장, ‘페이지 객체 모델 사용’에서는 셀레늄 웹드라이버 테스트를 구축할 때 가장 많이 사용하는 모델 패턴을 다룬다. 5장의 내용은 페이지 객체 모델을 사용해 테스트 프레임워크를 만드는 데 많은 도움을 준다.

6장, ‘셀레늄 확장’에서는 셀레늄 웹드라이버 API를 확장하고 테스트 자동화의 범위를 넓힌다. 커스텀 UI 컨트롤과 엘리먼트의 이미지 캡처, 이미지 기반의 테스트 같은 실용적이고 핵심적인 예제로 셀레늄 웹드라이버를 확장해본다.

7장, ‘모바일 브라우저에서 테스트’에서는 애플의 iOS와 안드로이드 플랫폼에서 셀레늄 웹드라이버 API를 사용하는 모바일 웹 애플리케이션 테스트 방법을 소개한다. 7장에서는 모바일 기기를 설정하고 아이폰, 안드로이드 기기와 시뮬레이터를 사용하는 셀레늄 웹드라이버 예제를 다룬다.

8장, ‘클라이언트 성능 테스트’에서는 셀레늄 웹드라이버를 사용해 클라이언트 측 성능 측정 방법을 알아본다. 클라이언트 측 성능은 다양한 방법으로 측정할 수 있는데, 예제에서는 dynaTrace나 HttpWatch 같은 도구와 함께 셀레늄 웹드라이버를 사용하면서 클라이언트 성능을 수집, 측정, 모니터할 수 있다.

9장, ‘HTML5 웹 애플리케이션 테스팅’에서는 HTML5 표준을 사용하는 웹 애플리케이션 테스트 방법을 다룬다. 즉, 비디오와 캔버스 엘리먼트, HTML5의 웹 스토리지 API를 테스트하는 방법 등을 다룬다.

10장, ‘테스트 과정 동영상 녹화’에서는 몬테 미디어 라이브러리, 마이크로소프트 익스프레션 인코더 SDK, 카스트로 같은 도구를 사용해 테스트 과정을 동영상으로 녹화하는 방법을 살펴본다.

11장, ‘행위 주도 개발’에서는 셀레늄 웹드라이버로 구현하는 행위 주도 개발 방법을 알아본다. Cucumber-JVM과 자바에서 사용하는 JBehave, 닷넷용 SpecFolw.NET, 루비용 Capybara가 행위 주도 개발을 실현하는 도구로 등장한다.

부록 A, ‘셀레늄 웹드라이버와 다른 도구의 통합’에서는 이클립스와 인텔리J IDEA에서 셀레늄 웹드라이버를 설정하는 방법이 기술되어 있다. 메이븐이나 앤트 설정 방법이나 젠킨스를 사용하는 지속적인 통합 과정에 테스트를 구현하는 방법도 다룬다. 오토잇(AutoIt)과 시쿨리(Sikuli)를 사용하는 자동화 테스트도 살펴본다.

부록 B, ‘셀레늄 그리드를 사용한 분산 환경 테스트’에서는 분산 환경에서 셀레늄 그리드로 테스트를 수행하는 방법을 설명한다. 노드는 브라우저와 플랫폼의 다양한 조합으로 여러 개를 만들어 추가하는데, 테스트는 TestNG를 사용해 병렬로 수행할 수 있다. TestNG는 테스트 실행 시간을 줄이면서 테스트 커버리지를 높이는 데 유용하다.

저자/역자 소개

저자 서문

이 책은 셀레늄 웹드라이버 API와 여러 가지 도구로 웹 애플리케이션을 테스트하는 고급 기술을 다룬다. 셀레늄 웹드라이버를 통해 데스크톱 웹 애플리케이션과 모바일 웹 브라우저, 분산 환경에서 이뤄지는 테스트를 효과적이고 효율적으로 수행할 수 있다.
데이터 주도 테스팅과 페이지 객체 모델, 객체 맵 같은 디자인 패턴은 테스트 자동화 프레임워크를 신뢰성 있고 유지 보수성 높은 코드로 만든다. Cucumber-JVM과 SpecFlow.NET, Capybara 같은 행위 주도 개발 프레임워크와 셀레늄 웹드라이버를 통합하는 방법도 배우게 된다.
셀레늄 웹드라이버는 필요에 따라 기능을 확장하기도 하는데, 90가지 이상의 예제를 통해 테스트 자동화 프레임워크를 구축하거나 현재 프레임워크를 한층 더 확장하는 방법까지 배울 수 있다.

저자 소개

언메시 건데차(Unmesh Gundecha)

소프트웨어 공학 석사학위를 받고 소프트웨어 개발과 테스팅 분야에서 10년의 경험을 쌓았다. 그동안 수행했던 자동화 프로젝트는 오픈소스나 상용 도구를 사용하면서 산업 표준에 맞추거나 인하우스(in-house) 개발, 자동화 프레임워크의 커스터마이징이 주를 이룬다. 현재는 인도의 서부 도시 푸네에 있는 다국적 기업에서 테스트 설계자로 일한다.

옮긴이의 말

유닛 테스트의 유용성이나 방법론에 대해서는 이미 널리 알려졌지만, UI 테스트(특히 웹 애플리케이션)에 대한 자동화는 아직 다양한 시도를 반복하고 있다.
브라우저 제작사의 자바스크립트, CSS, HTML에 대한 표준화 노력 덕분에 브라우저 사이의 차이점이 많이 줄어들었다. 하지만 웹 애플리케이션이 성장하는 만큼 브라우저의 미세한 차이가 큰 영향을 미치는 경우가 발생한다. 이 차이를 잡아내기 위해서는 같은 기능에 대한 브라우저별 테스트가 필요하다.
2014년 현재 IE는 버전 11까지 나왔고 크롬이나 파이어폭스의 빠른 버전업 등으로 최신 브라우저가 쉬지 않고 쏟아지는 상황에서, 모든 브라우저에 대해 매번 같은 테스트를 수행하는 일은 그 자체로 많은 부담이 된다.
셀레늄이 처음 알려지기 시작한 2000년대 후반, 셀레늄은 파이어폭스 플러그인으로 사용자 입력을 재현하는 정도에 그쳤지만, 웹드라이버와 결합한 지금은 다양한 브라우저와 프로그래밍 언어, 강력한 API를 지원하며, 예전에 비해 놀랄만한 성장을 보여준다.
오늘날 셀레늄 웹드라이버는 그 어떤 것보다도 가장 나은 웹 UI 테스트 자동화 도구다.
이 책은 2017년 2월에 릴리스된 셀레늄 3.1.0 버전으로 업데이트했다. 다수의 윈도우 전용 기능이 삭제돼, 2장의 ‘윈도우 프로세스 제어’, ‘셀레늄 웹드라이버로 윈도우 레지스트리 값 얻기’, ‘셀레늄 웹드라이버로 윈도우 레지스트리 값 수정’ 절도 그에 맞춰 삭제했다. 앞으로도 꾸준히 사랑 받는 책이 되길 바란다. - 김유성

크로스플랫폼이나 멀티브라우저의 지원이 더 이상 웹 서비스에 특별한 가치를 부여하지 않는다. 브라우저 업데이트 같이 빈번하게 일어나는 사용자 환경의 변화 속에서 웹 애플리케이션의 품질 확보는 단순히 인력의 투입만으로 해결할 수 없는 현실과 마주한다.
셀레늄 웹드라이버는 구글 내의 여러 조직에서도 가장 인기 있는 웹 애플리케이션 자동화 프레임워크다. 비교적 오랜 역사를 통해 안정성과 확장성에서 인정받고 있으며, 커뮤니티 또한 매우 활발하다. 현재 담당하는 웹오피스 UI 테스트에서 효과와 위력을 실감하고 도구의 매력에 흠뻑 빠져들었는데, 지속적인 통합에 맞춰 반복적인 테스트로 자신감과 빠른 피드백을 얻을 수 있었다.
테스트 자동화에 이제 막 입문했거나 좌표 기반 자동화 도구의 한계에 부딪친 많은 사람에게 셀레늄 웹드라이버를 강력하게 권한다.
- 최근호

옮긴이 소개

김유성

잉여력 확보를 위해 자동화 기술에 관심이 많지만, 여전히 잉여력에 갈증을 느끼는 개발자다. 전공 지식을 돈으로 바꿀 수 있다는 이야기에 아르바이트로 시작한 웹 프로그래밍이 어느새 웹 오피스 개발에까지 이르러, 현재 사이냅소프트에서 웹 오피스를 개발 중이다.

최근호

모바일, 웹 애플리케이션 테스트 엔지니어이다. 애자일 개발 방식이 성공하기 위해서는 일정 수준 이상의 테스트 자동화가 반드시 필요하다고 믿고 있다. 개발과 테스트 프로세스에 관심이 많으며, 번역을 통해 자신이 가진 지식과 경험을 다른 사람들과 공유하면서 한국의 소프트웨어 테스트 문화에 조금이나마 공헌하고자 한다. 사이냅소프트의 훌륭한 개발자들과 이야기하는 것을 좋아하며 그들과 함께 웹 오피스를 만들고 있다. 『Ext JS 반응형 웹 애플리케이션 개발』(에이콘출판, 2013년)을 번역했다.

목차

목차
  • 1장 엘리먼트 위치 지정
  • 소개
  • 페이지 구조와 엘리먼트 검사를 위한 브라우저 도구 사용
  • findElement 메소드로 엘리먼트 위치 지정
  • findElements 메소드로 여러 엘리먼트 위치 지정
  • 링크 위치 지정
  • 태그 이름으로 엘리먼트 위치 지정
  • CSS 셀렉터로 엘리먼트 위치 지정
  • XPath로 엘리먼트 위치 지정
  • 텍스트로 엘리먼트 위치 지정
  • 고급 CSS 셀렉터로 엘리먼트 위치 지정
  • jQuery 셀렉터로 엘리먼트 위치 지정
  • 테이블의 행열에서 엘리먼트 위치 지정
  • 테이블 자식 엘리먼트에서 엘리먼트 위치 지정

  • 2장 셀레늄 API 사용
  • 소개
  • 엘리먼트 텍스트 검사
  • 엘리먼트 속성 값 검사
  • 엘리먼트 CSS 값 검사
  • 고급 사용자 인터랙션 API를 사용한 마우스와 키보드 이벤트
  • 엘리먼트 더블클릭 실행
  • 드래그앤드롭 실행
  • 자바스크립트 코드 실행
  • 셀레늄 웹드라이버로 스크린샷 캡처
  • 리모트 웹드라이버/그리드에서 스크린샷 캡처
  • 브라우저 창 크기 최대화
  • 드롭다운과 리스트 자동화 테스트
  • 드롭다운과 리스트 옵션 검사
  • 드롭다운과 리스트에서 선택한 옵션 검사
  • 라디오 버튼과 라디오 그룹 자동화 테스트
  • 체크박스 자동화 테스트

  • 3장 테스트 흐름 제어
  • 소개
  • 묵시적 대기 시간으로 테스트 동기화
  • 명시적 대기 시간으로 테스트 동기화
  • 사용자 정의 대기 조건으로 테스트 동기화
  • 엘리먼트의 존재 여부 확인
  • 엘리먼트 상태 확인
  • name 속성으로 팝업 창 식별과 조작
  • title 속성으로 팝업 창 식별과 조작
  • 콘텐츠로 팝업 창 식별과 조작
  • 자바스크립트 알림 창 조작
  • 확인 창 조작
  • 프롬프트 박스 조작
  • 프레임 식별과 조작
  • 콘텐츠로 프레임 식별과 조작
  • IFRAME 작업

  • 4장 데이터 주도 테스팅
  • 소개
  • JUnit을 사용한 데이터 주도 테스트
  • TestNG를 사용한 데이터 주도 테스트
  • JUnit을 사용해 CSV 파일에서 테스트 데이터 가져오기
  • JUnit과 아파치 POI로 엑셀 파일에서 테스트 데이터 가져오기
  • JUnit과 JDBC로 데이터베이스에서 테스트 데이터 가져오기
  • NUnit으로 데이터 주도 테스트 만들기
  • MSTEST로 데이터 주도 테스트 만들기
  • Roo를 사용해 루비로 데이터 주도 테스트 만들기
  • 파이썬으로 데이터 주도 테스트 만들기

  • 5장 페이지 객체 모델 사용
  • 소개
  • PageFactory 클래스를 사용한 페이지 객체와 엘리먼트의 매핑
  • PageFactory 클래스를 사용한 페이지 동작 제어
  • LoadableComponent 클래스의 활용
  • 중첩된 페이지 객체 인스턴스의 구현
  • 닷넷으로 구현하는 페이지 객체 모델
  • 파이썬으로 구현하는 페이지 객체 모델
  • 페이지 객체 젬을 사용해 루비로 구현하는 페이지 객체 모델

  • 6장 셀레늄 확장
  • 소개
  • 웹 테이블 확장 클래스
  • jQueryUI 탭 위젯용 확장 기능
  • 엘리먼트 속성 값을 설정하는 WebElement 확장 기능 구현
  • 엘리먼트를 하이라이트하는 WebElement 확장 기능 구현
  • 셀레늄 테스트에서 사용하는 객체 맵 생성
  • 엘리먼트 캡처
  • 이미지 비교

  • 7장 모바일 브라우저에서 테스트
  • 소개
  • 아이폰/아이패드 시뮬레이터를 위한 iWebDriver 설치
  • 아이폰/아이패드 기기를 위한 iWebDriver 설치
  • iWebDriver와 아이폰 드라이버를 사용한 웹 애플리케이션 테스트
  • 셀레늄 테스트를 위한 안드로이드 에뮬레이터 설정
  • 셀레늄 테스트를 위한 안드로이드 기기 설정
  • 안드로이드 드라이버를 사용한 테스트 수행

  • 8장 클라이언트 성능 테스트
  • 소개
  • 타이머를 사용한 응답 시간 측정
  • 내비게이션 타이밍 API를 사용한 성능 측정
  • BrowserMob 프록시를 사용한 성능 측정
  • dynaTrace를 사용한 성능 측정
  • HttpWatch를 사용한 성능 측정
  • Watir-WebDriver-Performance를 사용한 클라이언트 측 성능 테스트

  • 9장 HTML5 웹 애플리케이션 테스트
  • 소개
  • HTML5 비디오 플레이어 테스트 자동화
  • HTML5 캔버스 엘리먼트에서 그리기 동작 테스트
  • 로컬 스토리지 테스트
  • 세션 스토리지 테스트
  • 로컬 스토리지와 세션 스토리지 초기화

  • 10장 테스트 과정 동영상 녹화
  • 소개
  • 몬테 미디어 라이브러리를 사용한 동영상 녹화
  • 마이크로소프트 익스프레션 인코더 4 SDK를 사용한 동영상 녹화
  • 카스트로를 사용한 동영상 녹화

  • 11장 행위 주도 개발
  • 소개
  • Cucumber-JVM과 셀레늄 웹드라이버를 사용한 행위 주도 개발
  • SpecFlow.NET과 셀레늄 웹드라이버를 사용한 행위 주도 개발
  • JBehave와 셀레늄 웹드라이버를 사용한 행위 주도 개발
  • Capybara, Cucumber, 셀레늄 웹드라이버를 사용한 행위 주도 개발

  • 부록 A 셀레늄 웹드라이버와 다른 도구의 통합
  • 소개
  • 이클립스와 메이븐으로 시작하는 셀레늄 웹드라이버
  • 인텔리J IDEA와 메이븐으로 시작하는 셀레늄 웹드라이버
  • 앤트로 실행하는 셀레늄 웹드라이버 테스트
  • 지속적인 통합을 위한 젠킨스 설정
  • 젠킨스와 메이븐으로 실행하는 셀레늄 웹드라이버 테스트
  • 젠킨스와 앤트로 실행하는 셀레늄 웹드라이버 테스트
  • 마이크로소프트 비주얼스튜디오로 시작하는 셀레늄 웹드라이버
  • 오토잇과 셀레늄 웹드라이버를 사용하는 자동화 테스트
  • 시쿨리와 셀레늄 웹드라이버를 사용하는 자동화 테스트

  • 부록 B 셀레늄 그리드를 사용한 분산 환경 테스트
  • 소개
  • 셀레늄 그리드
  • 병렬 진행을 위한 셀레늄 그리드 설정
  • 윈도우/인터넷 익스플로러 노드 추가
  • 맥/파이어폭스 노드 추가
  • 아이폰/iWebDriver 노드 추가
  • 안드로이드 노드 추가
  • TestNG를 사용한 병렬 실행 셀레늄 스크립트
  • 파이썬을 사용한 병렬 실행 셀레늄 스크립트
  • 병렬 실행을 위한 셀레늄과 젠킨스 CI 서버 설정
  • 찾아보기

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

2015.2.11 수정사항

[p77 : 11행, 13행]
getCSSValue() -> getCssValue()

[p78 : 1행]
getCSSValue() -> getCssValue()

2018.5 수정사항

샘플 주소였던 드롭박스 링크에 오류가 발생하는 것이 확인됐습니다.
저자가 2판을 작업하면서 새로 만든 사이트 를 참고해주시면 되겠습니다.