▲ 엔씨소프트 이호승 개발자

[인벤게임컨퍼런스(IGC) 발표자 소개] 이호승 개발자는 게임잡지 필자부터 보드게임 카페 CEO까지 게임과 관련된 다양한 직무에 종사한 후, 2004년부터 지금까지 엔씨소프트 QA센터에서 근무 중이다. 현재는 엔씨소프트 모바일 게임의 비기능 테스트 업무를 수행하고 있다.

얼마 전 모바일 앱 인텔리전스 플랫폼 앱애니가 안드로이드 출시 10주년을 기념해 2018년 8월까지 전 세계 앱 시장을 분석한 보고서를 발표했다. 여기에서는 지금까지 가장 많은 누적 다운로드를 기록한 게임은 물론 전세계 누적 소비자 지출 상위 게임 앱 목록도 살펴볼 수 있었는데, 10위 권 내에서는 2개의 한국 게임도 포함됐다. 엔씨소프트의 '리니지M'도 그중 하나다.

IGC 둘째 날, 엔씨소프트 이호승 개발자는 '리니지M'의 개발과 라이브 서비스에서 어떻게 호환성 테스트가 진행됐는지 소개하는 강연을 준비했다. 국내 모바일 게임 역사상 전무후무한 기록을 세웠다고 말해도 전혀 과언이 아닌 '리니지M'인 만큼, 모바일 게임의 호환성 테스트 업무 경험과 자동화 적용 사례를 소개하는 그의 강연에는 현직 개발자부터 학생까지 다양한 참관객들의 관심이 모였다.



■ '모바일 게임 호환성 테스트'에 대해 알아보자!

◎ 모바일 게임 호환성 테스트, 왜 필요할까?

많은 유저들이 게임을 즐기기를 원하고, 개발자들은 그러한 게임을 만드는 것을 목표로 노력한다. 하지만 이러한 모든 일은 게임이 우선 제대로 설치되어야 시작될 수 있다. 사용자와의 첫 만남을 부드럽게 만드는 것, 이것이 모바일 게임 호환성 테스트를 해야 하는 가장 중요한 이유다.

모바일 디바이스, 그러니까 핸드폰은 그 기종도 다양하고 설치된 OS도 가지각색이다. 호환성 테스트가 필요한 이유는 크게 이 두 카테고리가 있기 때문이라고 구분할 수 있다.

비교적 그 수가 제한된 iOS와는 달리 안드로이드 기기는 디바이스의 종류가 천차만별이다. 약 4천 여종의 서로 다른 기기가 접속 중인데, 점유율과 접속 횟수를 기준으로 트리맵으로 표현한 그림을 보면 정말 다양한 안드로이드 기기가 동시에 활용되고 있음을 확인할 수 있다. 안드로이드의 호환성 테스트에 더 집중하는 이유는 여기에 있다.



◎ 호환성 테스트를 위해 '모바일 기기'에서 고려해야하는 부분

▲ 실제 호환성 테스트에 사용되고 있는 모바일 기기의 모습

디자인부터 가격까지 천차만별인 모바일 기기들은 모두 각기 다른 특성을 가지고 있다. 그중에서도 모바일 게임 호환성 테스트를 위해 꼭 고려해야 하는 특징은 '화면 크기', 'OpenGL ES', 'AP', '램'의 네 가지다. 가장 단순하지만, 가장 먼저 봐야 하는 것은 모바일 기기 화면의 크기다. 화면 크기에 따라 게임이 다르게 보이기 때문에 호환성 테스트에서는 굉장히 중요한 역할을 한다. 물론 테스트에는 다양한 크기의 화면을 가진 모바일 기기를 준비하고 동시에 테스트할 필요가 있다.

물론, OpenGL ES 버전과 내수용과 수출용에 따라서도 달라지는 AP, 메모리도 호환성 테스트에서 항시 함께 측정되고 관리되어야하는 부분이라는 것을 잊어서는 안된다.



◎ 호환성 테스트를 위해 '운영체제(OS)'에서 고려해야하는 부분

구글 개발자 사이트를 통해 공개된 안드로이드 사용자들의 OS 사용 분포도를 보면, 작년에 출시된 8.0 오레오 OS 점유율이 아직 12%에 그치는 것을 확인할 수 있다. 신형 안드로이드 OS가 사용자에게 전달되는 과정을 통해 발생한 '파편화'가 그 원인이다.

구글이 레퍼런스 OS를 만들면 제조사가 AP를 개발하고, 이렇게 만들어진 칩을 포함해서 기기 제조사들이 저마다 기기를 만든다. 국내의 경우 여기서 통신사들이 한 번 더 개입한다. 이후 사용자에게 전달되는 것이다. 구글이 새로운 OS 업데이트를 진행하면 이 모든 과정이 전부 다시 진행되므로, 사용자는 처음 구매했을 당시의 OS를 쭉 유지하거나, 한두 번 업데이트하는 것에 그치는 경우가 많다.

애플은 안드로이드에 비해 굉장히 단순한 형태로 진행된다. 애플이 앞으로 아이폰에 포함되는 GPU를 독자적으로 개발하게 되면 안드로이드와의 경계는 더 극명하게 나뉠 것으로 보인다.

▲ 안드로이드에 호환성 이슈가 자주 발생하는 이유는 심한 OS 파편화 때문이다



■ '리니지M'의 호환성 테스트는 어떻게?


이호승 개발자가 말하는 '리니지M'의 성능 측정에서 가장 중요한 포인트는 'FPS' 체크다. 메모리 사용량과 발열 체크가 그 뒤를 잇고, 이외에도 네트워크 사용량 측정이 필요하다.

