건틀릿 자동화 프레임워크 개요

테스트를 수행하고 결과의 유효성을 검사하는 언리얼 엔진의 프로젝트 세션을 실행하는 프레임워크입니다.

건틀릿(Gauntlet)언리얼 엔진 에서 프로젝트 세션을 실행하여 테스트를 수행하고 결과의 유효성을 검사하는 프레임워크입니다. 구체적으로는 언리얼 세션을 다양한 플랫폼에서 실행하려는 용도 등의 목적으로 설계되었습니다. 언리얼 세션 은 언리얼 엔진으로 게임을 실행하는 데 필요한 모든 프로세스입니다. 예를 들어 멀티플레이어 게임에는 클라이언트 4개와 서버가 필요할 수 있습니다.

건틀릿은 특정한 게임을 위한 자동화 코드나 테스트 프레임워크가 필요하지 않습니다. 게임의 테스트 수행 방식은 전적으로 여러분에게 달려 있습니다. 그러나 게임 인스턴스 조작 및 모니터링을 지원하는 유용한 클래스 TestController 를 제공하는 건틀릿 플러그인이 있습니다. 여러 단계를 거쳐야 실행 가능한 스모크 테스트에 적절하지만, 이는 전적으로 선택 사항입니다.

건틀릿이 하는 일

  • 환경설정 및 결합에 필요한 기능적 작업을 제공하는 로우 레벨 단위로 빌드, 디바이스, 테스트 등의 플랫폼 독립적인 구현이 가능합니다.

  • 게임의 복잡한 환경설정(예: 5v5 클라이언트 및 서버)을 실행 가능한 하이 레벨 클래스를 제공합니다.

  • 로그 파일, 크래시 파싱 및 디바이스에 저장된 데이터 액세스 등의 유틸리티 기능을 제공합니다.

건틀릿이 하지 않는 일

  • 특정한 언리얼 코드가 필요하지 않습니다. 건틀릿의 의도는 언리얼 내에서의 실행은 가장 적합한 것이라면 무엇이든 사용하는 것입니다. 언리얼 자동화 프레임워크와 같이 포괄적인 것일 수도 있고, 단지 게임이 해석하는 명령줄 파라미터일 수도 있습니다.

  • 빌드를 생성하지 않습니다. 건틀릿은 네트워크 또는 로컬로 쿠킹된 빌드와 함께 제공해야 합니다.

아키텍처

건틀릿의 함수 기능에는 세 가지 티어가 있습니다. 초기 티어는 디바이스 인터랙션 스크립팅, 비언리얼 유닛 테스팅 등으로 분리되어 쓰일 것이며, 실제로도 그렇게 씁니다. 후반 티어는 단순한 사용자 구성 옵션 뒤에 숨은, 대량의 복잡도를 추상화합니다.

레벨 1

  • 디바이스, 빌드, 설치, 프로세스의 콘셉트를 추상화하는 인터페이스(디바이스, 빌드, 앱)

    • ITargetDevice

    • IBuildSource

    • IBuild

    • IAppInstall

    • IAppInstance

  • 사용자가 생성한 테스트의 순차, 병렬, 독립 실행을 지원하는 프레임워크.

    • TestExecutor

    • ITestNode

레벨 2

  • 언리얼이 지원하는 모든 플랫폼용 디바이스 및 AppInstance 구현(PC, Mac, PS4, Xbox One, Switch, iOS, Android).

    • TargetDeviceWindows

    • TargetDeviceMac

    • TargetDevicePS4

    • TargetDeviceXboxOne

    • TargetDeviceSwitch

    • TargetDeviceIOS

    • TargetDeviceAndroid

  • 언리얼 세션에 존재하는 하나 이상의 '역할' 환경설정 및 실행을 지원하는 클래스(예: 4개의 클라이언트, 1개의 서버)

    • UnrealAppConfig

    • UnrealSessionRole

    • UnrealSession

    • UnrealSessionInstance

레벨 3

  • 언리얼 세션 컨텍스트에서 ITestNode 및 IBuildSource를 구현하는 클래스

    • UnrealBuildSource

    • UnrealTestConfiguration

    • UnrealTestContext

    • UnrealTestNode

  • RunUnreal - UAT의 BuildCommand에서 상속하고, 테스트 목록 생성 전에 다수의 파라미터를 환경설정한 뒤 실행하는 클래스.

건틀릿 핵심 인터페이스

gauntlet_overview_interfaces.png

핵심 클래스

TestExecutor

TestExecutor 클래스는 테스트 세트 생성, 큐 등록, 모니터링을 담당합니다. TestNode가 지원하는 경우 다수의 테스트를 병렬로 실행할 수 있습니다. 도움이 필요한 곳의 예시로는 언리얼 서버용 포트 사용이 있습니다. 첫 번째 테스트의 경우에는 디폴트 포트로도 괜찮지만, 테스트가 서버와 클라이언트에서 병렬로 실행되는 경우 서버와 클라이언트 모두 고유 포트를 사용해야 합니다.

ITestNode

ITestNode는 모든 테스트 노드가 구현해야 하는 API를 나타내는 인터페이스 클래스입니다.

언리얼 테스트 노드

언리얼 테스트 노드는 ITestNode를 구현하며, 이를 위해 대체로 UnrealSession 오브젝트를 설정하고 관련 함수를 호출합니다.

태그