NDC 2021에서 발표하였던 '게임 테스트 자동화 5년의 기록'이라는 주제로 NCSOFT에서 5년 동안 진행했던 게임 테스트 자동화에 대한 내용을 정리한 회고 내용입니다.
영상은 https://youtu.be/ckqUzRyIPoA 에 올라와 있습니다.
* 문서에 적용된 폰트나 아이콘 등의 문서 형식에 대한 권리는 Nexon에 있으니 배포 시 유의하시기 바랍니다
2. 2
Subtitles
자동테스트 개발팀(2015~2021)
리니지이터널 테크니컬 디렉터(2007~2013)
모바일 게임기 개발팀(2004~2006)
NCSOFT 엔씨소프트에서
게임의 자동테스트 기술을
연구하고 실무에 적용하는
업무를 하고 있습니다
임베디드 JVM, PDA,PalmOS 기반 스마트폰 개발
(2000~2004)
MOCOCO
윈도우용 아래아한글 3.0 시리즈 외(1994~1997)
한글과컴퓨터
마이크로소프트웨어, ZDNet 컬럼‘망치와모루’ (1994~2004)
컬럼
윈도우7프로그래밍, R로 마스터하는 머신러닝 등
번역서
발표자 경력
8. 8
Subtitles
01 게임 테스트 자동화의 인식
사람 대신
AI가 들어있는 로보트가
테스트를 대신?
그러면 한 번 상상해봅시다
잘 익은 딸기를 수확하는 것을
기계로 해볼까요?
9. 9
Subtitles
01 게임 테스트 자동화의 인식
http://youtube.com/watch?v=M3SGScaShhw
10. 10
Subtitles
01 게임 테스트 자동화의 인식
https://www.tennessean.com/story/news/2016/05/26/tennessee-strawberry-lovers-cheer-bumper-crop/84962848/
적정 기술(?)
11. 11
Subtitles
프로그래머나 하는 것이지
게임 QA가 어떻게 해
테스트는 사람이 해야지
자동테스트에 대한 부정적인 인식
01 게임 테스트 자동화의 인식
자동테스트가 되겠어?
큰 회사나 하는 것이지
자동테스트를 작은 회사가
테스트 자동화는 허상이야
12. 12
Subtitles
01 게임 테스트 자동화의 인식
자동테스트를 통해 얻고자 한 것은
QA 업무를 대신하는
테스트 로보트를
만드는 것이 아닙니다
최근 게임은 서비스
오픈 이후 빠른 업데이트와
실수 없는 서비스를
제공하는 것이 중요
빠르고 실수 없이
정확하게 테스트를 수행
게임 개발 이후의
테스트 작업에 대한
기술적인 개선을
이루고자 했습니다
13. 13
Subtitles
이야기 들어가기 전에
모바일 게임 테스트 자동화
NDC 16
모바일 게임 호환성 테스트
모바일 테스트 자동화 시스템
리니지M 사례로 배우는 효율적인 호환성 테스트 방법
기술적인 부분은
예전 강연을 보시면 좋습니다
기술적인 원리는
지금도 크게 다르지 않습니다
NDC 19
IGC 2016
IGC 2018
번역서
15. 15
Subtitles
02 게임 테스트 자동화의 여정
5년 간의 테스트 자동화 여정
B&S Mobile(Unity3D)
BAT 구현
안드로이드
테스트 자동화
프로토타입 개발
첫 번째
라이브게임 적용
테스트워크벤치
서비스 개발
언리얼엔진 사용
라이브게임 적용 iOS 플랫폼 확대
리니지M(Cocos2D)
라이브 서버 자동점검
24시간 상시테스트 진행
앱플레이어를 이용한 테스트환경
테스트워크벤치 프로토타입
호환성테스트 프로토타입
리니지M
호환성테스트 운용
재화테스트 시작
NC Cloud/Docker로 전환
예약/반복 테스트
리니지2M
라이브 서버 자동점검
BAT
리니지M
BAT, 영역별 기본 기능
일회성 자동테스트
배포 연동 자동 테스트 수행
테스트 작업 분배, iOS 플랫폼 지원
리니지M, 리니지2M
iOS 상에서 BAT,
영역별 기본 기능
리니지2M
일회성 자동테스트
테스트 동영상 녹화
윈도우 플랫폼
리니지2M 대만, 일본 런칭
BAT, 영역 별 자동테스트
윈도우 버전 자동테스트
리니지2M, B2
16 17 18 19 20 21
자동테스트
운용 시작
테스트 적용
영역 확대
자동테스트
일반화
플랫폼
확대
18. 18
Subtitles
02 게임 테스트 자동화의 여정
자동테스트 시스템 개발 방향
모바일 기기의 자동테스트 서비스를 구축하여
QA에게 일원화된 테스트 환경을 제공
프로젝트에서 자동테스트에 적합한 영역을 개발
테스트 커버리지 확장과 퀄리티 향상에 기여
19. 19
Subtitles
02 게임 테스트 자동화의 여정
자동테스트 서비스
예약 / 반복 / 빌드 배포 시 자동 실행
실행할 테스트 스크립트 및 데이터 관리/편집
테스트 기기 할당
순차적 / 분산 테스트 설정
체크 항목 스크린샷 / 테스트 과정 녹화 동영상
각종 테스트 로그(스크립트, 테스트시스템, 기기 로그 등)
20. 20
Subtitles
02 게임 테스트 자동화의 여정
하나의 테스트 환경
모든 테스트 스크립트를 한 곳에서 관리
각기 다른 플랫폼 / 통일된 테스트 환경
안드로이드 / iOS / 앱 플레이어 / 퍼플 플랫폼을 한 곳에서
하나의 테스트 스크립트로 모든 플랫폼에서
다른 목적의 테스트 / 같은 형식의 리포트
각기 다른 게임 엔진 / 하나의 개발 도구
21. 21
Subtitles
02 게임 테스트 자동화의 여정
게임 QA
시스템 개발자
스크립트 개발자
APP APP
APP APP APP
기기관리서버
안드로이드 플랫폼
앱 플레이어
윈도우 플랫폼
테스트워크벤치
테스트 기기
ios 플랫폼
22. 22
Subtitles
02 게임 테스트 자동화의 여정
테스트 커버리지의 확장
BAT, 영역별 기본 기능 자동 수행
매 빌드 배포마다 자동 검증
기존 매뉴얼 테스트에선 2개 서버 테스트 -> 30개 서버
정기점검 시, 테스트 서버 수 증가
기획 변경 시 총 321개 항목, 5개 기기에서 1시간 수행
재화 사용 영역 리그레션 테스트
BM 아이템 제작 / 모든 변신 카드 효과 확인 / 상자 확률, 몬스터 아이템 드롭 확률
단순 / 반복 테스트, 대량 설정 자동화
23. 23
Subtitles
02 게임 테스트 자동화의 여정
자동테스트 영역 확대
리그레션 테스트 자동화(automated regression testing)
국내 뿐만 아니라 해외(대만/일본) 자동테스트 확장
다른 테스트가 없는 주말에 집중적인 장시간 테스트
단순 / 반복 테스트 중 휴먼 에러 제거
앱 스토어 심사를 위한 심사 서버의 자동 점검
새벽 시간 예약 테스트로 기능 변경 여부를 확인
25. 25
Subtitles
02 게임 테스트 자동화의 여정
테스트 자동화를 적용하면서 생긴 어려움
게임의 UI의 지속적인 변경
여러 게임 엔진과 새로운 버전 업데이트 대응
테스트 스크립트 수가 늘 수록 수정해야 할 것도 증가 물리적 문제도 발생
자동테스트용 빌드를 직접 빌드
26. 26
Subtitles
02 게임 테스트 자동화의 여정
장애물을 하나 씩 넘어서
플러그인에 다양한 오브젝트 검색 방법을 추가하여 UI 변화에 대비
C++/STL 사용으로 엔진 독립적으로 구현하고 의존성 줄임
스크립트에서 게임 UI 의존적인 부분을 공통 라이브러리로 분리
물리적 문제들은 하나하나 틀어 막아야
개발팀에서 자동테스트 빌드를 제공 또는 사내 빌드에 디폴트로 포함
27. 27
Subtitles
02 게임 테스트 자동화의 여정
게임QA가 신뢰할 수 있는 자동테스트
QA가 자동테스트의 결과를 신뢰할 수 있느냐는 문제
자동테스트 시나리오를 이해 / 오류 재현 가능
자동테스트의 자체의 성공률이 높아야 함
자동테스트에서 사용하는 기술의 정확도가 99.9%는 되어야 함
28. 28
Subtitles
02 게임 테스트 자동화의 여정
현재 수행하고 있는 자동테스트의 종류
01
빌드 인수
테스트(BAT)
02
게임 영역 별
기본 기능 자동테스트
03
모바일 기기
호환성 테스트
04
라이브 서버
자동점검 /임시점검
05
반복 업무
자동테스트
06
재화 관련 테스트/변신
카드 공격 & 이동 속도
전수 테스트
29. 29
Subtitles
02 게임 테스트 자동화의 여정
자동테스트를 수행하는 빌드/플랫폼
Android / iOS /
Windows(적용 중)
플랫폼
QA 환경/ RC 환경 /
심사 서버 / 라이브 서버
테스트 환경
19세 / 12세
연령
한국 / 대만 / 일본
서비스 국가
33. 33
Subtitles
02 게임 테스트 자동화의 여정
게임 내의 UI를 컨트롤하는 스크립트를 작성하여 수행
Web 테스팅에서 사용하는 식별자 생성 방식인 xpath와 비슷하게
UI 오브젝트 식별자를 생성하는 플러그인을 클라이언트 삽입
모바일 자동테스트 시스템인 Appium을 확장하고
파이썬 스크립트로 테스트 시나리오에 맞춰 모바일 웹과 게임 UI를 식별 및 컨트롤
34. 34
Subtitles
02 게임 테스트 자동화의 여정
플러그인으로 게임 UI 오브젝트 식별자를 생성하여 테스트
Python으로 작성한
테스트 스크립트
+
Selenium
WebDriver API
라이브러리
확장
프로토콜 사용
1
Appium 서버 테스트 기기
Appium
확장
드라이버
안드로이드
드라이버
안드로이드
부트스트랩
게임 내
플러그인과 통신
게임
오브젝트
인스펙터
클라이언트
UI Automator
bootstrap.jar
게임 오브젝트
정보 요청
2
게임 오브젝트
속성 정보 전달
3
Native UI 나
WebView 처럼
터치, 키 입력 전달
4
터치
5
35. 35
Subtitles
02 게임 테스트 자동화의 여정
게임 UI 오브젝트 뷰어(리니지2M)
화면과UI구조를
캡쳐해서PC에저장
UE4의UI요소인
액터,슬레이트,UMG
계층구조를모두추출
37. 37
Subtitles
02 게임 테스트 자동화의 여정
게임 개발팀과 자동테스트를 위한 협업
자동테스트 환경을 게임 개발 과정에도 사용할 수 있습니다
같은 UI라도 기능이 다르면 UI에 다른 이름을 붙여주세요
대규모 UI 변경이든 작은 변경이든 미리 알려주세요
자동테스트를 위한 별도의 테스트 명령어를 제공하면 매우 좋습니다
테스트 명령어 결과를 로컬 파일로 남길 수 있으면 테스트가 빨라져요
40. 40
Subtitles
03 게임 테스트 자동화로 얻은 교훈과 비전
자동테스트를 통해 얻은 것
기능 업데이트는 사람이 하고, 반복/리그레션은 자동테스트로 하자
스크립트의 지속적 관리 필요, 테스트가 정확할 수록 작은 변화에도 취약
테스트 수행 시간 제약이 사라짐(새벽/주말)
간단한 검증도 수 백 가지 항목을 반복하면 중요한 검증이 된다(양질전환)
단순/반복적 테스트는 자동테스트로 전환하여 휴먼 에러를 없애기도 좋다
** 양질전환 법칙(Quantity becomes quality): 헤겔(1818~1883)의 변증법
일정 양의 것이 계속 누적이 되면 어느 순간 질적 변화가 급격히 일어난다는 것
41. 41
Subtitles
03 게임 테스트 자동화로 얻은 교훈과 비전
자동테스트를 위한 숨겨진 비용
스크립트 개발보다 자동테스트 시스템 개발에 더 많은 프로그래머가 필요
자동테스트 시스템을 안정적으로 운영하고 개선하는 것도 큰 개발 비용
한 가지 방법 만으로 모든 테스트 수행 불가. 요구 사항은 계속 나온다
새 게임 빌드가 나올 때마다 스크립트를 검증/유지 보수 발생
OS 업데이트나 새 모바일 기기가 나올 때도 검증/유지 보수 발생
자동테스트에 대한 개발/운영 비용이 전체 게임 개발 비용에 편성되어야 함
QA비용과 별도로
42. 42
Subtitles
03 게임 테스트 자동화로 얻은 교훈과 비전
자동테스트를 어렵게 하는 것
UI 변화에 취약
오브젝트만을 식별하기 때문에 시각적/청각적 문제를 식별할 수 없음
프로그래머가 아닌 게임QA가 스크립트를 쉽게 만들 수 있는 방법은?
사람이 하는 매뉴얼 테스트보다 테스트 커버리지가 더 좁다
테스트 실패 시 결과만으로는 원인 파악이 쉽지 않음
43. 43
Subtitles
03 게임 테스트 자동화로 얻은 교훈과 비전
게임 개발과 함께하는 자동테스트 첫걸음
자동테스트를 위한
플러그인이 포함된
클라이언트 빌드
서버 및
클라이언트 배포
월드 진입 테스트나
스모크 테스트 진행
BAT 및
영역별 기본
기능 테스트
코드 및
리소스 준비
서버 &
클라이언트 빌드
자동테스트
환경으로 배포
빌드 검증
(BVT) 개발팀
빌드 배포
QA 진행
44. 44
Subtitles
게임 QA도 자동테스트
스크립트를 만들어야 하는데
매뉴얼만 아니라 자동테스트도 해야지
자동테스트에 대한 인식 변화
자동테스트도 필요해 !!
작은 회사에 자동테스트가 더 필요하지
테스트 자동화로 해결할 수 있는
영역이 있어
03 게임 테스트 자동화로 얻은 교훈과 비전
45. 45
Subtitles
단계 LEVEL 1 LEVEL 2 LEVEL 3 LEVEL 4 LEVEL 5
테스트 보조 부분 자동테스트 조건부 자동테스트 고도 자동테스트 완전 자동테스트
테스트 주체 사람 + 시스템 사람 + 시스템 시스템 시스템 시스템
테스트 책임 사람 사람 사람 * 사람 * 시스템
자동테스트 시스템이
사람의 테스트를 보조
테스트 시나리오를
사람이 작성하고
시스템이
테스트를 수행
테스트 시나리오는
시스템이 작성
일부 사람이 개입
시스템이
테스트를 수행
시스템이
테스트 시나리오
작성 및 수행
사람은 테스트
결과 확인
테스트 전과정에서
사람의
개입 필요 없음
03 게임 테스트 자동화로 얻은 교훈과 비전
자동테스트 5단계