

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 사용자 지정 테스트 환경 실행 모범 사례
<a name="custom-test-environments-best-practices"></a>

 다음 주제에서는 Device Farm에서 사용자 지정 테스트 실행을 사용하기 위한 권장 모범 사례를 다룹니다.

**실행 구성**
+  테스트 사양 파일의 셸 명령을 통해 유사한** 구성을 적용하는 대신 가능한 경우 실행 구성을 위해 Device Farm 관리형 소프트웨어 및 API 기능을 사용합니다**. 여기에는 테스트 호스트 및 디바이스의 구성이 포함됩니다. 테스트 호스트 및 디바이스에서 더 지속 가능하고 일관되기 때문입니다.

   Device Farm은 테스트를 실행하는 데 필요한 만큼 테스트 사양 파일을 사용자 지정하는 것을 권장하지만, 사용자 지정 명령이 추가되면 시간이 지남에 따라 테스트 사양 파일을 유지하기 어려울 수 있습니다. Device Farm 관리형 소프트웨어 사용(와 같은 도구 ` devicefarm-cli` 및에서 사용 가능한 기본 도구를 통해`$PATH`) 및 관리형 기능(예: [https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_ScheduleRunConfiguration.html#devicefarm-Type-ScheduleRunConfiguration-deviceProxy](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_ScheduleRunConfiguration.html#devicefarm-Type-ScheduleRunConfiguration-deviceProxy) 요청 파라미터)을 사용하여 유지 관리 책임을 Device Farm 자체로 전환하여 테스트 사양 파일을 간소화합니다.

**테스트 사양 및 테스트 패키지 코드**
+  **절대 경로를 사용하거나 테스트 사양 파일 또는 테스트 패키지 코드의 특정 마이너 버전에 의존하지 마십시오**. Device Farm은 선택한 테스트 호스트와 포함된 소프트웨어 버전에 정기 업데이트를 적용합니다. 특정 또는 절대 경로(예: ` /usr/local/bin/python` 대신`python`)를 사용하거나 특정 마이너 버전(예: Node.js `20.3.1` 대신)을 요구하면 테스트에서 필요한 실행 파일/파일을 찾지 못할 ` 20`수 있습니다.

   사용자 지정 테스트 실행의 일환으로 Device Farm은 다양한 환경 변수와 `$PATH` 변수를 설정하여 테스트가 동적 환경 내에서 일관된 경험을 갖도록 합니다. 자세한 내용은 [사용자 지정 테스트 환경을 위한 환경 변수](custom-test-environment-variables.md) 및 [사용자 지정 테스트 환경 내에서 지원되는 소프트웨어](custom-test-environments-hosts-software.md) 섹션을 참조하세요.
+  **테스트 실행 중에 생성되거나 복사된 파일을 임시 디렉터리 내에 저장합니다. ** 오늘은 테스트 실행 중에 사용자가 임시 디렉터리(`/tmp`)에 액세스할 수 있도록 합니다(와 같은 관리형 디렉터리 제외`$DEVICEFARM_LOG_DIR`). 사용자가 액세스할 수 있는 다른 디렉터리는 사용 중인 서비스 또는 운영 체제의 요구로 인해 시간이 지남에 따라 변경될 수 있습니다.
+  **테스트 실행 로그를에 저장합니다`$DEVICEFARM_LOG_DIR`**. 실행 로그/아티팩트를 추가하기 위해 실행에 제공되는 기본 아티팩트 디렉터리입니다. 제공하는 [예제 테스트 사양](custom-test-environment-test-spec.md#custom-test-environment-test-spec-example)은 기본적으로 아티팩트에이 디렉터리를 사용합니다.
+  테스트 사양 `test` 단계에서 **명령이 실패 시 0이 아닌 코드를 반환하는지 확인합니다**. `test` 단계 중에 호출된 각 셸 명령의 0이 아닌 종료 코드를 확인하여 실행이 실패했는지 확인합니다. 로직 또는 테스트 프레임워크가 원하는 모든 시나리오에 대해 0이 아닌 종료 코드를 반환하는지 확인해야 합니다. 그러면 추가 구성이 필요할 수 있습니다.

   예를 들어 특정 테스트 프레임워크(예: JUnit5)는 제로 테스트 실행을 실패로 간주하지 않으므로 실행된 테스트가 없더라도 테스트가 성공적으로 실행된 것으로 감지됩니다. JUnit5를 예제로 사용하면이 시나리오가 0이 아닌 종료 코드로 종료`--fail-if-no-tests`되도록 명령줄 옵션을 지정해야 합니다.
+  테스트 실행에 사용할 디바이스 OS 버전 및 테스트 호스트 버전과 **소프트웨어의 호환성을 검토합니다**. 예를 들어 소프트웨어 프레임워크(예: Appium)를 테스트할 때 테스트 중인 디바이스의 모든 OS 버전에서 의도한 대로 작동하지 않을 수 있는 특정 기능이 있습니다.

**보안**
+  ** 테스트 사양 파일에 민감한 변수(예: AWS 키)를 저장하거나 로깅하지 마세요. ** 테스트 사양 파일, 테스트 사양 생성 스크립트 및 테스트 사양 스크립트의 로그는 모두 테스트 실행이 끝날 때 다운로드 가능한 아티팩트로 제공됩니다. 이로 인해 테스트 실행에 대한 읽기 액세스 권한이 있는 계정의 다른 사용자에게 의도하지 않은 보안 암호가 노출될 수 있습니다.