ساختار AndroidTest.xml

ساختار کلی پیکربندی ماژول از یک الگوی مشابه با پیکربندی معمولی Tradefed XML پیروی می کند، اما با برخی محدودیت ها به دلیل این واقعیت که آنها به عنوان بخشی از یک مجموعه اجرا می شوند.

لیست برچسب های مجاز

پیکربندی ماژول AndroidTest.xml یا بیشتر می‌تواند فقط حاوی برچسب‌های XML زیر باشد: target_preparer ، multi_target_preparer ، test و metrics_collector .

اگرچه این لیست محدود کننده به نظر می رسد، اما به شما امکان می دهد دقیقاً نیازهای راه اندازی ماژول تست و اجرای آزمایش را تعریف کنید.

توجه: در صورت نیاز به تجدید نظر در تگ های مختلف، پیکربندی Tradefed XML را ببینید.

اشیایی مانند build_provider یا result_reporter اگر بخواهند از داخل پیکربندی ماژول اجرا شوند یک ConfigurationException ایجاد می کنند. این به معنای اجتناب از انتظار این است که این اشیا در واقع برخی از وظایف را از داخل یک ماژول انجام دهند.

نمونه پیکربندی ماژول

<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <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>

این پیکربندی آزمایشی را توصیف می‌کند که نیاز به نصب CtsGestureTestCases.apk دارد و ابزار دقیقی را در برابر بسته android.gesture.cts اجرا می‌کند.

تگ های گنجاندن <include> و <template-include>

استفاده از <include> و <template-include> در تنظیمات ماژول ممنوع است. آنها تضمین نمی شوند که همانطور که انتظار می رود کار کنند.

مورد ویژه برای برچسب metrics_collector

metrics_collector مجاز است اما به کلاس FilePullerLogCollector محدود می شود تا یک فایل یا دایرکتوری معینی را مشخص کند که برای ماژول کشیده و ثبت شود. اگر گزارش‌ها را در یک مکان خاص رها می‌کنید و می‌خواهید به طور خودکار آنها را بازیابی کنید، مفید است.

پیکربندی مثال:

<configuration description="Config for CTS UI Rendering test cases">
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsUiRenderingTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.uirendering.cts" />
        <option name="runtime-hint" value="11m55s" />
        <option name="runner" value="android.uirendering.cts.runner.UiRenderingRunner" />
        <option name="isolated-storage" value="false" />
    </test>

    <!-- Collect the files in the dump directory for debugging -->
    <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
        <option name="directory-keys" value="/sdcard/UiRenderingCaptures" />
        <option name="collect-on-run-ended-only" value="true" />
    </metrics_collector>
</configuration>

در مورد اطلاعات ساخت یا دانلودها چطور؟

تعریف تگ های مجاز ممکن است این تصور نادرست را ایجاد کند که یک ماژول هیچ اطلاعات ساختی را دریافت نمی کند. این درست نیست .

اطلاعات ساخت از راه‌اندازی در سطح مجموعه ارائه می‌شود و توسط همه ماژول‌های مجموعه به اشتراک گذاشته می‌شود. این اجازه می دهد تا یک راه اندازی در سطح بالا برای مجموعه به منظور اجرای تمام ماژول های بخش مجموعه.

به عنوان مثال، به جای اینکه هر ماژول مجموعه تست سازگاری (CTS) به طور جداگانه اطلاعات دستگاه، انواع و غیره را پرس و جو کند، تنظیم سطح مجموعه CTS ( cts.xml ) یک بار این کار را انجام می دهد و هر ماژول در صورت درخواست آن اطلاعات را دریافت می کند.

برای اینکه اشیا در یک ماژول اطلاعات ساخت را دریافت کنند، باید مانند پیکربندی معمول Tradefed عمل کنند: رابط IBuildReceiver را برای دریافت IBuildInfo پیاده سازی کنند. برای جزئیات بیشتر به تست با دستگاه مراجعه کنید.

فیلدهای فراداده

تعداد زیادی از ماژول های تست شامل برخی از مشخصات metadata است که هر کدام هدف منحصر به فردی دارند.

مثال:

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

جزء

فراداده component مؤلفه عمومی Android را که ماژول قصد آزمایش آن را دارد، توصیف می کند. هیچ تاثیر مستقیمی بر اجرای آزمون ندارد. در درجه اول برای اهداف سازمانی استفاده می شود.

فهرست به‌روز مؤلفه‌های مجاز برای CTS در CtsConfigLoadingTest موجود است. اگر مؤلفه‌ای که وجود ندارد به یک ماژول CTS اضافه شود، این آزمون در ارسال پیش‌فرض با شکست مواجه می‌شود.

می‌توانید با استفاده از module-metadata-include-filter و module-metadata-exclude-filter یک مجموعه اجرا را بر اساس مؤلفه‌ها فیلتر کنید.

مثال:

  --module-metadata-include-filter component framework

این مثال فقط ماژول تست مشروح شده با جزء framework اجرا می کند.

پارامتر

فراداده parameter اطلاعاتی است و بر اجرای آزمون تأثیر می گذارد. مشخص می‌کند که ماژول تست روی کدام حالت اندروید اعمال می‌شود. در این حالت، حالت‌ها به حالت‌های سطح بالای اندروید، مانند instant apps ، secondary users یا different abis محدود می‌شوند.

در طول اجرای مجموعه، اگر حالت برای تست اعمال شود، چندین تغییر از ماژول تست بر اساس حالت ایجاد می شود. هر کدام از تغییرات تست های مشابهی را انجام می دهند اما در حالت های مختلف.

  • instant_app : آزمایش‌هایی را ایجاد کنید که فایل‌های APK را به‌عنوان برنامه‌های فوری نصب می‌کنند.
  • multi_abi : برای هر ABI که توسط دستگاه پشتیبانی می شود، تنوعی از تست ها ایجاد کنید.
  • secondary_user : تنوعی از آزمایش‌ها ایجاد کنید که فایل‌های APK را نصب می‌کنند و آزمایش‌ها را به‌عنوان کاربر ثانویه اجرا می‌کنند.

جمع آوری متریک و پس پردازش برای ماژول های تست عملکرد

برای ماژول های تست عملکرد، سطح ماژول metrics_collector و metric_post_processor مجاز هستند زیرا برای تست های عملکرد ضروری هستند. کلکتورهای متریک سطح ماژول و پس پردازشگرها می توانند ماژول خاص باشند. توصیه نمی شود که پس پردازشگرها را هم در سطح بالا و هم در سطح ماژول مشخص کنید.

پیکربندی ماژول تست عملکرد باید شامل متادیتای test-type با performance مقدار باشد، مانند: xml <option name="config-descriptor:metadata" key="test-type" value="performance" /> بدون این، در صورت آزمایش پیکربندی شامل metric_collector غیر از FilePullerLogCollector یا هر metric_post_processor است، آزمایش در ارسال پیش‌فرض با شکست مواجه می‌شود.

نمونه پیکربندی ماژول تست عملکرد:

<configuration description="Runs sample performance test.">
    <!-- Declare as a performance test module -->
    <option name="config-descriptor:metadata" key="test-type" value="performance" />
    <option name="test-tag" value="hello-world-performance-test" />
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="class" value="android.test.example.helloworldperformance.HelloWorldPerformanceTest" />
    </test>
    <!-- Add module-level post processor MetricFilePostProcessor -->
    <metric_post_processor class="com.android.tradefed.postprocessor.MetricFilePostProcessor">
        <option name="aggregate-similar-tests" value="true" />
        <option name="enable-per-test-log" value="false" />
    </metric_post_processor>
</configuration>