Top

Selenium을 활용한 테스트 자동화 2/e [W3C 표준 웹드라이버로 만드는 테스트 스크립트]

  • 원서명Selenium WebDriver 3 Practical Guide: End-to-end automation testing for web and mobile browsers with Selenium WebDriver, 2nd Edition (ISBN 9781788999762)
  • 지은이언메시 건데차(Unmesh Gundecha), 사티야 아바사알라(Satya Avasarala)
  • 옮긴이김유성
  • ISBN : 9791161755854
  • 30,000원
  • 2021년 11월 30일 펴냄
  • 페이퍼백 | 330쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 소프트웨어 테스팅

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/selenium-webdriver-2e

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

셀레늄 3에서 개선된 점을 살펴보고 셀레늄에서 자바 8 API를 활용하는 방법을 알아본다. 기본 사용법부터 조금 더 복잡한 사용자 액션까지 설명한 후, 리모트 웹드라이버와 셀레늄 그리드로 원격지의 브라우저에서 테스트를 실행하는 방법, Appium을 사용한 모바일 테스트 방법 등을 살펴본다. TestNG로 데이터 주도 테스트를 수행하는 방법도 설명한다.

이 책에서 다루는 내용

◆ 셀레늄 3 소개 및 업데이트된 기술 비교
◆ 다양한 모바일과 데스크톱 브라우저 플랫폼에서의 셀레늄 3 사용 방법
◆ 드래그 앤 드롭 같은 고급 액션과 웹 페이지의 액션 빌더 사용 방법
◆ 자바 8 API를 셀레늄 3와 함께 사용하는 방법
◆ 리모트 웹드라이버의 개념과 사용 방법
◆ 셀레늄 그리드로 크로스 브라우저 테스트와 분산 테스트 실행
◆ 액션 API로 다양한 키보드와 마우스 액션 수행

이 책의 대상 독자

웹 애플리케이션 테스트 스위트 자동화를 만들려는 품질 보증/테스트 전문가, 테스트 엔지니어, 소프트웨어 개발자, 웹 애플리케이션 개발자에게 완벽한 안내서다. 선행학습으로 자바 프로그래밍에 대한 기본적인 이해가 필요하지만 웹드라이버나 셀레늄에 대한 지식은 없어도 된다. 이 책을 다 읽고 나면 테스트 자동화 작성에 필요한 웹드라이버의 지식을 충분히 쌓을 수 있을 것이다.

이 책의 구성

1장, ‘웹드라이버와 웹 엘리먼트’에서는 셀레늄의 개념과 기능을 먼저 살펴본 후, 웹드라이버가 웹 페이지를 인식하는 방법으로 빠르게 넘어간다. 웹드라이버의 웹 엘리먼트에 대해 설명하고, 웹 페이지의 웹 엘리먼트를 지정해 기본적인 액션을 수행하는 방법을 알아본다.
2장, ‘웹 브라우저를 지원하는 다양한 웹드라이버’에서는 FirefoxDriver와 IEDriver, ChromeDriver 같은 다양한 웹드라이버 구현체를 설명한다. 헤드리스모드, 모바일 에뮬레이션, 사용자 프로필 사용 등으로 브라우저 테스트 환경을 설정하는 방법을 살펴본다.
3장, ‘자바8 기능 사용’에서는 웹 엘리먼트 리스트를 스트림 API나 람다 표현식 같은 자바8의 새로운 기능으로 다루는 방법을 살펴본다.
4장, ‘웹드라이버 기능 알아보기’에서는 웹 페이지 스크린샷 찍기, 자바스크립트 실행, 쿠키 다루기, 윈도우 프레임 다루기 등의 웹드라이버 고급 기능을 알아본다.
5장, ‘고급 사용자 인터랙션’에서는 웹드라이버의 고급 기능을 더 자세히 알아본다. 하나의 프레임에 있는 엘리먼트를 드래그 앤 드롭으로 다른 프레임으로 옮기기, 웹 엘리먼트에서 오른쪽 버튼 클릭 같은 흥미로운 예제를 다룬다.
6장, ‘웹드라이버 이벤트의 이해’에서는 웹드라이버 관점에서의 이벤트 처리를 살펴본다. 웹 엘리먼트의 값 변경, 브라우저의 뒤로 가기, 스크립트 실행 완료와 같은 이벤트를 살펴본다.
7장, ‘리모트 웹드라이버 살펴보기’에서는 리모트 웹드라이버와 셀레늄 단독 서버를 사용해 원격 기기에서 테스트를 실행하는 방법을 살펴본다.
8장, ‘셀레늄 그리드’에서는 셀레늄에서 가장 중요하고 흥미로운 기능인 셀레늄 그리드를 살펴본다.
9장, ‘페이지 객체 패턴’에서는 페이지 객체 패턴으로 잘 알려진 설계 패턴을 다룬다.
10장, ‘Appium을 이용한 iOS와 안드로이드 테스트’에서는 iOS와 안드로이드 플랫폼에서 Appium을 이용해 자동화 테스트 스크립트에서 웹드라이버를 사용하는 방법을 살펴본다.
11장, ‘TestNG로 수행하는 데이터 주도 테스트’에서는 TestNG로 데이터 주도 테스트 기법을 살펴본다.

