도구 모음 설정

Tradefed의 도구 모음은 전반적인 실행을 구동하는 공통의 테스트 실행기 밑에서 여러 개의 테스트가 실행되고 있는 설정입니다.

Tradefed에서는 도구 모음이 ITestSuite를 통해 구동됩니다. 이 클래스는 테스트를 실행 방식과 상관없이 추가하고 제거할 수 있게 해줍니다.

정의

  • 도구 모음: 유사한 최상위 수준 설정 아래에서 실행되어 단일 호출 아래에 결과를 보고하도록 구성된 테스트 모듈 모음입니다.
  • 최상위 수준 설정: 테스트 모듈 실행 전에 기기에 적용되는 설정입니다.
  • 기본 구성: 어떤 모듈을 실행해야 하고 어떤 최상위 수준 설정을 사용해야 하는지 설명하는 도구 모음 수준의 Tradefed XML 구성입니다.
  • 모듈 수준 설정: 모듈 실행 직전에 기기에 적용되는 설정입니다. 모듈 전용 설정이라고도 불립니다.
  • 모듈 구성: 모듈, 그리고 어떤 모듈 수준 설정을 실행해야 하는지 설명하는 AndroidTest.xml Tradefed XML 구성입니다.
  • 모듈: 설정 단계(모듈 수준 설정), 테스트 실행 단계 및 해체 단계로 구성된 테스트 단위입니다.
  • 모듈 내 재시도: 모듈 내에서 하네스에 의한 재시도가 자동으로 이루어집니다.
  • 도구 모음 재시도: 이전에 불합격한 도구 모음의 테스트가 전부 재실행됩니다.

ITestSuite 구조

Tradefed의 ITestSuite는 도구 모음 실행을 구동하는 공통 기본 클래스입니다. 모든 주요 테스트 도구 모음, 특히 Android CTS(호환성 테스트 모음) 및 Android VTS(공급업체 테스트 모음)에 의해 공유되며 모든 도구 모음 전체에 걸쳐 일관적인 실행 경험을 보장합니다.

간혹 ITestSuite를 도구 모음 실행기라고 부를 때도 있습니다.

도구 모음 실행기는 실행 시 다음 단계를 따릅니다.

  1. 모듈의 구성을 로드하고 어떤 집합을 실행할지 결정합니다.
  2. 각 모듈을 실행합니다.

    1. 모듈 수준의 설정을 실행합니다.
    2. 모듈 테스트를 실행합니다.
    3. 모듈 수준의 해체를 실행합니다.
  3. 결과를 보고합니다.

최상위 수준 설정

Tradefed 관점에서 보면 ITestSuite는 또 하나의 테스트에 불과합니다. 즉 복잡하기는 하지만 다른 여타 IRemoteTest와 비슷한 테스트일 뿐입니다. 따라서 Tradefed 구성에서 도구 모음 실행기를 지정할 때에는 Tradefed가 일반적인 구성 패턴에 따라 build_provider, target_preparer, 테스트(이 경우 Google 도구 모음) 및 target_cleaner를 실행합니다.

ITestSuite를 포함하는 Tradefed 구성의 이러한 순서가 바로 최상위 수준 설정입니다.

예를 들면 다음과 같습니다.

<configuration description="Common config for Compatibility suites">

    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
    <!-- Setup applied before the suite: so everything running in the suite will
    have this setup beforehand -->
    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put global package_verifier_enable 0" />
        <option name="teardown-command" value="settings put global package_verifier_enable 1"/>
    </target_preparer>

    <!-- Our ITestSuite implementation -->
    <test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite" />

    <result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
</configuration>

모듈 메타데이터

테스트 모듈에 지정된 모듈 메타데이터 추가 정보를 AndroidTest.xml이라고 부릅니다. 이 메타데이터를 사용하면 모듈에 관한 추가 정보를 지정할 수 있으며 모듈을 필터링할 수 있습니다.

메타데이터 예:

<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

메타데이터 필터 예:

--module-metadata-include-filter component=framework

위의 예시는 프레임워크를 포함하는 모든 모듈을 구성요소 메타데이터로 실행합니다.

전체 AndroidTest.xml 예:

<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <!-- Metadata -->
    <option name="config-descriptor:metadata" key="component" value="framework" />
    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
    <!-- End: metadata -->
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsGestureTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.gesture.cts" />
        <option name="runtime-hint" value="10m50s" />
    </test>
</configuration>

매개변수화된 모듈

특수 메타데이터 유형은 parameter입니다.

<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

이 메타데이터는 표준 앱 모드 대신 인스턴트 앱 등의 다른 모드에서 모듈을 실행해야 함을 보여줍니다.

가능한 모든 모드나 매개변수는 ModuleParameters에 의해 설명되며, 특정 모드에서 실행되도록 모듈 설정을 변경할 수 있게 해주는 ModuleParametersHelper의 관련 핸들러를 보유합니다.

예를 들어 인스턴트 앱 모드는 APK 설치를 인스턴트 모드로 강제합니다.

매개변수화가 발생하기 위해서는 명령줄에서 다음을 통해 이를 사용 설정해야 합니다.

--enable-parameterized-modules

또한 다음을 통해 단일 모드를 실행할 수도 있습니다.

--enable-parameterized-modules --module-parameter <Mode>

--enable-parameterized-modules --module-parameter INSTANT_APP

모듈의 매개변수화된 버전이 실행되면 이 버전에서는 매개변수화된 모듈 이름 아래에 결과를 보고합니다(예: CtsGestureTestCases[instant] vs. 기본 CtsGestureTestCases).