ݺߣ

ݺߣShare a Scribd company logo
UI TEST 자동화
- SELENIUM + JENKINS
연창학
프로젝트 진행 중 (개발자시점)
• 수정 -> 수정 -> 수정 하다보면….
기획
QA
로그인이 안되요.
로그인이 안되요.
로그인이 안되요.
로그인이 안되요.
로그인이 안되요.
로그인이 안되요.
프로젝트 진행 중 (개발자시점)
화. 난. 다.
프로젝트 진행 중 (QA 시점)
QA
로그인이 됐었는
데…
로그인이 됐었는
데…
로그인이 됐었는
데…
로그인이 됐었는
데…
로그인이 됐었는
데…
로그인이 됐었는
데…
프로젝트 진행 중 (Q/A 시점)
귀. 찮. 다.
뫼비우스의 띠
방법이 없을까?
해결책 – UITEST 자동화
• Phantom JS
• Selenium
• Naver Guitar 등등..
- HTML, CSS, 자바스크립트
파일을 인식
SELENIUM 준비 사항
Firefox 설치
Python 2.7.x, Selenium설치(C, Java, Ruby도 가능)
python -m unittest discover -s ./ -p "*.py" 으로 전체 테스트 실행
끝
간단한 코드 예시
주의 사항
• Python Unittest는 함수명에 따라 test 인식
• 함수명이 test로 시작해야만 unittest 실행
• 일반 함수(로그인 등)를 모듈화하고 테스트 함수는 test_XXX 등의 이름으
로 작성해야한다.
간단한 시연
• 데모라.. 가끔 에러가..
UITEST 자동화까진 OK
• 그런데 하루 종일 계속 돌려야돼?
NO!
JENKINS와 연동
• 테스트 서버 빌드 프로젝트의 하위 프로젝트로 만들기
• 테스트 서버가 빌드되면 변화를 인식한 뒤 자동적으로 테스트를 진행한다!
TEST 결과
• JENKINS CONSOLE 창에서 결과 확인 가능
(필요하다면 슬랙 공지도 가능)
전체 프로세스 도식도
Git
(Frontend)
Git
(Selenium)
Jenkins 서비스
개발자
개발자
개발자
QA
1. 개발 & Push
2. 변화 감지
3. 코드 빌드
4. 빌드 후 전송
5. 빌드 완료 감지
6. 코드 요청
7. 코드 빌드
8. 테스트 실행
SELENIUMTIPS
• 1) Selenium IDE 설치 (Firefox 확장 프로그램)
SELENIUMTIPS
• 1) Selenium IDE 설치 (Firefox 확장 프로그램)
각종 언어로 변환 가능
* 오류는 많음… 적절한 수정 필요
SELENIUMTIPS
• 2) Firebug, Firepath설치 (Firefox 확장 프로그램)
SELENIUMTIPS
• 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()
SELENIUMTIPS
• 3) IE, Chrome을 열 때
Selenium의 기본 브라우저는 Firefox.
driver = webdriver.Firefox()
간단히 열 수 있다.
하지만 Ie, Chrome은
driver = webdriver.Ie()
driver = webdriver.Chrome() 명령어를 실행할 경우 에러가 발생한다.
IEDriverServer, chromedriver를 설치한 후 path 설정을 완료한 후에
driver = webdriver.Ie("C:IEDriverIEDriverServer.exe")
driver = webdriver.Chrome('C:chromedriverchromedriver.exe')
의 명령어로 실행해야 한다.

More Related Content

What's hot (20)