저자/역자 소개

지은이의 말

소프트웨어 개발자와 QA 엔지니어가 다양한 브라우저에 대한 웹 애플리케이션 테스트에 사용하는 브라우저 자동화 도구인 셀레늄에 대한 책이며 실무에서도 언제든 참고할 수 있는 좋은 참고서다.
셀레늄은 브라우저 자동화 도구 모음으로 애플리케이션 테스트에 널리 사용된다. 하지만 셀레늄의 사용 범위는 테스트에 국한되지 않고 화면 캡처나 브라우저 윈도에서의 반복 작업 자동화에도 사용할 수 있다. 셀레늄은 파이어폭스, 인터넷 익스플로러, 구글 크롬, 애플 사파리, 오페라 등 모든 주요 브라우저에서 지원한다. 셀레늄 웹드라이버는 W3C 표준이 됐으며 모든 주요 브라우저 제조사의 지원 대상이다.

지은이 소개

언메시 건데차(Unmesh Gundecha)

애자일 소프트웨어 개발, 테스트 자동화, 데브옵스 방법론에 16년 이상의 경력이 있으며 애자일, 오픈소스, 데브옵스 에반젤리스트로서 다양한 도구와 기술에 대한 경험이 풍부하다. 최고의 오픈소스와 상용 소프트웨어 도구를 사용해 웹, 모바일 플랫폼, API, CLI 애플리케이션에서 지속적 통합과 배포 파이프라인을 통해 유지보수 가능하면서 반복 가능한 테스트 자동화 솔루션 구축에 대한 경험이 많다.
팩트출판사에서 출간한 『Selenium 웹드라이버 테스트 자동화』(에이콘, 2014)와 『Learning Selenium Testing Tools with Python』(2014)의 저자기도 하다.

사티야 아바사알라(Satya Avasarala)

개발과 테스트 자동화 분야에 풍부한 경험을 가지고 있다. 전산학 엔지니어로 지금까지 수년간 웹드라이버를 사용해 자동화 프레임워크를 구축해왔다. 오라클과 야후, VMWare, REA 그룹 같은 다양하고 규모가 큰 소프트웨어 회사에서 일한 경력이 있다. 서비스 지향 아키텍처(Service Oriented Architectural) 설계와 비즈니스 인텔리전스(Business Intelligence)에도 많은 관심이 있는데, 오라클에서 인증한 서비스 지향 아키텍처 인프라 설계 전문가인 동시에 비즈니스 인텔리전스 구축 전문가이기도 하다.

옮긴이의 말

