[NDC2019] 리니지M, 호환성 테스트 자동화로 얻은 놀라운 결과

게임뉴스 | 양영석 기자 | 댓글: 21개 |


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

  • 주제: 리니지M 모바일게임의 호환성 테스트와 자동화 적용
  • 강연자 : 이호승, 홍상영 - 엔씨소프트 / NCSOFT
  • 발표분야 : 프로덕션&운영, 프로그래밍
  • 권장 대상 : QA, 프로그래머
  • 난이도 : 사전지식 불필요 : 튜토리얼이나 개요 수준에서의 설명


  • [강연 주제] 다양한 모바일기기에서 게임이 원활하게 실행되는 것은 모바일게임 개발자 모두의 바람입니다.어떤 기기에서 어떻게 테스트를 해야할 까요?호환성 테스트에서 어떤 것들을 챙겨야하는지에 대한 이야기를 하고 싶습니다.

    많은 기기에서 호환성 테스트를 진행하기 위해 테스트 자동화를 선택이 아닌 필수 사항였습니다. 테스트 자동화를 도입해서 진행하고 있는 호환성 테스트의 모습과 적용 효과에 대해서 경험을 공유하고자 합니다. 아울러 테스트 자동화를 위해 적용된 기반 기술들에 대해 소개할 예정입니다.

    세션을 통해 모바일게임의 호환성 테스트에 대한 이해를 높일 수 있을 것입니다. 또한, 모바일게임 테스트 자동화의 실무 활용 기술에 대한 정보도 얻을 수 있을 것입니다.


    모바일 게임을 개발하면서, 호환성 테스트는 매우 중요하다. 이미 거대한 규모로 형성된 스마트폰 시장에서는 수많은 기종이 존재하고, 이들에 대한 테스트가 필수다. 비록 전부 다 테스트를 하지 못하더라도, 권장사양과 최소 사양은 확인을 하고 구동 테스트를 해봐야 한다. 과거에는 이런 '호환성 테스트'에 많은 기종을 사용한 게 아니었지만, 지금은 수많은 기기들이 존재하기에 일일이 하기에는 한계가 있다.

    그렇기 때문에 이런 호환성 테스트에서도 자동화가 필요하다. 엔씨소프트의 이호승, 홍상영 개발자는 '리니지M'의 사례를 들어서 현재 엔씨소프트가 진행 중인 모바일 호환성 테스트의 자동화 현황과 중요성, 그리고 실무 활용 기술 정보를 공유했다.


    ■ 모바일게임의 호환성 테스트의 필요성과 체크 요소

    그렇다면 모바일 게임 호환성 테스트, 왜 필요할까? 이호승 개발자는 호환성 테스트를 '고객과의 첫 만남'이라고 평가했다. 디바이스와 사용자, 그리고 게임이 만나는 첫 출발이라는 의미다. 게임이 우전 제대로 설치되고 동작해야 유저들과 만날 수 있다. 그런 의미에서 호환성 테스트는 '첫 만남'이기에 소중하고 중요하다고 강조했다.

    현재 엔씨소프트는 과거보다 향상된 호환성 테스트의 자동화 과정을 거쳐 다양한 테스트를 진행하고 있다. 게임의 설치와 삭제, 동작, 게임 플레이 등등 다방면에서 테스트가 이뤄지고 있다. 물론 테스트를 검증하는 기기 역시 최소 사양부터 권장 사양, 최고 사양까지 모두를 포함해 테스트를 진행 중이다.



    엔씨소프트가 구축한 테스트 시스템

    지난해에는 항상 스마트폰을 켜 둔 상태에서 테스트를 진행했지만, 지금은 한차례 개선을 이뤄 대기 상태에서 앱을 실행하고 테스트를 마친 후 다시 대기 상태로 진행 방식을 개선했다. 현재 엔씨소프트는 약 500여 종의 모바일 디바이스를 확보하고 선택적으로 테스트를 할 수 있도록 시스템을 마련해놓았다.

    호환성 테스트를 위해서는 체크해야 할 부분이 많다. 우선 디바이스 측면에서는 디스플레이와 CPU/GPU 사용량, RAM 등을 체크해야 하고 각 OS 별로 동작 과정도 확인해야 한다. 게임적인 측면에서는 각 엔진(언리얼, 유니티, Cocos2D-X 등)에 맞춰 구동과 기능을 확인해야 하며 추가적으로 네트워크 사용량 체크도 잊으면 안 된다.


    현재 리니지M은 약 6천 종의 모델이 접속하고 있다. iOS는 상태적으로 파편화가 덜 되어 있어서 대부분의 기기로 호환성 테스트를 할 수 있는 게 특징이다. 반면에 안드로이드는 각기 다른 사양을 지닌 수많은 기종이 접속한다. 안드로이드의 호환성 테스트에 집중하는 이유다. 모바일 게임은 램이나 AP, 디스플레이, 각각의 화면크기도 다르기 때문에 실제로는 콘솔 하나와 비슷한 테스트 사양이 필요하다.

    실제 리니지M은 2017년 6월 오픈 당시에 iOS는 약 99% 전수로 호환성 테스트를 진행했다. 안드로이드 기기의 소화율은 약 86%로, 50여 개 이상의 기기를 테스트하며 진행했다. 호환성 테스트에서 체크하는 부분은 아래와 같다.

  • FPS
  • MEMORY(램 사용량에 대한 확인)
  • CPU, GPU 사용량에 대한 확인과 발열
  • 네트워크 사용량
  • 디스플레이, 기기의 특정 화면이나 특성



    프레임 체크 테스트 모습

    프레임 체크는 가장 중요하면서 기본적인 부분이다. 각 기기별로 동일한 프로세스로 테스트했을 때 기기마다 어떤 결과의 프레임이 나오는지 체크한다. 게임에서 목표하고 있는 프레임이 어떻게 나오는지 여러 가지 방식을 도입해서 최적의 세팅을 찾아내는 과정이다. 메모리의 경우는 업데이트마다 사용량이 변화할 수 있기에 꾸준히 진행해줘야 하는 부분이다.

    CPU와 GPU의 사용량은 기기의 발열량과 매우 밀접한 연관이 있다. 이 과정에서 약 50~70%는 스로틀링 현상(발열을 줄이기 위해 강제적으로 클럭, 전압을 낮추는 기능)이 발생해 FPS가 떨어지는 경우가 있다. 네트워크 사용량은 대규모 전투가 발생했을 때 얼마나 데이터 사용량이 달라지는가를 체크하는 부분이다. 혹은 실제 스킬을 사용했을 때 어느 정도로 데이터 사용량이 증감하는지 체크를 해야 한다. 디스플레이는 '엣지'모델의 화면이나, iOS의 노치 디자인 등 이런 디스플레이적 특성이 게임의 중요 정보를 가리거나 흐리지 않도록 점검하는 과정이다.



    현재 테스트하고 있는 여러 기능들

    엔씨소프트는 현재 이런 호환성 테스트에 자동화를 적용해 게임뿐 아니라 실제 모바일 기기의 기능도 함께 확인한다. 게임 도중 모바일 기기의 메뉴를 호출하거나 사운드 조절, 메뉴 버튼과 홈버튼 등의 작동 기능이다. 그리고 이렇게 실제로 이뤄진 테스트 결과는 원하는 지점의 스크린샷으로 제공된다. 체크리스트를 통해 테스트 결과를 제공함으로써 실패한 부분과 테스트를 통과한 부분을 확인할 수 있다. 스크린샷도 제공되는데, 이경우 현재는 수동으로 체크하고 있지만 추후 AI를 통해 스스로 확인할 수 있는 솔루션을 적용할 계획이다.


    ■ 테스트 자동화 프레임워크



    [▲ 엔씨소프트 홍상영 개발자 ]

    엔씨소프트는 오픈소스인 'APPIUM'을 이용해서 자동화 시스템을 구축했다. 오픈소스라 비용이 저렴하고 다양한 언어도 지원되고, http 방식으로 스크립트 서버 연결도 가능했고, iOS와 안드로이드 모두 사용이 가능했기 때문이다.

    스크립트를 실행하면 안드로이드 드라이버를 통해서 실제 테스트 기기에 '부트스트랩'이라는 앱을 설치하고, 실제 기계 안에 있는 정보를 가져오고 반환하는 방식으로 터치 동작까지도 제어할 수 있었다. 그렇게 엔씨소프트는 스크립트를 통해서 테스트 기기를 조작하는 자동화 시스템을 구축하기 시작했다.




    물론 기기에 대한 정보는 APPIUM이 가지고 있다. 캡처한 화면에서 화면에 담긴 구조가 나오고, 이 정보를 사용자에게 보여준다. 이를 통해서 UI에 대한 세부 정보나 텍스트, 좌표 등 속성값이 송출된다. 그러나 게임 UI는 이와 동떨어져있다. 이 경우는 게임을 제작한 엔진에서 정보를 가져와야 한다. 그렇기 때문에 엔씨소프트는 테스트용 앱에 게임의 정보를 전달해줄 수 있는 '게임 오브젝트 인스펙터'를 일종의 모듈을 포함시켰다.

    이 게임 오브젝트 인스펙터는 엔진에서 가지고 있는 구조를 전달하는 역할을 한다. 바깥으로는 정보를 받아서 직접적으로 통신하기 위한 게임 드로이드 드라이버를 구축했다. 이는 인스펙터와 연결 목적으로 기존 서버를 확장하고 개발한 부분이다. 이렇게 게임의 UI에 대한 세부 정보, 텍스트 등 값과 속성을 가져올 수 있었다.




    게임 오브젝트 인스펙터는 엔진에서 정보를 가져오는 모듈이다. 그렇기 때문에 엔진별로 다르게 개발하는 게 필수였다. 현재 유니티와 Cocos2D-X까지는 개발이 완료되었고, 언리얼 엔진은 거의 완료된 상태다. 게임 드로이드 드라이버로 게임의 정보를 받아오고, UI를 기반으로 동작하는 스크립트 방식으로 '테스트 자동화'를 시도하고 있다.

    여기에 워크벤치 서버를 마련하고, 각각의 테스트 서버와 테스트 기기를 연결해 워크벤치 사용자들이 테스트를 진행할 수 있도록 시스템을 구축했다. 디바이스 팜은 약 AOS 40대가 연결되어 있고, 사용자는 설치 파일과 스크립트 업로드 후 테스트 기기를 선택하면 된다. 그리고 테스트가 종료된 후 결과를 취합하여 리포트를 제공한다. 리포트는 QA에서 많이 확인하는 체크리스트 형식으로 제공된다. 물론 실제 연결된 기기들의 스펙과 사용 여부도 확인이 가능하고, 스크린샷도 확인할 수 있다.









    ■ 테스트 자동화로 얻게 된 것 - 생산성의 놀라운 증대...협업이 중요하다



    혼자서도 다양한 테스트를 빠르게 할 수 있게됐다.

    이런 자동화 시스템을 구축화함으로써 엔씨소프트는 한 시간 안에 혼자서 빌드 테스트를 마칠 수 있는 놀라운 결과를 얻었다. 리니지M은 QA 빌드 배포 시 테스트 가능한 빌드인지를 확인하는 BAT 26개의 테스트를 15분 이내로 완료할 수 있었다. 라이브 서버 자동 점검도 가능해졌고, 448개의 테스트를 15분 이내에 완료할 수 있게 됐다. 또한 다이아/아데나를 사용하는 시스템 및 콘텐츠 전반에 대한 테스트도 가능해졌다. 약 300여 개의 테스트에 4시간이 소요된다.

    실질적으로 일일이 수작업으로 진행되는 테스트의 과정을 크게 줄였고, 생산성도 크게 상승했다. QA 테스트들을 다양한 기기로 할 수 있고, 테스트 자동화를 적용해서 커버리지도 크게 확장하게 됐다.




    이호승 개발자는 호환성 테스트 자동화에 대해서는 각 부서들의 의지가 중요했다고 평가했다. 실제로 협업해서 공유하고, 협업을 하는 건 강력한 의지가 필요하다. 서로 공유하고 협업하고자 하는 의지 없이 어느 한 팀이 주도할 수 없다. 결국 서로 도와야 되는 게 얻은 결과라고도 평가했다.

    강연의 끝에서 그는 소규모 개발사나 작은 개발 그룹의 경우 이런 다양한 기기들에서 테스트가 힘들지라도 최소 사양과 권장사양 기기는 반드시 테스트를 할 것을 권유했다. 그게 안된다면 테스트 자동화를 적용해보고 시도해보는 게 좋을 수 있다고 제언했다. 게임도 유저들에게 제대로 서비스하기 위해서는 그만큼 QA 활동과 테스트에도 투자를 해야 한다고 주장하며 강연을 마무리했다.
  • 코멘트

    새로고침
    새로고침

    기사 목록

    1 2 3 4 5