ui test 자동화하기 - selenium + jenkins

20
UI TEST 자동화 - SELENIUM + JENKINS 연창학

Upload: chang-hak-yeon

Post on 07-Jan-2017

503 views

Category:

Software


10 download

TRANSCRIPT

Page 1: Ui test 자동화하기 - Selenium + Jenkins

UI TEST 자동화- SELENIUM + JENKINS

연창학

Page 2: Ui test 자동화하기 - Selenium + Jenkins

프로젝트진행중 (개발자시점)

• 수정 -> 수정 -> 수정하다보면….

기획QA

로그인이안되요.

로그인이안되요.

로그인이안되요.

로그인이안되요.

로그인이안되요.

로그인이안되요.

Page 3: Ui test 자동화하기 - Selenium + Jenkins

프로젝트진행중 (개발자시점)

화. 난. 다.

Page 4: Ui test 자동화하기 - Selenium + Jenkins

프로젝트진행중 (QA 시점)

QA

로그인이됐었는데…

로그인이됐었는데…

로그인이됐었는데…

로그인이됐었는데…

로그인이됐었는데…

로그인이됐었는데…

Page 5: Ui test 자동화하기 - Selenium + Jenkins

프로젝트진행중 (Q/A 시점)

귀. 찮. 다.

Page 6: Ui test 자동화하기 - Selenium + Jenkins

뫼비우스의띠

방법이없을까?

Page 7: Ui test 자동화하기 - Selenium + Jenkins

해결책 – UI TEST 자동화

• Phantom JS

• Selenium

• Naver Guitar 등등..

- HTML, CSS, 자바스크립트

파일을인식

Page 8: Ui test 자동화하기 - Selenium + Jenkins

SELENIUM 준비사항

Firefox 설치

Python 2.7.x, Selenium설치(C, Java, Ruby도가능)

python -m unittest discover -s ./ -p "*.py" 으로전체테스트실행

Page 9: Ui test 자동화하기 - Selenium + Jenkins

간단한코드예시

Page 10: Ui test 자동화하기 - Selenium + Jenkins

주의사항

• Python Unittest는함수명에따라 test 인식

• 함수명이 test로시작해야만 unittest 실행

• 일반함수(로그인등)를모듈화하고테스트함수는 test_XXX 등의이름으

로작성해야한다.

Page 11: Ui test 자동화하기 - Selenium + Jenkins

간단한시연

• 데모라.. 가끔에러가..

Page 12: Ui test 자동화하기 - Selenium + Jenkins

UI TEST 자동화까진 OK

• 그런데하루종일계속돌려야돼?

NO!

Page 13: Ui test 자동화하기 - Selenium + Jenkins

JENKINS와연동

• 테스트서버빌드프로젝트의하위프로젝트로만들기

• 테스트서버가빌드되면변화를인식한뒤자동적으로테스트를진행한다!

Page 14: Ui test 자동화하기 - Selenium + Jenkins

TEST 결과

• JENKINS CONSOLE 창에서결과확인가능

(필요하다면슬랙공지도가능)

Page 15: Ui test 자동화하기 - Selenium + Jenkins

전체프로세스도식도

Git

(Frontend)

Git

(Selenium)

Jenkins 서비스

개발자

개발자

개발자

QA

1. 개발 & Push

2. 변화감지

3. 코드빌드

4. 빌드후전송

5. 빌드완료감지

6. 코드요청

7. 코드빌드8. 테스트실행

Page 16: Ui test 자동화하기 - Selenium + Jenkins

SELENIUM TIPS

• 1) Selenium IDE 설치 (Firefox 확장프로그램)

Page 17: Ui test 자동화하기 - Selenium + Jenkins

SELENIUM TIPS

• 1) Selenium IDE 설치 (Firefox 확장프로그램)

각종언어로변환가능

* 오류는많음… 적절한수정필요

Page 18: Ui test 자동화하기 - Selenium + Jenkins

SELENIUM TIPS

• 2) Firebug, Firepath설치 (Firefox 확장프로그램)

Page 19: Ui test 자동화하기 - Selenium + Jenkins

SELENIUM TIPS

• 2) Firebug, Firepath설치 (Firefox 확장프로그램)

Selenium은 id, class 등의값으로 item(?) 인식

간혹개발자들의실수로 item 간의 id, class 구별없이개발!

-> Selenium 이상현상발생

Firepath를설치하여각 item 들의 Xpath(절대경로)를넣어주면이상현상발생방지

Ex) id가 email인 item이많아서 selenium이인식하기어려울때

driver.find_element_by_id("email").click()

대신driver.find_element_by_xpath(".//*[@id='footerNav']/ul/li[2]/span").click()

Page 20: Ui test 자동화하기 - Selenium + Jenkins

SELENIUM TIPS

• 3) IE, Chrome을열때

Selenium의기본브라우저는 Firefox.

driver = webdriver.Firefox()

간단히열수있다.

하지만 Ie, Chrome은

driver = webdriver.Ie()

driver = webdriver.Chrome() 명령어를실행할경우에러가발생한다.

IEDriverServer, chromedriver를설치한후 path 설정을완료한후에

driver = webdriver.Ie("C:\IEDriver\IEDriverServer.exe")

driver = webdriver.Chrome('C:\chromedriver\chromedriver.exe')

의명령어로실행해야한다.