모바일 앱이나 웹브라우저 쪽은 이미 테스트 자동화가 대중화 되어있다는 것을 아시나요? Selenium이나 Appium이라는 테스트 자동화 프로젝트 가 있어 많은 사람이 사용하고 있고 표준처럼 여겨지고 있습니다. 그렇다면 게임 쪽은 어떨까요? 아직 표준이라고 할 만한 테스트 자동화 프로젝트는 존재하지 않습니다. 각기 다른 프로젝트들이 존재하는데요. 한 번 비교해 보고자 합니다.

용어 정리

  • 엔진: Unity, Unreal 등의 게임엔진을 말합니다.
  • 스크립트 언어: 거의 모든 게임 테스트 자동화 라이브러리들은 게임 외부에서 별도의 스크립트 언어를 통해 게임을 제어할 수 있는 방식으로 구성되어 있습니다. 이때 제어할 때 사용할 수 있는 프로그래밍 언어를 말합니다. 대부분이 Python을 지원하고 있습니다.
  • Inspector: 게임 외부에서 게임을 제어하기 위해선 제어해야 할 대상(Unity의 경우 GameObject)을 찾을 수 있어야 하는데요. 이때 라이브러리마다 대상을 찾을 방법으로 경로 혹은 이름을 제공합니다. 이걸 파악할 수 있도록 도와주는 Editor입니다.
  • 디바이스 팜: AWS DeviceFarm이나 BrowserStack, LambdaTest를 들어보셨나요? 웹 브라우저에서 모바일 디바이스에 접근하고 제어할 수 있도록 함과 동시에 Appium 등의 앱 테스트를 원격에서 실행할 수 있게 해주는 서비스입니다. 이처럼 게임 테스트 자동화도 원격테스트를 실행할 수 있도록 지원하는 서비스들이 있습니다.

Gamium

  • 엔진: Unity 엔진을 지원하고 있고 추후 Unreal, Godot엔진 지원예정입니다.
  • 스크립트 언어: Python, TypeScript 를 스크립트 언어로 지원합니다.
  • Inspector: Unity Editor내부, Dogu device farm과 연동하여 사용가능합니다.
  • 제작사: Dogu에서 만든 오픈소스 테스트 자동화 툴 입니다. Github Link
  • 디바이스 팜: Dogu device farm과 연동이 가능합니다. 😊
  • 기능: UI 조작, KeyInput, C# Code 원격호출이 가능합니다
  • Selenium, Appium Client 들이 사용하는 인터페이스와 같이 쉽게 사용할 수 있도록 만들어졌습니다.

Poco, Airtest

  • 엔진: Unity, Unreal, Cocos2d엔진을 지원합니다.
  • 스크립트 언어: Python을 스크립트 언어로 지원합니다.
  • Inspector: Airtest IDE, PocoHierarchyViewer를 통해 사용가능합니다.
  • 제작사: NetEase에서 만든 오픈소스 테스트 자동화 툴 입니다. Gihub Link
  • 디바이스 팜: AirLab 이라는 클라우드 디바이스 팜과 연동이 가능합니다.
  • 특이한게 Airtest라는 자동화 도구화 결합하면 이미지 인식으로 자동화를 할 수 있습니다. 그런데 이미지 인식은 기존 스크립트의 수명도 짧고 유지보수가 어려워 추천하지는 않습니다.

GAutomator

  • 엔진: Unity, Unreal엔진을 지원합니다.
  • 스크립트 언어: Python을 스크립트 언어로 지원합니다.
  • 제작사: Tencent에서 만든 오픈소스 테스트 자동화 툴 입니다. Gtihub Link
  • Inspector: GAutomatorView를 통해 사용가능합니다.
  • 디바이스 팜: WeTest UDT 디바이스 팜과 연동이 가능합니다.
  • 문서가 있긴합니다만 대부분 중국어로 작성되어있고 링크가 깨진부분도 존재합니다.

AltTester for Unity

  • 엔진: Unity 엔진 전용입니다.
  • 스크립트 언어: C#, Python, Java를 스크립트 언어로 지원합니다.
  • 제작사: AltTester에서 만든 오픈소스 테스트 자동화 툴 입니다. Gitlab Link
  • Inspector: AltTester Desktop App으로 Unity 에디터 외부 에디터를 지원합니다.
  • 디바이스 팜: 자체 디바이스 팜은 없고 BrowserStack, AWS DeviceFarm등과의 연결 가이드를 지원합니다.

GameDriver

  • 엔진: Unity, Unreal, Godot엔진을 지원합니다.
  • 스크립트 언어: C#를 스크립트 언어로 지원합니다.
  • 제작사: GameDriver회사에서 개발하고 있습니다.
  • 관련해서 SDK는 공식홈페이지나 Unity AssetStore에서 접근을 요청해야합니다.

아래는 내용을 정리한 표입니다.

Gamium Poco GAutomator AltTester for Unity
지원 엔진 Unity Unity, Unreal Unity, Unreal Unity
지원 언어 Python, TypeScript python Python C#, Python, Java
Inspector Editor내부, Dogu 웹콘솔 PocoHierarchyViewer, Airtest IDE GAutomatorView AltTester Desktop App
디바이스 팜 Dogu AirLab WeTest UDT 외부 BrowserStack, ... 연동
제작사 Dogu Technologies NetEase Tencent AltTester
  • GameDriver는 자료 접근이 어려워 명확한 정보제공이 어려울 것 같아 표에서는 제외했습니다.

Gamium은 탄생하지 얼마되지 않은 프로젝트인데요. 하지만 문서Example 이 잘되어있고, 추가로 자동화 스크립트를 개발하면 Unity 내부 C#코드를 호출하면 쉽게 처리할 수 있는 경우가 생기는데요. 이를 위해 RPC기능이 개발되어 있습니다.

Poco, GAutomator를 비교해보자면 중국 게임산업이 규모가 좀 크다보니 둘 다 중국회사에서 만들었습니다. Poco는 Github Star도 많고 문서도 GAutomator보다 문서가 더 잘 되어 있어 README.md만 읽어도 어떻게 사용하는지 충분히 이해가 가능했습니다. 둘 중에 선택을 한다면 저는 Poco가 좋아보입니다.

AltTester for Unity는 Unity에서만 동작하는 Unity SDK인데요. Inspector 및 추가기능 중의 일부들이 유료 기능이긴 합니다. 하지만 제가 Discord 커뮤니티에 참여시 Webinar 및 Q&A 등이 진행되고 있어 활발한 커뮤니티를 유지하고 있는 것을 알 수 있었습니다.

대부분 도구가 하나의 기기에 대한 테스트 자동화는 무료이지만, 추가로 병렬처리를 위해서는 디바이스 팜 연동이 필요했고 디바이스 팜은 요금을 내야 하는 경우가 많았습니다.

게임 테스트 자동화 도구 중 어떤 것을 선택할지는 여러분의 선택입니다. 이 글은 Gamium을 소개하기에 앞서 다른 유사한 라이브러리와 비교하기 위해 작성하였는데요. 다음 글에서는 Gamium을 사용하는 방법에 관해 설명을 이어 나가겠습니다.