웹 브라우저 자동화 테스트의 실질적 표준이던 셀레늄 웹드라이버가 3 버전이 되면서 이제 진짜 표준이 됐다. W3C 표준을 준수하는 브라우저라면 셀레늄을 지원하기 때문에 브라우저 자동화를 더 쉽게 작성할 수 있다.
프로젝트의 개발, 배포의 주기가 갈수록 빨라지는 추세에 자동화 테스트는 반드시 구축해야 하는 개발 프로세스의 일부가 되고 있다. 더불어 셀레늄을 둘러싼 주변의 환경도 빠르게 변화하고 있다. 이 책에서는 변화하는 환경에 맞춘 내용들을 다루고 있다. 또한 자바8에서 추가된 함수형 기능이나 셀레늄 그리드를 기반으로 하는 클라우드 서비스에 대한 내용과 데이터 주도 테스트에 대한 내용도 확인할 수 있다.
이 책을 통해 새로운 셀레늄 버전에서 달라진 부분과 이전보다 강화된 예제들을 살펴보고 테스트 자동화을 향한 여정에 도움이 됐으면 좋겠다.

옮긴이 소개

김유성

자동화 기술과 실수를 줄이는 방법에 관심이 많고 꾸준히 무언가를 만드는 사람이 되고 싶다. 현재 사이냅소프트에서 웹 애플리케이션을 개발하고 있다. 번역서로는 에이콘출판사에서 출간한 『Selenium 웹드라이버 테스트 자동화』(2014), 『Selenium WebDriver 길들이기』(2016), 『타입스크립트 마스터 2/e』(2018), 『타입스크립트 실전 프로젝트』(2021) 등이 있다.

목차

