네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 ·...

53
네이버는 이렇게 테스트 한다 블로그 웹 테스트 자동화 사례 박선영([email protected] ) 2010 NHN CORPORATION

Transcript of 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 ·...

Page 1: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

네이버는 이렇게 테스트 한다블로그 웹 테스트 자동화 사례

박선영([email protected])

ⓒ 2010 NHN CORPORATION

Page 2: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

2

목차

우리의 현실

테스트 자동화(Test Automation)란?

블로그 웹 테스트 자동화 구현 사례

테스트 자동화를 통해 배운 점

블로그 웹 테스트 자동화 효과

Page 3: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

3

우리의 현실

Page 4: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

4

열혈 코딩

Page 5: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

5

반복적 테스팅

Page 6: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

6

그 결과는 …

Page 7: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

7

우리의 현실엔

어떤 문제점이 있나요?

Page 8: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

8

서비스장애

효율적인 테스트 시간 활용

고객의 끊임없는 요구 사항

기능 개선 및 Bug fix

정기 배포

네이버에서는 …

Page 9: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

9

늦은 통합

디자인및 개발(UX개발 / 기술설계 / 구현)

통합테스트및출시

상세설계

과제제안상위기획

운영/유지보수

Requirement Design Implementation Test Maintenance

매뉴얼 테스트

비효율성

낮은 코드 완성도

느린 피드백

결함이 늦게 발견

디버깅 비용 증가

일정 불확실성 증가

Side Effect 발생

코드의 레거시화

NHN의 소프트웨어 생산 체계

Page 10: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

10

Test Automation

Page 11: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

11

테스트 자동화 어렵지 않나요?

Page 12: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

12

테스트 자동화 도구는 어떻게 선정하나요?1

2 테스트 홖경은 어떻게 구축하나요?

3

UI가 자주 변경되는데, 유지보수가 될까요?4

테스트 자동화 어려운 점

테스트 자동화 스크립트는 어떻게 구현하죠?

Page 13: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

블로그 웹 테스트 자동화 구현 사례

Page 14: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

14

자동화 도구 선정은 어떻게 했나요?

Page 15: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

15

선택!

호홖성

도구의가격

유지보수지원

사용성

자동화 도구 선정의 기준

Page 16: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

16

Page 17: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

17

왜 Selenium 인가요?

Page 18: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

18

HTML기반으로 레코딩 되고 다양한 언어로 컨버팅 가능

Java, Perl, PHP, C#, Ruby 등 다양한 언어지원

오픈 소스, 무료

UI Target 을 다양한 방법으로 지원 (Xpath, ID, Name, CSS, DOM 등으로 지정 가능)

다양한 홖경 (OS/Browser) 지원

Page 19: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

19

테스트 홖경은 어떻게 구축했나요?

Page 20: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

20

시스템 구조도

SVN

① Commit

⑤ Test ResultSelenium RC 서버

(windows)CI 서버

(Hudson)

② Check-out

③ Build & Run

⑥ Report

⑦ Monitoring

DB

Web Server

개발자

개발자

QA ⑦ Monitoring

④ Command

Page 21: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

21

테스트 자동화 스크립트

어떻게 작성하나요?

Page 22: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

22

Step 1) 스크립트 레코딩

Selenium IDE를 구동하여 스크립트 레코딩

Page 23: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

23

Step 2) Java(JUnit) 변홖

레코딩 된 스크립트를 Java로 변홖

Page 24: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

24

Microsoft Windows [Version 6.1.7600]Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\Users\nhn>java -jar "D:/Selenium/selenium/selenium-server-1.0.3/selenium-server.jar"

16:27:37.674 INFO - Java: Sun Microsystems Inc. 16.3-b0116:27:37.675 INFO - OS: Windows 7 6.1 x8616:27:37.680 INFO - v2.0 [a2], with Core v2.0 [a2]

16:27:37.817 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub16:27:37.818 INFO - Version Jetty/5.1.x16:27:37.819 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]

16:27:37.849 INFO - Started HttpContext[/selenium-server,/selenium-server]16:27:37.850 INFO - Started HttpContext[/,/]16:27:37.933 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@1ea2dfe

16:27:37.934 INFO - Started HttpContext[/wd,/wd]16:27:37.960 INFO - Started SocketListener on 0.0.0.0:444416:27:37.960 INFO - Started org.openqa.jetty.jetty.Server@10b4199

Step 3) Selenium RC 서버 구동

Page 25: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

25

Step 4) 실행

Page 26: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

26

Step 5) 실행 결과 확인

Page 27: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

27

여기까지는 우리도 할 줄 알아요

블로그에서 다른 건 뭐죠?

Page 28: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

28

Step 6) SVN Repository에 테스트 스크립트 커밋

Page 29: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

29

