도구 모음 설정

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).