로그인

회원가입 | ID/PW 찾기

취재

[NDC 16] 모바일게임 테스트 자동화? 김종원 팀장 “엔씨는 가능합니다”

송예원(꼼신) 2016-04-26 21:22:38

7년 간 온라인게임을 개발해온 엔씨소프트 김종원 팀장은 최근 모바일게임을 테스트를 맡으며 경악했다. 일정수준 자동화가 갖춰진 온라인게임과 달리 모바일게임의 QA는 대부분 인력이 투입돼 수동으로 진행되고 있었기 때문이다. 이는 엔씨소프트뿐만 아니라 대다수의 모바일게임사가 같은 실정이다. 

 

기술이 고도화됐음에도 불구하고 왜 모바일게임 테스트는 자동화가 되지 못했을까? 또 해결법은 없는 걸까? 김 팀장은 "가능하지만 여전히 과제는 남았다"고 말한다. 엔씨소프트 QA Camp 직속 SET팀 김종원 팀장이 말하는 모바일게임 테스트 자동화 시스템을 살펴보자. /디스이즈게임 송예원 기자

 

엔씨소프트 QA Camp 직속 SET팀​ 김종원 팀장
 

■ 모바일게임 테스트 왜 자동화가 안됐을까?  

 

"거짓말 조금 보태서 100배는 어려워요"

 

김 팀장은 모바일게임이 처한 환경이 온라인게임과 비교해 100배는 열악하다고 말했다. 크게 유저, 기기, 네트워크 그리고 개발사의 프로젝트 관리 측면에서 테스트에 어려움이 발생한다.

 

모바일게임 유저는 온라인게임 유저와 비교해 작은 이슈에 민감하다는 게 김 팀장의 주장이다. 이들은 게임을 설치하다 에러가 발생하면 바로 삭제해 버린다. 이는 큰 개발사의 게임도 예외는 아니다. 언제든 다른 게임으로 넘어갈 수 있기 때문이다. 오히려 이러한 문제가 발생하면 개발사와 게임에 대한 브랜드 인식이 나빠진다. 

 

더욱 큰 문제는 기기의 파편화다. 모든 유저들이 최신 휴대폰을 사용하는 것이 아닐뿐더러 같은 기기 모델이라고 해도 여러 버전의 OS가 존재한다. PC만큼 업데이트를 자주 하지 않기 때문이다. 중국, 북미 등 해외 진출을 염두에 둔다면 더 많은 종류의 기기와 OS 대응이 필요해진다. 네트워크 문제도 무시할 수 없다. 각 유저가 처한 네트워크 환경은 모두 다르지만 이를 고려한 테스트는 사실 상 불가능하다. 

 

엔씨소프트나 넥슨, 넷마블과 같은 대형 개발사일 경우 다수 게임이 동시에 개발되고 있다. 개발에 투입될 인력들이 테스트 자동화 같은 곳에 투입될 리 만무하다. 출시 후 라이브 단계에서는 최소 인력으로 동일한 QA 품질을 확보해야만 하는 어려움도 있다. 

 

모바일 기기 화면 비율의 파편화
 

2014년 공개된 안드로이드 OS 기반의 기기 종류

 

 

■ N사도 실패한 모바일게임 테스트 자동화

 

물론 국내 개발사에서 테스트 자동화를 시도하지 않았던 것은 아니다. 이른바 '잘나간다는' N사에서는 매크로 프로그램 '몽키러너'를 활용해 UI 기반 테스트를 시도했다. 그러나 개발 과정에서 UI를 자주 변경하다 보니 점차 의미가 없어졌다. 결국 QA는 제품 출시 직전 막대한 인력을 투입해 기기 호환성 집중 테스트로 진행됐다. 

 

김 팀장은 이러한 악순환 속에서 테스트 자동화 개발 자체에 대한 부정적인 인식이 깔려있는 듯 하다고 말했다. 개발 중 잦은 UI 변경으로 좌표기반 스크립트가 무용지물이 되고, OS와 플랫폼에 맞춰 각기 다른 테스트 스크립트를 작성하며 비용이 늘어나자 오히려 게임 테스트는 사람이 직접 하는 것이 저렴하고 효율적이라고 생각할 수 밖에 없다는 것이다. 

 

