Unity3D 게임에 대해 기능 테스트를 어떻게 실행합니까?


25

문맥

Unity3d에서 게임에 대한 레거시 코드를 계속 사용하고 있으며 새로운 기능을 구현하거나 리팩토링 할 때 문제가 발생하지 않도록 회귀를위한 기능 테스트를 작성하려고합니다.

자산으로 사용할 수있는 Unity3d 용 'Unit Test Tools'제품군이 이미 있다는 것을 이미 알고 있습니다. 단위 테스트 스위트로 사용 했으므로 모델 (클래스)을 테스트합니다.

내가 어떤 종류의 시험을 생각하고 있는지의 예

"기능 테스트"의 의미는 다음과 같습니다.

  • 프로그램을 실행
  • 메뉴 장면에 "시작"이라고 표시된 버튼이 있다고 주장
  • 클릭하세요
  • 그런 다음 새 장면이로드되었다고 주장
  • Assert pixel XXX is red
  • 좌표 XXX 클릭
  • 픽셀이 녹색으로 바뀌 었음을 주장
  • 기타

질문

Q1 : 게임의 기능 테스트를 작성하고 실행하려면 어떻게합니까 ? 이것은 일반적으로 UnityTestTools (UTT)에서도 수행됩니까?

Q2 : UTT가 단위 테스트에 더 적합한 경우 기능 테스트를위한 별도의 제품군이 있습니까? 어느 것?

노트:

Android를 타겟팅하고 있으며 Unity5.3.1f1


내가 말할 수있는 한 내장 UTT는 단지 단위 테스트를위한 것입니다. 자산 상점의 요구에 맞는 테스트 도구가있을 수 있습니다.
user3797758

3
사실은 아닙니다. 유니티 테스트 툴에는 통합 테스트를위한 툴셋과 최초 버전 이후 많은 주장이 포함되어 있습니다. 내장 UTT에서 이와 같은 것이 보이지 않으면 Asset Store에서 전체 UTT를 다운로드하십시오.
Maxim Kamalov

테스트 실행 문서 인 Unity Test Runner Doc을 살펴보십시오. 재생 모드 및 편집 모드 테스트가 모두 가능합니다.
Racksay

답변:


1

내가 이해했듯이 Unity의 자동화 테스트를 이해하려고합니다.

유니티 테스트 툴

이것이 당신의 goto 방법이어야하지만, 방법을 파기 전에 그 이유를 살펴 보겠습니다.

모든 형태의 자동화 테스트를 수행하는 바람직한 방법은 가능한 생산 환경에 가까운 환경에서 수행하는 것입니다. Unity 테스트 툴 (Unity Editor 내부에 포함)과 같은 것을 사용하는 것은 일반적인 통합 테스트를 작성한 사람에게는 나쁜 생각처럼 들립니다.

왜? 통합 테스트를 수행 할 때 사용자가 응용 프로그램을 열 때없는 최소한의 추가 항목을 응용 프로그램에 저장하려고합니다. Unity 에디터는 iOS 버전과 비교하여 성능이나 동작이 다를 수 있습니다 (예 :).

그렇다면 왜 Unity Test Tools (UTT)를 사용합니까?

주된 이유는 편의성입니다. Unity 에디터와 UTT는 사용하기 쉽고 시각적으로 개발되었습니다. 테스트를 작성하고 특정 게임에 연결하고 실패한 시점을 이해하기가 쉬워집니다.

Unity 에디터와 프로덕션의 동작 차이는 어떻습니까?

결국 Unity 에디터는 애플리케이션을 둘러싼 래퍼입니다. 즉, 에디터와 프로덕션간에 약간의 차이 가 있습니다 . 그러나 통합 테스트를 제외하고는 Unity Editor는 오랫동안 아주 오랫동안 래퍼였습니다. 그것은이다 성숙 플랫폼 이를 기반으로 게임의 수천. Editor 내에서 통합 테스트를 실행 한 결과는 매우 정확합니다.

제공 한 예제 시나리오에서 Unity Test Tools를 사용하여 첫 번째 항목을 제외한 모든 항목을 쉽게 주장 할 수 있습니다. 다른 통합 테스트와 마찬가지로 장면을 열고 동작을 확인할 수 있습니다.

UTT를 사용하여 대부분의 테스트를 작성하는 것이 좋습니다. 지속적인 통합 도구 (예 : Jenkins)와의 호환성을 추가하려면 명령 줄 인수를 사용하여 콘솔에서 도구를 실행할 수 있습니다 .

응용 프로그램 및 수동 테스트 시작

Unity 에디터에서 애플리케이션을 시작하는 것은 정확하게 제어 할 수있는 것이 아닙니다. 게임의 측면 등을 검증하기 위해 몇 가지 기본 수동 테스트를 사용할 수 있습니다.

접근 방법은 다음과 같습니다.

  1. 관심있는 특정 이정표에 도달 할 때 게임이 어떤 종류의 신호를 내도록하십시오. 파일에 로깅하는 것이 가장 일반적인 방법입니다 ( 자동 내장 로깅 또는 타사 버전 사용 ).
  2. 정기적으로 로그를 읽고 분석하십시오. 이는 수동으로 발생하거나 두 번째로 선호하는 스크립팅 언어를 사용하여 스크립팅 할 수 있습니다.

대안

당연히 Unity와 관련된 모든 것에는 몇 가지 대안이 있습니다. 고려해야 할 사항은 다음과 같습니다.

프로젝트의 규모와 범위에 따라 위에서 설명한 하나 이상의 옵션을 사용할 수 있습니다.

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