Step 7) CI(Continuous Integration) 서버에 프로젝트 등록

Page 30: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

30

Step 8) CI 서버 설정

CI Server

1) Build Triggers자동 빌드주기 설정 Build periodically – Daily Build

3) Post-Build Action결과 보고서생성 옵션 설정결과 리포트경로 E-mail Notification

2) Build빌드 옵션설정Maven Goal

Build Triggers

BuildPost-Build

Action

Page 31: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

31

Step 9) CI 서버에서 실행

Page 32: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

32

Step 10) 테스트 실행 완료

Page 33: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

33

Step 11) 테스트 결과 분석

• 오류가 발생하는 경우

- 소스 코드가 변경 되었지만, 테스트 자동화 스크립트가 변경되지 않은 경우

- 소스 코드의 버그로 인해 테스트 자동화 스크립트에서 발견된 경우

Page 34: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

34

Step 12) 모니터링 – 메일로 통지

Page 35: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

35

Step 13) Code Coverage 확인

Clover 연동

테스트 코드 커버리지 측정

코드 커버리지 60% 달성

Page 36: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

36

동영상 데모

Page 37: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

37

Page 38: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

38

Page 39: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

39

유지보수를 잘 하려면?

Page 40: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

40

웹 표준 준수하여 구현

1) 웹 표준화 가이드를 따르는 코딩 습관

2) 네이밍 룰을 준수하여 가독성 향상

[참고] NHN 웹 표준화 가이드 (http://html.nhndesign.com)

Page 41: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

41

public void AttatchMapTest() throws

Exception {

selenium.click("link=포스트쓰기");selenium.selectFrame("papermain");

selenium.click("link=지도");

}

변경되지 않는 Unique 한 속성값을 선택

selenium.click("//li[@id='attach_map']/a);

UI 변경 영향을 받지 않도록 스크립트 작성

Page 42: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

42

테스트 스크립트 구조화

1) 테스트에 사용될 ID를 하나의 Class로 구현

블로그웹테스트자동화에사용될

테스트 ID 정보를하나의 Class로구현

Page 43: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

43

테스트 스크립트 구조화

2) 공통적으로 사용되는 메소드는 모든 개발자가 참조할 수 있도록 별도의 Class에 구현

블로그웹테스트자동화에사용될

테스트 ID 정보를공통클래스에구현

공통변수

공통메소드

Page 44: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

블로그 웹 테스트 자동화 효과

Page 45: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

45

블로그 테스트 자동화 결과

100%

88%

12%

60%

전체기능 자동화율 자동화제외 Code Coverage

테스트 자동화 결과

자동화 제외) Flash, Windows popup 으로 구현된 부분

Page 46: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

46

테스트 자동화 후 ,

어떤 점이 좋아졌나요?

Page 47: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

47

블로그 전체 테스트 케이스를 수동 테스트 할 경우 10일 걸리는테스트 시간을 자동화 할 경우 6시간 이내로 단축할 수 있다.

업무시간 외 자동으로 테스트 수행시켜 출귺 후에 테스트 결과를얻을 수 있다.

수동 테스트의 한계(예 - 글쓰기 도배 방지, 최대값 체크 등)도극복 가능하다.

매번 동일한 기능을 반복 테스트 하지 않아도 된다.

수정한 기능으로 인한 Side effect 를 미리 발견 할 수 있다.

Page 48: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

48

우리는 이런 것을 배웠어요!

Page 49: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

49

웹 테스트 자동화 생홗화

김개발자, 뭐해?

땀 흘리며 웹 테스트 자동화 준비 중….

좀 귀찮아도 한번 만들면겨울 동안 자동으로테스트 할 수 있어!

그런 것이 있다고?나도 이제

해봐야겠어!!!

[출처] 웅진 극동건설, 기업문화 혁신 만화 – 개미와 배짱이 중

Page 50: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

50

블로그서비스

품질향상

지속적인 유지보수

Page 51: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

51

의지와 노력

Page 52: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

52

웹 테스트 자동화

지금 바로 시작할 수 있습니다!

Page 53: 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 · 네이버는이렇게테스트한다 블로그웹테스트자동화사례 박선영(zerop@nhn.com) ⓒ2010 NHN CORPORATION

53

참고 사이트

1. Selenium 다운로드사이트 : http://seleniumhq.org 2. Selenium사용자매뉴얼이있는사이트

: http://code.google.com/p/selenium/ 3. CI Hudson 다운로드사이트 : http://hudson-ci.org/4. Maven 다운로드사이트및참고자료 :

: http://maven.apache.org/: http://maven.apache.org/plugins/maven-surefire-plugin/

1. SVN 다운로드사이트 : http://subversion.tigris.org/2. Clover 다운로드사이트 :

http://www.atlassian.com/software/clover/