따라서 대다수 개발사들은 대행사를 사용하고 있다. 특히 해외 진출 시 중국은 300개 이상, 북미나 유럽은 150개 국가에서 이상의 기기 호환성 테스트를 진행할 수 있다. 물론 비용은 만만치 않다. 

 


 

 

■ 엔씨소프트가 개발한 모바일게임 테스트 자동화란?

 

김 팀장은 대안으로 클라우드 서비스를 활용한 테스트 장비 대여를 내놨다. 특히 스크립트 기반의 일괄테스트는 리모트 터미널을 이용한 개별테스트보다 더욱 유용하다는 것이 김 팀장의 설명이다. 

 

다만 사람 대신 일을 시킬 테스트 환경 구축은 필요하다. 온라인게임의 PC환경에서는 오랫동안 여러 툴이 사용돼 왔지만 모바일 환경은 이에 대한 연구가 없었기 때문이다. 무엇보다 안드로이드, iOS 등 플랫폼도 여러 개로 나뉘어 존재해 통합된 테스트 환경이 필수적이다.

 

엔씨소프트는 다양한 모바일 테스트 자동화 프레임 워크를 비교했다. 여러 가지 기준을 두고 선택한 것이 바로 앱피움(Appium)이다. 앱피움은 테스트 하려는 앱에 특정 코드나 모듈을 삽입해 컴파일하지 않고도 테스트 할 수 있는 것을 목표로 개발됐다. 

 

자바, 자바스크립트, 파이썬 등 Selenium WebDriver API를 제공하는 언어는 무엇이든 스크립트로 쓸 수 있으며, 네이티브, 하이브리드, 웹 앱 방식의 모바일 앱 테스트가 가능하다. 무엇보다 안드로이드, iOS, PC 플랫폼을 모두 지원한다. 기본인 앱피움의 안드로이드 앱 테스트 방식은 아래와 같다. 

 





그렇다면 일반 앱 테스트를 위해 개발된 앱피움을 어떻게 모바일게임 테스트에 적용했을까? 

 

엔씨소프트는 화면상의 좌표로만 테스트해야 했던 기존의 방식을 개선하기 위해 별도의 플러그인 모듈을 개발했다. 유니티로 개발된 이 모듈은 게임 내 UI 오브젝트의 위치를 찾을 수 있다. 다시 말해 좌표 기반이 아닌 오브젝트 네임이나 태그를 이용해 조합한 오브젝트 기반의 스크립트를 만든 것이다. 

 

자체 개발한 유니티3D 인스펙터 툴을 이용해 특정 오브젝트나 아이콘 등 이용 타깃 UI를 문자열로 추출한다. 좌표가 아닌 이 문자열로 원하는 것을 언제든 찾아낼 수 있다. 문자열 ID 기반의 스크립트가 한 번 작성되면 화면 배치가 바뀌어도 동작되는 것은 물론, 화면 비율이나 해상도가 바뀐 기기에서도 재사용이 가능하다.

 

특정 오브젝트가 나올 때까지 기다렸다가 해당 오브젝트를 터치할 수 있어 테스트 시간을 절약하고 정확도를 높인다는 장점도 있다는 게 김 팀장의 설명이다. 

 


 

 

■ 개발 엔진 대응부터 동작인식까지 "과제는 남았다"

 

다만 완성을 위한 과제는 남아있다. 현재 해당 버전은 클릭이나 스와이프 수준의 동작에서만 테스트가 가능하다. 다양한 UI 동작을 제어할 수 있는 API 개발이 필요하다. 

 

또한 게임 테스트를 위해 확장한 코드를 앱피움 프로젝트에 병합할 수 있도록 대응해야 한다. 무엇보다 유니티엔진 외에 언리얼이나 코코스2D와 같은 다양한 게임 엔진을 지원하지 못하는 것도 남겨진 숙제다. 

 

김 팀장은 "효과적인 테스트 자동화는 개발 파이프 중간부터 시작해야 한다고 생각합니다. 모든 개발자들이 데일리 빌드를 테스트하고 결과를 받아 볼 수 있는 방식의 QA를 매일 진행하게 만드는 것이 목표입니다"고 말했다.