Tradefed 아키텍처

이 섹션에서는 Tradefed의 내부 구조와 그 관계에 대해 설명합니다. 자세한 내용은 링크된 하위 페이지를 참조하세요.

테스트 구성

Tradefed의 테스트 구성은 XML 형식으로 설명됩니다. 테스트를 실행하고 사용자 정의하려면 구성 구조를 이해하는 것이 중요합니다.

TF 구성의 구조

글로벌 TF 구성

전역 구성 파일은 Tradefed가 TF_GLOBAL_CONFIG 환경 변수를 통해 시작될 때 로드되는 특별한 Tradefed XML 구성입니다. 전체 하네스 동작에 영향을 미치는 Tradefed 인스턴스 범위와 관련된 개체를 로드합니다.

글로벌 구성 세부정보

키스토어

키 저장소를 사용하면 명령줄에서 직접 값을 참조하는 것을 방지하기 위해 키 저장소에서 오는 Tradefed에 명령줄 옵션을 삽입할 수 있습니다. 이는 키 저장소에서 직접 비밀번호를 검색하여 명령줄에서 비밀번호를 숨기는 데 사용할 수 있습니다.

키스토어 세부정보

기기 관리자

장치 관리자는 실행 중인 Tradefed 인스턴스에서 장치 상태를 추적하는 일을 담당합니다. 할당 상태, 온라인 상태 등의 측면이 모니터링됩니다.

테스트 명령 스케줄러

Tradefed의 테스트 명령 스케줄러는 실행할 명령을 가져와 이를 장치와 연결하고 테스트 호출을 시작합니다.

빌드 공급자

빌드 공급자는 모든 테스트 호출의 첫 번째 단계입니다. 테스트(이미지 빌드, 테스트 APK 등)를 설정하고 실행하는 데 필요한 리소스를 다운로드합니다. 또한 테스트에 전달될 BuildInfo 개체에서 이를 참조합니다. 로컬에서 사용 가능한 리소스를 BuildInfo 개체에 연결할 수도 있습니다.

타겟 준비자 및 클리너

타겟 준비자는 테스트 중인 타겟을 특정 상태로 구성하기 위해 수행할 수 있는 선택적 작업(예: 장치 플래싱, 특정 속성 설정, Wi-Fi 연결)을 제공합니다.

테스트러너

Tradefed에서 테스트 실행기는 실제 테스트 실행을 담당하는 개체를 의미합니다. 다양한 테스트 실행기는 다양한 방식으로 테스트 실행을 주도합니다. 예를 들어 계측 테스트 실행기는 JUnit 테스트 실행기와 매우 다릅니다.

결과보고자

Tradefed의 결과 보고자는 결과를 특정 대상으로 보내는 개체를 나타냅니다. 각 구현은 일반적으로 다양한 결과 백엔드에 특화되어 있습니다. 그리고 결과 보고자는 Tradefed 결과 형식을 대상 형식으로 변환하는 역할을 담당합니다.

이러한 유연한 설계를 통해 모든 테스트는 결과 대상에 보고할 수 있으며 격리된 방식으로 더 많은 테스트를 쉽게 추가할 수 있습니다.

측정항목 수집기

측정항목 수집기는 테스트 실행과 직교하는 Tradefed의 특수 개체입니다. 이를 통해 테스트 수명주기의 다양한 지점(예: 테스트 시작, 테스트 종료)에서 정보를 수집할 수 있습니다. 수집기가 테스트 자체에서 분리되어 있으므로 테스트 자체를 변경하지 않고도 포인트를 교체, 추가 및 제거할 수 있습니다.

호스트 전체 설정

이 섹션에서는 전체 Tradefed 인스턴스 실행에 적용할 수 있는 설정을 설명합니다. 이러한 옵션은 제한된 네트워크에 있는 등 다양한 환경에 적응하기 위해 하네스의 동작에 전체적으로 영향을 미칩니다.

추가 기능

다음 섹션에서는 Tradefed 개체가 아닌 Tradefed의 일반적인 사용법을 설명합니다.

Tradefed 샤딩

테스트 코퍼스가 크거나 실행하는 데 오랜 시간이 걸리는 경우 여러 장치에 걸쳐 분할할 수 있습니다. 우리는 이 분할을 샤딩(sharding) 이라고 부릅니다. 이 섹션에서는 샤딩의 작동 방식과 구성 방법을 설명합니다.

샤딩 세부정보

SL4A 사용

Tradefed는 Android용 스크립팅 레이어인 SL4A를 지원합니다. 이는 플랫폼 독립적인 방식으로 Android API를 호출하기 위한 자동화 도구 세트입니다.

Tradefed 세부정보가 포함된 SL4A

동적 @옵션 다운로드

어떤 경우에는 테스트나 일부 특정 작업에 필요한 파일을 로컬에서 사용할 수 없습니다. 이 기능을 사용하면 Tradefed는 빌드 제공업체를 거치지 않고도 원격 위치에서 이러한 파일을 가져올 수 있습니다.

동적 @옵션 다운로드