Rest api 테스트 수행가이드
Rest api 테스트 수행가이드Rest api 테스트 수행가이드
Rest api 테스트 수행가이드
SangIn Choung
Robot Framework :: Demo login application
Robot Framework :: Demo login applicationRobot Framework :: Demo login application
Robot Framework :: Demo login application
Somkiat Puisungnoen
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅
영기 김
JUnit Presentation
JUnit PresentationJUnit Presentation
JUnit Presentation
priya_trivedi
Functional Tests Automation with Robot Framework
Functional Tests Automation with Robot FrameworkFunctional Tests Automation with Robot Framework
Functional Tests Automation with Robot Framework
laurent bristiel
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
SangIn Choung
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
SangIn Choung
(애자일) 테스트 계획서 샘플
(애자일) 테스트 계획서 샘플(애자일) 테스트 계획서 샘플
(애자일) 테스트 계획서 샘플
SangIn Choung
Introduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsIntroduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec Jenkins
Eric Hogue
Code Review Best Practices
Code Review Best PracticesCode Review Best Practices
Code Review Best Practices
Trisha Gee
Unit tests & TDD
Unit tests & TDDUnit tests & TDD
Unit tests & TDD
Dror Helper
Testing in go
Testing in goTesting in go
Testing in go
Eduardo Felipe Ewert Bonet
Test NG Framework Complete Walk Through
Test NG Framework Complete Walk ThroughTest NG Framework Complete Walk Through
Test NG Framework Complete Walk Through
Narendran Solai Sridharan
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법
Sehyeon Nam
자동화된 Test Case의 효과
자동화된 Test Case의 효과자동화된 Test Case의 효과
자동화된 Test Case의 효과
도형 임
N Unit Presentation
N Unit PresentationN Unit Presentation
N Unit Presentation
priya_trivedi
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스
Arawn Park
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDD
Sunghyouk Bae
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화
Jaehoon Oh
테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례
SangIn Choung
Rest api 테스트 수행가이드
Rest api 테스트 수행가이드Rest api 테스트 수행가이드
Rest api 테스트 수행가이드
SangIn Choung
Robot Framework :: Demo login application
Robot Framework :: Demo login applicationRobot Framework :: Demo login application
Robot Framework :: Demo login application
Somkiat Puisungnoen
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅
영기 김
Functional Tests Automation with Robot Framework
Functional Tests Automation with Robot FrameworkFunctional Tests Automation with Robot Framework
Functional Tests Automation with Robot Framework
laurent bristiel
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
SangIn Choung
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
SangIn Choung
(애자일) 테스트 계획서 샘플
(애자일) 테스트 계획서 샘플(애자일) 테스트 계획서 샘플
(애자일) 테스트 계획서 샘플
SangIn Choung
Introduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsIntroduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec Jenkins
Eric Hogue
Code Review Best Practices
Code Review Best PracticesCode Review Best Practices
Code Review Best Practices
Trisha Gee
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법
Sehyeon Nam
자동화된 Test Case의 효과
자동화된 Test Case의 효과자동화된 Test Case의 효과
자동화된 Test Case의 효과
도형 임
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스
Arawn Park
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화
Jaehoon Oh
테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례
SangIn Choung

Similar to Ui test 자동화하기 - Selenium + Jenkins (20)

NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
Jinuk Kim
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
Chanwoong Kim
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
Amazon Web Services Korea
지속적인 통합
지속적인 통합지속적인 통합
지속적인 통합
중선 곽
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
Jongwon Han
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
SangIn Choung
테스팅을위한선행조건 명세
테스팅을위한선행조건 명세테스팅을위한선행조건 명세
테스팅을위한선행조건 명세
규동 최규동
[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기
Luavis Kang
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
Sungmin Kim
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
DONGSU KIM
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
hyunho Lee
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
Kenu, GwangNam Heo
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅
Yoonsung Jung
필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화
none
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
MooYeol Lee
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST_NHNent
성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기
DomainDriven DomainDriven
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
JinKwon Lee
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
KTH, 케이티하이텔
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
Jinuk Kim
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
Chanwoong Kim
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
Amazon Web Services Korea
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
Jongwon Han
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
SangIn Choung
테스팅을위한선행조건 명세
테스팅을위한선행조건 명세테스팅을위한선행조건 명세
테스팅을위한선행조건 명세
규동 최규동
[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기
Luavis Kang
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
Sungmin Kim
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
DONGSU KIM
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
hyunho Lee
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
Kenu, GwangNam Heo
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅
Yoonsung Jung
필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화
none
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
MooYeol Lee
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST_NHNent
성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기
DomainDriven DomainDriven
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
JinKwon Lee
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
KTH, 케이티하이텔

Ui test 자동화하기 - Selenium + Jenkins

  • 1. UI TEST 자동화 - SELENIUM + JENKINS 연창학
  • 2. 프로젝트 진행 중 (개발자시점) • 수정 -> 수정 -> 수정 하다보면…. 기획 QA 로그인이 안되요. 로그인이 안되요. 로그인이 안되요. 로그인이 안되요. 로그인이 안되요. 로그인이 안되요.
  • 3. 프로젝트 진행 중 (개발자시점) 화. 난. 다.
  • 4. 프로젝트 진행 중 (QA 시점) QA 로그인이 됐었는 데… 로그인이 됐었는 데… 로그인이 됐었는 데… 로그인이 됐었는 데… 로그인이 됐었는 데… 로그인이 됐었는 데…
  • 5. 프로젝트 진행 중 (Q/A 시점) 귀. 찮. 다.
  • 7. 해결책 – UITEST 자동화 • Phantom JS • Selenium • Naver Guitar 등등.. - HTML, CSS, 자바스크립트 파일을 인식
  • 8. SELENIUM 준비 사항 Firefox 설치 Python 2.7.x, Selenium설치(C, Java, Ruby도 가능) python -m unittest discover -s ./ -p "*.py" 으로 전체 테스트 실행 끝
  • 10. 주의 사항 • Python Unittest는 함수명에 따라 test 인식 • 함수명이 test로 시작해야만 unittest 실행 • 일반 함수(로그인 등)를 모듈화하고 테스트 함수는 test_XXX 등의 이름으 로 작성해야한다.
  • 11. 간단한 시연 • 데모라.. 가끔 에러가..
  • 12. UITEST 자동화까진 OK • 그런데 하루 종일 계속 돌려야돼? NO!
  • 13. JENKINS와 연동 • 테스트 서버 빌드 프로젝트의 하위 프로젝트로 만들기 • 테스트 서버가 빌드되면 변화를 인식한 뒤 자동적으로 테스트를 진행한다!
  • 14. TEST 결과 • JENKINS CONSOLE 창에서 결과 확인 가능 (필요하다면 슬랙 공지도 가능)
  • 15. 전체 프로세스 도식도 Git (Frontend) Git (Selenium) Jenkins 서비스 개발자 개발자 개발자 QA 1. 개발 & Push 2. 변화 감지 3. 코드 빌드 4. 빌드 후 전송 5. 빌드 완료 감지 6. 코드 요청 7. 코드 빌드 8. 테스트 실행
  • 16. SELENIUMTIPS • 1) Selenium IDE 설치 (Firefox 확장 프로그램)
  • 17. SELENIUMTIPS • 1) Selenium IDE 설치 (Firefox 확장 프로그램) 각종 언어로 변환 가능 * 오류는 많음… 적절한 수정 필요
  • 18. SELENIUMTIPS • 2) Firebug, Firepath설치 (Firefox 확장 프로그램)
  • 19. SELENIUMTIPS • 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()
  • 20. SELENIUMTIPS • 3) IE, Chrome을 열 때 Selenium의 기본 브라우저는 Firefox. driver = webdriver.Firefox() 간단히 열 수 있다. 하지만 Ie, Chrome은 driver = webdriver.Ie() driver = webdriver.Chrome() 명령어를 실행할 경우 에러가 발생한다. IEDriverServer, chromedriver를 설치한 후 path 설정을 완료한 후에 driver = webdriver.Ie("C:IEDriverIEDriverServer.exe") driver = webdriver.Chrome('C:chromedriverchromedriver.exe') 의 명령어로 실행해야 한다.