목차
  • 1장. 웹드라이버와 웹 엘리먼트 소개
    • 셀레늄 테스트 도구
      • 셀레늄 웹드라이버
      • 셀레늄 서버
      • 셀레늄 IDE
    • 셀레늄 2와 셀레늄 3의 차이점
      • 브라우저 제어
      • 더 나은 API
      • 개발자 지원과 고급 기능
      • Appium으로 모바일 앱 테스트
    • 이클립스에서 메이븐, TestNG로 자바 프로젝트 설정
    • 웹 엘리먼트
    • 웹 페이지에서 웹 엘리먼트 지정
      • findElement( ) 메서드
      • findElements( ) 메서드
      • 개발자 도구로 엘리먼트 검사
        • 파이어폭스로 엘리먼트와 페이지 검사
        • 크롬 개발자 도구로 페이지와 엘리먼트 검사
      • By 지정자 사용하기
        • By.id( ) 메서드
        • By.name( ) 메서드
        • By.className 메서드
        • By.linkText 메서드
        • By.partialLinkText( ) 메서드
        • By.tagName( ) 메서드
        • By.xpath( ) 메서드
        • By.cssSelector( ) 메서드
    • 웹 엘리먼트에서 할 수 있는 여러 가지 동작
      • 엘리먼트 속성 가져오기
        • getAttibute( ) 메서드
        • getText( ) 메서드
        • getCssValue( ) 메서드
        • getLocation( ) 메서드
        • getSize( ) 메서드
        • getTagName( ) 메서드
      • 웹 엘리먼트에서 액션 실행
        • sendKeys( ) 메서드
        • clear( ) 메서드
        • submit( ) 메서드
      • 웹 엘리먼트의 상태 확인
        • isDisplayed( ) 메서드
        • isEnabled( ) 메서드
        • isSelected( ) 메서드
    • 요약
    • 질문
    • 더 살펴보기

  • 2장. 웹 브라우저를 지원하는 다양한 웹드라이버
    • 파이어폭스 드라이버
      • 게코 드라이버 사용
      • 헤드리스 모드 사용
      • 파이어폭스 프로필
        • 파이어폭스 확장 기능 추가
        • 프로필 저장과 불러오기
      • 파이어폭스 환경 설정
        • 환경 설정 다루기
        • 고정 설정의 이해
    • 크롬 드라이버
      • 헤드리스 모드 사용
      • 모바일 에뮬레이션으로 모바일 웹 애플리케이션 테스트
      • 크롬 확장 기능 추가
    • 인터넷 익스플로러 드라이버
      • IE 브라우저를 사용하는 테스트 스크립트 작성
      • IEDriver 기능 이해
    • Edge 드라이버
      • Edge 브라우저를 사용하는 테스트 스크립트 작성
    • 사파리 드라이버
      • 사파리용 테스트 스크립트 작성
    • 요약
    • 질문
    • 더 살펴보기

  • 3장. 자바 8 기능 사용
    • 자바 8 스트림 API 소개
      • Stream.filter( )
        • Stream.sort( )
        • Stream.map( )
        • Stream.collect( )
        • Stream.min( )과 Stream
        • Stream.count( )
    • 셀레늄 웹드라이버와 스트림 API 사용
      • 웹 엘리먼트 필터링과 개수 세기
      • 엘리먼트 속성 필터링
      • Map 함수로 엘리먼트의 텍스트 값 추출
      • 필터링한 엘리먼트에 작업 실행
    • 요약
    • 질문
    • 더 살펴보기

  • 4장. 웹드라이버 기능 알아보기
    • 스크린샷 캡처
    • 윈도우 창과 iFrame 지정
      • 윈도우 창 전환
      • 프레임 간 전환
      • 알림 창 다루기
    • 브라우저 내비게이션 제어
    • 로딩 중인 웹 엘리먼트 기다리기
      • 묵시적 대기 시간
      • 명시적 대기 시간
    • 쿠키 핸들링
    • 요약
    • 질문
    • 더 살펴보기

  • 5장. 고급 사용자 인터랙션
    • 액션을 만들어 실행하기
    • 마우스 인터랙션
      • moveByOffset 액션
      • click 액션
      • 웹 엘리먼트를 사용하는 click 액션
      • clickAndHold 액션
      • 웹 엘리먼트를 사용하는 clickAndHold 액션
      • release 액션
      • 웹 엘리먼트를 사용하는 release 액션
      • moveToElement 액션
      • dragAndDropBy 액션
      • dragAndDrop 액션
      • doubleClick 액션
      • 웹 엘리먼트를 사용하는 doubleClick 액션
      • 웹 엘리먼트를 사용하는 contextClick 액션
      • 현재 위치에서 contextClick 액션
    • 키보드 인터랙션
      • keyDown, keyUp 액션
      • sendKeys( ) 메서드
    • 요약
    • 질문
    • 더 살펴보기

  • 6장. 웹드라이버 이벤트의 이해
    • eventFiringWebDriver와 eventListener 클래스
    • EventListener 인스턴스 생성
      • WebDriverEventListener 인터페이스 구현
      • AbstractWebDriverEventListener 상속 구현
      • WebDriver 인스턴스 생성
      • EventFiringWebDriver와 EventListener 인스턴스 생성
      • EventFiringWebDriver에 EventListener 등록
      • 이벤트 발생과 확인
      • 여러 개의 EventListener 등록
    • WebDriver에서 제공하는 이벤트 리스너
      • WebElement 값 변경 이벤트
      • WebElement 클릭 이벤트
      • WebElement 검색 jator 이벤트
      • 브라우저 뒤로 가기 이벤트
      • 브라우저 앞으로 가기 이벤트
      • navigateTo 이벤트
      • 스크립트 실행 이벤트
      • 예외 처리
      • EventFiringWebDriver에 등록한 EventListener 제거
      • 접근성 테스트 수행
      • 페이지 성능 지표 측정
    • 요약
    • 질문
    • 더 살펴보기

  • 7장. 리모트 웹드라이버 살펴보기
    • 리모트 웹드라이버 소개
      • 셀레늄 단독 서버
        • 셀레늄 단독 서버 다운로드
        • 서버 실행
      • 리모트 웹드라이버 클라이언트
        • 리모트 웹드라이버 서버를 위한 테스트 스크립트 수정
        • 리모트 웹드라이버를 통한 파이어폭스 사용법
        • 리모트 웹드라이버를 통한 인터넷 익스플로러 사용법
    • JSON 와이어 프로토콜
    • 요약
    • 질문
    • 더 살펴보기

  • 8장. 셀레늄 그리드
    • 셀레늄 그리드 알기
    • 허브의 역할
    • 노드의 역할
    • 셀레늄 그리드를 위한 테스트 스크립트로 수정
      • 미등록 환경에 대한 요청
      • 노드가 작업 중일 때 요청 큐잉하기
      • 조건에 맞는 노드가 두 개인 경우
    • 셀레늄 그리드 설정
      • 노드 설정 파라미터
        • 지원 브라우저 설정
        • 노드 타임아웃 설정
        • 브라우저 인스턴스의 생성 제한 설정
        • 노드의 자동 등록
        • 노드의 상태 체크
        • 노드의 등록 해제
        • 브라우저 타임아웃 설정
      • 허브 설정 파라미터
      • 테스트 환경이 준비될 때까지 대기하기
      • CapabilityMatcher 사용자 정의
      • 새로운 세션을 만들 때 사용하는 WaitTimeout
      • 셀레늄 그리드 환경을 설정하는 다른 방법
    • 클라우드 기반 셀레늄 그리드에서 크로스 브라우저 테스트
    • 요약
    • 질문
    • 더 살펴보기

  • 9장. 페이지 객체 패턴
    • 워드프레스 블로그를 대상으로 테스트 케이스 만들기
      • 테스트 케이스 1: 새로운 글 등록
      • 테스트 케이스 2: 글 지우기
      • 테스트 케이스 3: 워드프레스 블로그의 글 개수 세기
    • 페이지 객체 패턴
      • @FindBy 어노테이션
      • PageFactory의 활용
    • 페이지 객체 설계를 위한 고려 사항
      • 서비스 제공자 관점에서 웹 페이지 바라보기
      • 부가 서비스 제공
      • 페이지 객체에서 또 다른 페이지 객체의 사용
        • AddNewPost 페이지 객체
        • AllPostsPage 페이지 객체
      • 사용자 액션이 아닌 서비스로 접근하는 메서드 활용법
      • 초기화 이후의 웹엘리먼트 식별
      • 페이지에 특화된 부분 분리
      • Loadable 컴포넌트
    • 워드프레스 테스트 실습
      • 테스트에 사용하는 페이지 객체 설명
        • AdminLoginPage
        • AllPostsPage
        • AddNewPostPage
        • EditPostPage
        • DeletePostPage
      • 테스트 케이스 작성
        • 게시글 추가 테스트
        • 게시글 수정 테스트
        • 게시글 삭제 테스트
        • 게시글 세기 테스트
    • 요약
    • 질문
    • 더 살펴보기

  • 10장. Appium을 이용한 iOS와 안드로이드 테스트
    • 다양한 형태의 모바일 애플리케이션
    • 사용 가능한 소프트웨어 도구
    • Appium을 이용한 iOS와 안드로이드 테스트 자동화
      • iOS 애플리케이션 테스트 자동화
      • 안드로이드 애플리케이션 테스트 자동화
      • Appium 사용준비
        • Xcode 설정
        • 안드로이드 SDK 설치
        • 안드로이드 에뮬레이터 생성
      • Appium 설치
      • iOS 자동화
      • 안드로이드 자동화
      • 클라우드 기반의 실제 기기 테스트
    • 요약
    • 질문
    • 더 살펴보기

  • 11장. TestNG로 수행하는 데이터 주도 테스트
    • 데이터 주도 테스트
    • 스위트 파라미터를 사용한 파라미터화 테스트
    • 데이터 제공자와 파라미터화 테스트
      • CSV 파일에서 데이터 읽어오기
      • 엑셀 파일에서 데이터 읽어오기
    • 요약
    • 질문
    • 더 살펴보기
  • 연습문제

도서 오류 신고

도서 오류 신고

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

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

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