게임 테스트를 자동화하는 방법?


13

나는이 시험 분야에 처음이다. 나는 단결 엔진을 사용하여 기본 게임을 개발했지만 테스트하고 싶습니다.

셀레늄으로 확인했지만 게임에서 수행중인 작업에 대한 정보가있는 반환되는 값을 얻는 방법을 모르겠습니다. 내가 가치를 얻을 수 있다면 그에 따라 필요한 조치를 취할 수 있습니다.


4
이것은 매우 흥미로운 질문입니다. 개인적으로 단위 테스트는 게임 개발에서 상당히 과소 평가된다고 생각합니다. 그러나 자동화 통합 테스트에 관심이있는 것 같습니다. 종종 게임 개발에서 구현하기가 어렵습니다. 특히 게임에서 임의성을 사용하는 경우.
Philipp

테스트를 진지하게 받아들이고 해당 작업을위한 도구를 찾기위한 소품. 대신 SO를 묻고 싶을 수도 있습니다. 셀레늄에 대한 많은 Q & A가 있습니다. @Philipp이 언급했듯이 일부 유형의 게임 테스트는 자동화하기가 쉽지 않습니다. 즉, 아직 시각 효과를 확인하기위한 무인 테스트를 보지 못했습니다.
Pikalek

1
무엇을 테스트하고 싶은지는 명확하지 않지만, 게임과 독립적으로 테스트 할 수있는 값, 즉 함수에 의해 반환되는 값을 찾고있는 것 같습니다. 그렇다면이 기능을 단위 테스트 할 수 있으며 게임에서 사용 중인지 여부는 중요하지 않습니다. 방법이 확실하지 않은 경우 알려 주시면 단위 테스트와 관련된 답변을 작성해 드리겠습니다.
MVCDS 2016 년

답변:


1

게임을 테스트하는 방법에는 여러 가지가 있으며, 가장 많이 사용되는 두 가지 방법은 유닛 및 통합 테스트입니다.

대한 단위 테스트실제로 실행하지 않고 게임의 내부 작업을 테스트하고 있습니다. 의존성을 추상화 한 특정 모듈 (예 : 주어진 요인 세트에 따라 사용자가 얻는 Quest XP를 계산하는 로직, 주어진 사운드의 재생 여부)에 대해이를 수행 할 수 있습니다. 로직을 추상화하는 정도에 따라 더 많은 테스트를 수행 할 수 있지만, 구체적으로는 게임 아키텍처가 수행되는 방식 (예 : 단일 동작에서 상속)이 어려울 수 있습니다. 그럼에도 불구하고 컴포지션과 같은 OOP 패턴을 적용하면 결정적인 방식으로 테스트 할 수있는 로직 (예 : 물리)을 추출 할 수 있습니다. 때로는 약간 극단적 인 것으로 보일 수도 있습니다. 그것은 모두 당신이 가진 시간, 프로젝트를 처음부터 시작했는지 여부, 경험이 얼마나 많은지 등에 달려 있습니다. 일반적으로, 나는 게임 이외의 다른 소프트웨어 프로젝트와 비교하여 게임에서 많은 단위 테스트를 보지 못했습니다. 이러한 종류의 테스트는 시뮬레이션 한 모의 동작을 제공하므로 자동화하기가 매우 쉽습니다.

대한 통합 테스트 , 당신은 상호 작용 주어진 시간에 "전체"게임, 모든 부분이 실행 중일 때. 테스트하려는 대상의 깊이에 따라 완전히 불가능한 것이 매우 쉽다는 것을 알았습니다.

하나의 아이디어는 "통합 테스트"빌드를하는 것인데, 이는 모든 (대부분의) 행동 (예 : 몬스터 스폰, 사운드 재생, 시작 효과, 스폰 입자)을 기록합니다. 주어진 시간 동안 실행 된 후, 주어진 패턴과 일치하는지 로그를 검사 할 수 있습니다 (이것은 또한 입력에 따라 게임이 얼마나 랜덤 한가에 달려 있습니다). 이제 이것은 간단하게 들리지만 문제는 게임에 원하는 동작을 수행하도록 지시하는 것입니다. 두 번째 아이디어로 연결됩니다.

다른 아이디어는 테스트 목적으로 (예를 들어, REST API를 통해) 요청을 처리 할 수 ​​있고, 엔티티에 작용하는 테스트 용 서버를 게임에 다시 배치하는 것입니다. 요청은 왼쪽으로 이동, 점프, X도 회전, 뷰포트 변경 등이 될 수 있습니다.이 방법을 사용하면 상태를 직접 확인하거나 가상을 확인하여 게임이 예상대로 작동하는 "확인"을 수행 할 수도 있습니다. 발생한 이벤트 로그. 이 접근 방식은 모바일 용 다른 UI 테스트 도구 (예 : Xamarin Test Cloud)에서 사용됩니다.

제어 부분의 경우 게임이 터치 / 브라우저 기반 인 경우 가상 터치 / 입력 장치를 통해 동작을 시뮬레이션 할 수 있지만 동작 복잡성에 따라 조금 더 어렵습니다.

시각적 측면과 관련하여 또 다른 아이디어는 초기 단계에서 일부 참조 스크린 샷, 이미지를 가져 와서 새로운 빌드에서 동일한 동작 시퀀스가 ​​발생한 후 비교하는 것입니다. 비교에는 사소한 변경을 방지하기 위해 특정 편차 허용이있을 수 있습니다. 테스트하는 동안 일치하지 않는 화면을 기록하여 차이를 확인할 수 있습니다. 다른 변경으로 인해 참조 화면을 업데이트해야 할 수도 있습니다. 이 경우 사전 설정된 동작으로 게임을 다시 실행할 수 있으며 참조 이미지가 업데이트됩니다. 이전 아이디어를 사용하여 파티클을 생성하는 데 사용되는 일종의 시드를 설정하지 않으면 파티클 시스템 또는 무작위로 생성 된 장면에서 제대로 작동하지 않을 수 있습니다.

소리의 경우, 조금 더 어려울 수 있으며, OUT 장치에 대한 "듣기"를 포함 할 수 있습니다 (시스템의 하드웨어에 따라 IIRC가 항상 가능한 것은 아닙니다). 그러나 가능하면 이미지와 동일한 참조 기반 비교를 수행 할 수 있습니다.

이것이 게임 테스트를 자동화 할 수있는 방법에 대한 정보가되기를 바랍니다.

나중에 편집 : 특정 비트를 수행하는 방법에 대한 몇 가지 포인터를 제공 할 수있는 또 다른 관련 질문이 있음을 알았습니다. 자동 게임 테스트

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.