SlideShare a Scribd company logo
1 of 20
Download to read offline
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

자동화된 Test Case의 효과
자동화된 Test Case의 효과자동화된 Test Case의 효과
자동화된 Test Case의 효과도형 임
 
(애자일) 테스트 계획서 샘플
(애자일) 테스트 계획서 샘플(애자일) 테스트 계획서 샘플
(애자일) 테스트 계획서 샘플SangIn Choung
 
05 junit
05 junit05 junit
05 junitmha4
 
Unit Testing with Jest
Unit Testing with JestUnit Testing with Jest
Unit Testing with JestMaayan Glikser
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)Jongwon Kim
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법SangIn Choung
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Jaehoon Oh
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스철민 신
 
Effective testing with pytest
Effective testing with pytestEffective testing with pytest
Effective testing with pytestHector Canto
 
What is JUnit? | Edureka
What is JUnit? | EdurekaWhat is JUnit? | Edureka
What is JUnit? | EdurekaEdureka!
 
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool재연 김
 
Understanding Unit Testing
Understanding Unit TestingUnderstanding Unit Testing
Understanding Unit Testingikhwanhayat
 
TestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKETestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKEAbhishek Yadav
 

What's hot (20)

JUNit Presentation
JUNit PresentationJUNit Presentation
JUNit Presentation
 
자동화된 Test Case의 효과
자동화된 Test Case의 효과자동화된 Test Case의 효과
자동화된 Test Case의 효과
 
(애자일) 테스트 계획서 샘플
(애자일) 테스트 계획서 샘플(애자일) 테스트 계획서 샘플
(애자일) 테스트 계획서 샘플
 
05 junit
05 junit05 junit
05 junit
 
TestNG
TestNGTestNG
TestNG
 
Unit Testing with Jest
Unit Testing with JestUnit Testing with Jest
Unit Testing with Jest
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)
 
Automation testing
Automation testingAutomation testing
Automation testing
 
JUnit Presentation
JUnit PresentationJUnit Presentation
JUnit Presentation
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
 
Introduction to Selenium Web Driver
Introduction to Selenium Web DriverIntroduction to Selenium Web Driver
Introduction to Selenium Web Driver
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스
 
Effective testing with pytest
Effective testing with pytestEffective testing with pytest
Effective testing with pytest
 
What is JUnit? | Edureka
What is JUnit? | EdurekaWhat is JUnit? | Edureka
What is JUnit? | Edureka
 
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool
 
Test ng
Test ngTest ng
Test ng
 
Understanding Unit Testing
Understanding Unit TestingUnderstanding Unit Testing
Understanding Unit Testing
 
TestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKETestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKE
 
TestNG with selenium
TestNG with seleniumTestNG with selenium
TestNG with selenium
 

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

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 2016Amazon 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 debuggingJongwon 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 ProductionMooYeol 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, 케이티하이텔
 

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

NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
 
지속적인 통합
지속적인 통합지속적인 통합
지속적인 통합
 
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
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
테스팅을위한선행조건 명세
테스팅을위한선행조건 명세테스팅을위한선행조건 명세
테스팅을위한선행조건 명세
 
[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기[SWMaestro 100+ 발표자료] 테스트하기
[SWMaestro 100+ 발표자료] 테스트하기
 
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)
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
 
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
 
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅
 
필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
 

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') 의 명령어로 실행해야 한다.