네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 ·...
Transcript of 네이버는이렇게테스트한다 - DEVIEW · 2014-09-03 ·...
2
목차
우리의 현실
테스트 자동화(Test Automation)란?
블로그 웹 테스트 자동화 구현 사례
테스트 자동화를 통해 배운 점
블로그 웹 테스트 자동화 효과
3
우리의 현실
4
열혈 코딩
5
반복적 테스팅
6
그 결과는 …
7
우리의 현실엔
어떤 문제점이 있나요?
8
서비스장애
효율적인 테스트 시간 활용
고객의 끊임없는 요구 사항
기능 개선 및 Bug fix
정기 배포
네이버에서는 …
9
늦은 통합
디자인및 개발(UX개발 / 기술설계 / 구현)
통합테스트및출시
상세설계
과제제안상위기획
운영/유지보수
Requirement Design Implementation Test Maintenance
매뉴얼 테스트
비효율성
낮은 코드 완성도
느린 피드백
결함이 늦게 발견
디버깅 비용 증가
일정 불확실성 증가
Side Effect 발생
코드의 레거시화
NHN의 소프트웨어 생산 체계
10
Test Automation
11
테스트 자동화 어렵지 않나요?
12
테스트 자동화 도구는 어떻게 선정하나요?1
2 테스트 홖경은 어떻게 구축하나요?
3
UI가 자주 변경되는데, 유지보수가 될까요?4
테스트 자동화 어려운 점
테스트 자동화 스크립트는 어떻게 구현하죠?
블로그 웹 테스트 자동화 구현 사례
14
자동화 도구 선정은 어떻게 했나요?
15
선택!
호홖성
도구의가격
유지보수지원
사용성
자동화 도구 선정의 기준
16
17
왜 Selenium 인가요?
18
HTML기반으로 레코딩 되고 다양한 언어로 컨버팅 가능
Java, Perl, PHP, C#, Ruby 등 다양한 언어지원
오픈 소스, 무료
UI Target 을 다양한 방법으로 지원 (Xpath, ID, Name, CSS, DOM 등으로 지정 가능)
다양한 홖경 (OS/Browser) 지원
19
테스트 홖경은 어떻게 구축했나요?
20
시스템 구조도
SVN
① Commit
⑤ Test ResultSelenium RC 서버
(windows)CI 서버
(Hudson)
② Check-out
③ Build & Run
⑥ Report
⑦ Monitoring
DB
Web Server
개발자
개발자
QA ⑦ Monitoring
④ Command
21
테스트 자동화 스크립트
어떻게 작성하나요?
22
Step 1) 스크립트 레코딩
Selenium IDE를 구동하여 스크립트 레코딩
23
Step 2) Java(JUnit) 변홖
레코딩 된 스크립트를 Java로 변홖
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 서버 구동
25
Step 4) 실행
26
Step 5) 실행 결과 확인
27
여기까지는 우리도 할 줄 알아요
블로그에서 다른 건 뭐죠?
28
Step 6) SVN Repository에 테스트 스크립트 커밋
29
Step 7) CI(Continuous Integration) 서버에 프로젝트 등록
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
31
Step 9) CI 서버에서 실행
32
Step 10) 테스트 실행 완료
33
Step 11) 테스트 결과 분석
• 오류가 발생하는 경우
- 소스 코드가 변경 되었지만, 테스트 자동화 스크립트가 변경되지 않은 경우
- 소스 코드의 버그로 인해 테스트 자동화 스크립트에서 발견된 경우
34
Step 12) 모니터링 – 메일로 통지
35
Step 13) Code Coverage 확인
Clover 연동
테스트 코드 커버리지 측정
코드 커버리지 60% 달성
36
동영상 데모
37
38
39
유지보수를 잘 하려면?
40
웹 표준 준수하여 구현
1) 웹 표준화 가이드를 따르는 코딩 습관
2) 네이밍 룰을 준수하여 가독성 향상
[참고] NHN 웹 표준화 가이드 (http://html.nhndesign.com)
41
public void AttatchMapTest() throws
Exception {
selenium.click("link=포스트쓰기");selenium.selectFrame("papermain");
selenium.click("link=지도");
…
}
변경되지 않는 Unique 한 속성값을 선택
selenium.click("//li[@id='attach_map']/a);
UI 변경 영향을 받지 않도록 스크립트 작성
42
테스트 스크립트 구조화
1) 테스트에 사용될 ID를 하나의 Class로 구현
블로그웹테스트자동화에사용될
테스트 ID 정보를하나의 Class로구현
43
테스트 스크립트 구조화
2) 공통적으로 사용되는 메소드는 모든 개발자가 참조할 수 있도록 별도의 Class에 구현
블로그웹테스트자동화에사용될
테스트 ID 정보를공통클래스에구현
공통변수
공통메소드
블로그 웹 테스트 자동화 효과
45
블로그 테스트 자동화 결과
100%
88%
12%
60%
전체기능 자동화율 자동화제외 Code Coverage
테스트 자동화 결과
자동화 제외) Flash, Windows popup 으로 구현된 부분
46
테스트 자동화 후 ,
어떤 점이 좋아졌나요?
47
블로그 전체 테스트 케이스를 수동 테스트 할 경우 10일 걸리는테스트 시간을 자동화 할 경우 6시간 이내로 단축할 수 있다.
업무시간 외 자동으로 테스트 수행시켜 출귺 후에 테스트 결과를얻을 수 있다.
수동 테스트의 한계(예 - 글쓰기 도배 방지, 최대값 체크 등)도극복 가능하다.
매번 동일한 기능을 반복 테스트 하지 않아도 된다.
수정한 기능으로 인한 Side effect 를 미리 발견 할 수 있다.
48
우리는 이런 것을 배웠어요!
49
웹 테스트 자동화 생홗화
김개발자, 뭐해?
땀 흘리며 웹 테스트 자동화 준비 중….
좀 귀찮아도 한번 만들면겨울 동안 자동으로테스트 할 수 있어!
그런 것이 있다고?나도 이제
해봐야겠어!!!
[출처] 웅진 극동건설, 기업문화 혁신 만화 – 개미와 배짱이 중
50
블로그서비스
품질향상
지속적인 유지보수
51
의지와 노력
52
웹 테스트 자동화
지금 바로 시작할 수 있습니다!
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/