,

이 섹션에서는 Tradefed의 내부 구조와 그 관계에 대해 설명합니다. 자세한 내용은 링크된 하위 페이지를 참조하세요.

테스트 구성

Tradefed의 테스트 구성은 XML 형식으로 설명됩니다. 테스트를 실행하고 사용자 정의하려면 구성 구조를 이해하는 것이 중요합니다.

TF 구성의 구조

글로벌 TF 구성

전역 구성 파일은 Tradefed가 TF_GLOBAL_CONFIG 환경 변수를 통해 시작될 때 로드되는 특별한 Tradefed XML 구성입니다. 전체 하네스 동작에 영향을 미치는 Tradefed 인스턴스 범위와 관련된 개체를 로드합니다.

글로벌 구성 세부정보

키스토어

키 저장소를 사용하면 명령줄에서 직접 값을 참조하는 것을 방지하기 위해 키 저장소에서 오는 Tradefed에 명령줄 옵션을 삽입할 수 있습니다. 이는 키 저장소에서 직접 비밀번호를 검색하여 명령줄에서 비밀번호를 숨기는 데 사용할 수 있습니다.

키스토어 세부정보

기기 관리자

장치 관리자는 실행 중인 Tradefed 인스턴스에서 장치 상태를 추적하는 일을 담당합니다. 할당 상태, 온라인 상태 등의 측면이 모니터링됩니다.

테스트 명령 스케줄러

Tradefed의 테스트 명령 스케줄러는 실행할 명령을 가져와 이를 장치와 연결하고 테스트 호출을 시작합니다.

빌드 공급자

빌드 공급자는 모든 테스트 호출의 첫 번째 단계입니다. 테스트(이미지 빌드, 테스트 APK 등)를 설정하고 실행하는 데 필요한 리소스를 다운로드합니다. 또한 테스트에 전달될 BuildInfo 개체에서 이를 참조합니다. 로컬에서 사용 가능한 리소스를 BuildInfo 개체에 연결할 수도 있습니다.

타겟 준비자 및 클리너

타겟 준비자는 테스트 중인 타겟을 특정 상태로 구성하기 위해 수행할 수 있는 선택적 작업(예: 장치 플래싱, 특정 속성 설정, Wi-Fi 연결)을 제공합니다.

테스트러너

Tradefed에서 테스트 실행기는 실제 테스트 실행을 담당하는 개체를 의미합니다. 다양한 테스트 실행기는 다양한 방식으로 테스트 실행을 주도합니다. 예를 들어 계측 테스트 실행기는 JUnit 테스트 실행기와 매우 다릅니다.

결과보고자

Tradefed의 결과 보고자는 결과를 특정 대상으로 보내는 개체를 나타냅니다. 각 구현은 일반적으로 다양한 결과 백엔드에 특화되어 있습니다. 그리고 결과 보고자는 Tradefed 결과 형식을 대상 형식으로 변환하는 역할을 담당합니다.

이러한 유연한 설계를 통해 모든 테스트는 결과 대상에 보고할 수 있으며 격리된 방식으로 더 많은 테스트를 쉽게 추가할 수 있습니다.

측정항목 수집기

측정항목 수집기는 테스트 실행과 직교하는 Tradefed의 특수 개체입니다. 이를 통해 테스트 수명주기의 다양한 지점(예: 테스트 시작, 테스트 종료)에서 정보를 수집할 수 있습니다. 수집기가 테스트 자체에서 분리되어 있으므로 테스트 자체를 변경하지 않고도 포인트를 교체, 추가 및 제거할 수 있습니다.

호스트 전체 설정

이 섹션에서는 전체 Tradefed 인스턴스 실행에 적용할 수 있는 설정을 설명합니다. 이러한 옵션은 제한된 네트워크에 있는 등 다양한 환경에 적응하기 위해 하네스의 동작에 전체적으로 영향을 미칩니다.

추가 기능

다음 섹션에서는 Tradefed 개체가 아닌 Tradefed의 일반적인 사용법을 설명합니다.

Tradefed 샤딩

테스트 코퍼스가 크거나 실행하는 데 오랜 시간이 걸리는 경우 여러 장치에 걸쳐 분할할 수 있습니다. 우리는 이 분할을 샤딩(sharding) 이라고 부릅니다. 이 섹션에서는 샤딩의 작동 방식과 구성 방법을 설명합니다.

샤딩 세부정보

SL4A 사용

Tradefed는 Android용 스크립팅 레이어인 SL4A를 지원합니다. 이는 플랫폼 독립적인 방식으로 Android API를 호출하기 위한 자동화 도구 세트입니다.

Tradefed 세부정보가 포함된 SL4A

동적 @옵션 다운로드

어떤 경우에는 테스트나 일부 특정 작업에 필요한 파일을 로컬에서 사용할 수 없습니다. 이 기능을 사용하면 Tradefed는 빌드 제공업체를 통하지 않고도 원격 위치에서 이러한 파일을 가져올 수 있습니다.

동적 @옵션 다운로드