Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

Android 플랫폼 테스트

이 콘텐츠는 Android 플랫폼 개발자를 대상으로 마련되었습니다. Android 플랫폼에서 테스트를 실행하는 방법을 알아보려면 Android 플랫폼 아키텍처를 참고하세요.

그런 다음 공급업체 테스트 모음(VTS)과 수많은 동영상 및 Codelab 가이드와 같은 이 섹션에서 제공하는 정확한 기술에 관해 깊이 알아보세요.

또한, 기기의 취약성을 감지하고 강화하는 데 사용할 수 있는 보안 관련 테스트 메커니즘을 확인하세요.

앱 테스트의 경우 테스트 기본 요소로 시작하고 제공된 샘플을 사용하여 Android 테스트 Codelab을 실행합니다.

마지막으로, Repo 후크를 통해 사전 제출 테스트를 사용할 있습니다. Reop 후크를 사용하면 커밋 업로드와 같은 진행을 계속하기 전에 린터 실행, 형식 확인 및 단위 테스트 트리거를 할 수 있습니다. 이러한 후크는 기본적으로 사용 중지되어 있습니다. 자세한 내용은 Repo 후크 소개를 참고하세요.

테스트 내용 및 방법

플랫폼 테스트는 일반적으로 하나 이상의 Android 시스템 서비스 또는 하드웨어 추상화 계층(HAL)과 상호 작용하고 테스트 대상의 기능을 실행하며 테스트 결과의 정확성을 나타냅니다.

따라서 플랫폼 테스트는 다음을 수행할 수 있습니다.

  1. 애플리케이션 프레임워크를 통해 프레임워크 API를 실행할 수 있습니다. 실행되는 구체적인 API로는 다음이 포함됩니다.
    • 타사 애플리케이션용 공개 API
    • 시스템 API와 같은 권한 있는 애플리케이션을 위한 숨겨진 API
    • 비공개 API(@hide 또는 protected, private 패키지)
  2. 원시 바인더 또는 IPC 프록시를 통해 직접 Android 시스템 서비스를 호출할 수 있습니다.
  3. 낮은 수준의 API 또는 IPC 인터페이스를 통해 HAL과 직접 상호작용할 수 있습니다.

유형 1과 2는 일반적으로 계측 테스트로 작성되지만, 유형 3은 보통 gtest 프레임워크를 사용하여 네이티브 테스트로 작성됩니다.

자세한 내용은 Google의 포괄적인 예를 참고하세요.

이러한 도구는 Android에서 테스트할 때 기본이므로 익숙해지는 것이 좋습니다.

호환성 테스트 모음(CTS)

Android 호환성 테스트 모음은 OEM 파트너와 플랫폼 버전 간의 Android 프레임워크 구현의 호환성을 보장하는 데 사용되는 다양한 유형의 테스트 모음입니다. 이 테스트 모음에는 계층 테스트와 네이티브 테스트(gtest 프레임워크도 사용)도 포함되어 있습니다.

CTS 및 플랫폼 테스트는 상호 배타적이지 않으며 다음과 같은 몇 가지 일반적인 가이드라인이 있습니다.

  • 테스트에서 프레임워크 API 함수/동작의 정확성을 확인하고 OEM 파트너에 적용해야 하는 경우 테스트가 CTS에 있어야 합니다.
  • 테스트가 플랫폼 개발 주기 동안 회귀를 파악하려는 목적이 있고 실행할 권한이 필요할 수 있으며 AOSP에 출시된 것처럼 구현 세부사항에 종속될 수 있다면 이 테스트는 플랫폼 테스트로 작성해야만 합니다.

공급업체 테스트 도구 모음(VTS)

공급업체 테스트 모음(VTS)은 HAL 및 OS 커널 테스트를 자동화합니다. VTS를 사용하여 Android 네이티브 시스템 구현을 테스트하려면, 테스트 환경을 설정한 다음 VTS 계획을 사용하여 패치를 테스트합니다.

Trade Federation 테스트 인프라

Trade Federation(Tradefed 또는 TF로 표시)은 Android 기기에서 테스트를 실행하기 위해 고안된 연속 테스트 프레임워크입니다. TF는 플랫폼 체크아웃 내에서 편리하게 데스크톱의 로컬에서 기능 테스트를 실행할 수 있습니다. TF에서 테스트를 실행하려면 자바 테스트 소스와 XML 구성, 두 개의 파일이 필요합니다. 예를 보려면 RebootTest.javareboot.xml을 참고하세요.

디버깅

디버깅 섹션은 플랫폼 수준 기능을 개발할 때 기본 Android 플랫폼 코드를 디버깅, 추적 및 프로파일링하기 위한 유용한 도구와 관련 명령어를 요약합니다.