프레임 체크는 보통 30분가량의 테스트 이후에도 일정한 FPS가 유지될 수 있도록 확인하는 방식으로 진행된다. 테스트 과정을 통해 산출된 결과는 프레임 상향을 위해 최적화 담당자에게 전달되고, 이들과 협업하는 작업이 이어진다. 이외에도 콘텐츠 업데이트에 따라 메모리에 어떤 변화가 발생하는지 파악하고, 실측 데이터를 기반으로 기기의 발열 수치를 낮추는 작업도 반복됐다.

게임 출시 전에는 빌드가 나오면 2주가량 호환성 테스트를 진행하는 방식으로 일정 기간의 텀을 활용할 수 있으나, 곧 그렇게 할 수 없는 상황이 닥쳐온다. 라이브 서비스 이후에는 빠른 주기로 업데이트가 계속 추가되기 때문이다.

여기에 격주로 클라이언트 업데이트까지 함께 진행되면 테스트가 업데이트 속도를 도저히 따라잡을 수 없는 상황이 발생하는데, 이때를 위해 새롭게 적용하게 된 것이 바로 호환성 테스트의 '자동화'다.


엔씨소프트에서는 모바일 랩실에 보유한 기기를 활용해 자동화 서버를 마련하고, 게임의 권장사양과 최저사양, 그리고 최소 지원 OS가 설치된 기기로 호환성 테스트를 진행 중이다. 게임 테스트에서는 로그인과 캐릭터 생성은 물론 상점 구매 튜토리얼, 아이템 장착, 변신 튜토리얼, 자동 전투 사냥, 기타 다양한 것들이 모두 자동으로 진행된다. 여기에 활용된 기술은 모두 애피움 프레임워크가 적용되어 있는데, 일반적인 애피움으로는 게임에 나오는 오브젝트를 딸 수 없기 때문에 추가적인 개발 과정이 필요하다.

테스트 이후 결과 화면에서는 기기별로 나뉘어진 스크린샷을 볼 수 있기 때문에 특별한 모니터링 없이도 테스트 결과를 모두 체크할 수 있고, 체크 리스트도 자동으로 작성된다. '리니지M'의 호환성 테스트 자동화에 사용된 스크립트는 이호승 개발자가 직접 오브젝트 방식으로 짜서 마련한 것인데, 이와 관련하여 기술적으로 더 자세한 내용은 지난 IGC 2016에서 진행된 엔씨소프트 김종원 팀장의 강연을 통해 먼저 소개된 바 있다.

관련기사 : [IGC2016] "아직 먼 자동화 테스트, 그러나 진보 중입니다", NC 김종원 팀장

▲ 테스트 자동화를 위해 이호승 개발자는 직접 코드를 짜서 사용했다

'리니지M'의 테스트 자동화 과정에서는 하드웨어 버튼에 대한 테스트도 함께 진행되고 있다. 게임이 기동되고 있는 상황에서 모바일 기기의 뒤로가기, 홈버튼, 메뉴버튼, 소리조절 버튼이 눌렸을 때 크래시가 발생하지는 않는지 확인하는 절차다. 엔씨소프트는 이러한 절차를 모두 거친 후에 '리니지M'의 라이브 서비스를 시작했다.



■ 테스트 자동화를 통해 얻은것은? '미션 원 아워'


이호승 개발자는 테스트 자동화를 통해 단 한 시간 만에 빌드 테스트를 마치는 것이 가능해졌다고 설명했다. 현재 라이브되고 있는 '리니지M'의 테스트를 위해서 총 12대의 기기가 마련되어 있는데, 사람은 단 한 명만 있어도 테스트가 가능하다. 12대의 모바일 기기와 자동화 프레임이 있고, 테스트를 시작을 알리고 한 시간이면 모든 테스트가 완료되는 식이다.

수치상으로 테스트 시간이 크게 줄었다고 할 수는 없지만, 사람이 직접 테스트하는 것보다는 훨씬 더 많은 시간이 절약된다. 한 사람이 하나의 기기로 한 시간 동안 테스트를 한다고 하면 12대의 기기를 테스트하기 위해서는 총 12시간이 필요한데, 자동화 프레임을 활용하면 단 한 시간이면 충분하다. 단순 계산으로 1년을 테스트한다고 했을 때, 약 700시간 이상이 절약되는 셈이다.

그는 현재 단 12대의 모바일 기기만 테스트에 활용하고 있지만, 조만간 30대로 규모를 키우고, 리니지M 이외에도 엔씨소프트가 준비하고 있는 '리니지2M', '블레이드앤소울2' 등 다양한 신작 게임에 테스트 자동화를 도입해나갈 계획이라고 밝혔다.

▲ 호환성 이슈를 해결할 수 있는 더 촘촘한 그물이 마련된 상태

끝으로 그는 소규모 개발사와 작은 개발 그룹에서 호환성 테스트를 진행할 때 활용할 수 있는 다섯 가지 팁을 소개했다. 각각 '권장사양, 최소사양 기기에서 테스트하기', 'OS별 테스트하기', 'API 레벨별 테스트하기', 'AP별 테스트하기', 그리고 '테스트 자동화 적용하기'다.

작은 개발사일수록 테스트 자동화를 활용하면 대형 회사만큼 테스트 영역을 넓힐 수 있을 것이라며, 테스트 자동화를 적용하는 것이 가장 좋은 선택이 될 것이라고 조언했다.