[Team H 양승원] QC자동화 : 개발 결과 및 가이드

QC 자동화란?


빌드된 게임은 출시 전 QC Test 라는 단계를 거쳐 모든 UI 와 콘텐츠가 정상 동작하는지를 확인한 후 플랫폼의 각 스토어에 배포하게 됩니다. 지금까지는 빌드의 정상 다운로드 여부부터 앱의 종료까지 일련의 전과정을 테스터가 확인해 왔으며, 게임의 스케일에 따라 지원하는 플랫폼과 기기 종류에 따라 수 십 분에서 시간 단위의 테스트 공수를 소비했습니다.


QC 자동화는 통상적인 메뉴 버튼의 동작 여부를 테스터가 판단 할 수 있는 근거를 제공하여, 빌드 마다 실행했던 반복적인 테스트 항목을 단시간에 처리, 테스터는 Major Issue 에 집중할 수 있는 환경을 제공하기 위해 스크립트 형태로 개발되었습니다.


 

QC 자동화의 영역


모든 테스트 항목을 자동화 QC에 의존 할 수는 없습니다. 게임의 통상적인 테스트 항목들로 예를 들어 수동과 자동의 영역을 다음과 같이 구분할 수 있습니다.


 

자동화 QC는 사용자의 Play Flow, 혹은 UI Flow 에 맞춰 메뉴의 순차적인 input 과 다음 Step 이 정상적으로 출력 되는가를 테스트 하게되며, 수동 QC 는 이미지, 연출 혹은 사운드 등의 시청각적인 리소스의 판독, 결제 및 리워드 재화가 정확하게 지급되는지 여부, 밸런싱 판단, 버그와 같은 Major Issue를 집중적으로 테스트 할 수 있습니다.

 

QC 자동화 제작 과정


QC 를 자동화 하는 과정은 크게 4 단계로 구분할 수 있습니다. 아래 참조 그림과 같이 먼저 Input 이 필요한 모든 과정을 Step 으로 정의한 <UI Flow> 를 문서로 작성합니다. 2단계 <Resource 확보> 과정은 각 Step의 Input 을 하게 될 원본 크기 버튼 이미지를 잘라내어 단계별로 저장합니다. 다음으로 3단계 <Script> 에 순서대로 Resource 를 등록합니다. 마지막으로 Script 를 <실행>하면, App 의 다운로드부터 설치 > 실행 > Input > • • • > 종료 > 결과 리포트까지 자동화 QC Test를 진행하게 됩니다.

 

 

스크립트 실행 구조


테스트는 다음과 같은 구조로 진행됩니다.


 

모바일 디바이스가 연결된 장치(PC)에서 Appium 서버를 열고 그 서버의 포트를 통해 기기와 상호작용 하게 됩니다. PC에서는 python 스크립트가 실행되며 QC를 진행할 프로젝트의 QC체크리스트 json 파일을 바탕으로 버튼을 누르는 등의 상호작용이 시작되는 방식입니다.그 과정에서 누르는 UI마다 로그를 남겨주며 그 스텝별로 스크린샷이 자동으로 촬영되어 따로 저장됩니다.


화면 전체를 스크린샷 하고 opencv를 통해 원하는 UI를 찾아 web driver로 터치 입력을 수행하는데 만약 opencv를 통해 찾은 결과의 정확도(유사성)가 0.5 미만일 땐 찾고자 하는 이미지가 아님으로 판단, 에러 로그와 함께 현재 스텝을 찍은 스크린샷의 위치를 로그로 남겨줍니다. 물론, 에러 로그를 띄우지 않고 못 찾아도 그냥 넘어갈 수 있는 옵션도 존재합니다.

 

QC 자동화 준비를 위한 Tip!


– UI Flow Step 간 Interval : 테스트 환경, 기기 마다 UI 의 로딩 속도 차이를 고려하여 시간이 필요한 Step 경우 0.x ~ 수 초(sec) 정도의 time을 정의하고, 이 요소를 Script 에 적용합니다.


– Unique Resource : 게임의 화면 내에서 저장 • 등록된 버튼 이미지 리소스와 일치하는 영역을 매칭하여 해당 영역의 센터를 터치 input 하는 방식의 자동화 스크립트이며, 때문에 <Resouce 확보> 과정에서 결코 변화가 없는 부분만을 잘라내어 저장해야 합니다.


– BrowserStack과 같이 원격으로 진행되는 QC가 아니라 실제 모바일 디바이스를 연결할 경우 해당 디바이스의 UDID를 미리 알아두는 것이 편합니다. 그래야 여러 디바이스를 연결하였을 때 어느 디바이스로 명령을 보낼 지 선택할 수 있습니다.

 

자동화 QC 의 과제


자동화 QC는 Flow에 따라 일방향 테스트를 진행하여 분기 메뉴의 테스트가 어렵다는 점, 스와이프 • 드레그 형태의 입력이 어려워 피킹 입력 방식의 play 외에는 in game 테스트가 불가합니다. 하지만 먼저 언급한 분기 메뉴 테스트 경우 1기의 테스트 machine 에서 여러개의 모바일 기기와 플랫폼을 테스트 가능하므로, 분기에 따라 Flow 를 추가하는 방식으로 그 문제를 해결할 수 있으나, 근본적으로 연구가 필요한 부분입니다. 다음의 in game 의 테스트는 자동 플레이 가 지원 되거나 기타 자동 테스트 기능을 UI Flow 에 삽입하여 해결할 수 있으리라 예상합니다.