ماژول کمکی تعامل دستگاه CTS

برای Android 11 یا بالاتر، ماژول‌های کمکی تعامل دستگاه مجموعه تست سازگاری (CTS) به شما امکان می‌دهند نحوه تعامل برخی آزمایش‌های CTS با رابط کاربری (UI) در یک دستگاه خاص را سفارشی کنید. این بدان معناست که اقداماتی مانند جایگزینی یک عنصر UI که توسط سند تعریف سازگاری Android (CDD) یا اسناد API پوشش داده نمی‌شود، می‌تواند در حالی انجام شود که هنوز CTS را رد می‌کنید.

OEM هایی که می خواهند رابط کاربری Android را در طول توسعه محصول سفارشی کنند و باید CTS را پاس کنند، ممکن است بتوانند ماژول های کمکی را پیاده سازی کنند. اگر از پیاده سازی پیش فرض اندروید استفاده می کنید، دیگر نیازی به کار اضافی نیست.

پیاده سازی ماژول های کمکی

الزامات برای سفارشی کردن رابط کاربری

ماژول‌های CDD یا Mainline را برای هر گونه نیاز UI بررسی کنید. اگر UI مورد نظر توسط ماژول های CDD یا Mainline پوشش داده شود، آن UI را نمی توان سفارشی کرد.

اگر تست‌های CTS که با رابط کاربری مورد نظر تعامل دارند از چارچوب کمکی استفاده نکنند، آن رابط کاربری را نمی‌توان سفارشی کرد. برای تبدیل ماژول تست قبل از تغییر رابط کاربری، با صاحب آزمون کار کنید.

در غیر این صورت، می توانید UI را سفارشی کنید.

گردش کار پیاده سازی

  1. UI را در صورت نیاز برای محصول خاص خود سفارشی کنید.
  2. ماژول‌های کمکی AOSP موجود را به‌عنوان زیر کلاس‌هایی برای ماژول‌های تست CTS که نیاز به تعامل با UI دارند، تعیین کنید. تعاملات لازم را به طور مناسب برای رابط کاربری سفارشی جایگزین کنید. تعویض ها بسته به نوع تغییرات متفاوت است.
    • زیر کلاس های OEM در یک بسته OEM مانند com.[oem].cts.helpers هستند.
    • هر زیر کلاس OEM با یک پیشوند مشترک نامگذاری می شود که آن را از اجرای AOSP که دارای پیشوند Default است متمایز می کند.
  3. کمک‌کنندگان را در یک APK با پیروی از این کنوانسیون‌های دونده آزمایشی بسازید.
    • Android.bp باید android_test_helper_app با همان نام بسته موجود اعلام کند.
    • AndroidManifest.xml برای APK باید یک ویژگی فراداده به نام interaction-helpers-prefix با مقدار پیشوند کلاس انتخاب شده در نقطه گلوله قبلی اعلام کند.
    • برنامه باید به cts-helpers-core ، cts-helpers-interfaces و com.android.cts.helpers.aosp بستگی داشته باشد. اگر کمک‌کنندگان OEM به طور کامل همه رابط‌های مرتبط را پیاده‌سازی کنند، com.android.cts.helpers.aosp اختیاری است.
  4. ویژگی ro.vendor.cts_interaction_helper_packages را در تصویر دستگاه تنظیم کنید تا نام APK را درج کند. اگر می‌خواهید پیاده‌سازی‌های کمکی خود را در چندین APK جدا کنید، این ویژگی می‌تواند حاوی فهرستی از بسته‌ها باشد که با کولون جدا شده‌اند.
  5. هنگام اجرای Tradefed برای CTS، مطمئن شوید که APK در دایرکتوری testcases موجود است. در صورت نیاز، تأیید کنید که کلاس پیاده سازی کمکی مورد انتظار با بررسی پیام های logcat انتخاب شده است.
  6. اختیاری، اما به شدت توصیه می شود: پیاده سازی کمکی خود را به AOSP ارسال کنید یا آن را برای آزمایش شخص ثالث در دسترس قرار دهید.

نمونه اجرای کمکی

به عنوان مثال، CtsPrintTestCases انتظار کمکی با رابط تعریف شده در ICtsPrintHelper دارد. پیاده سازی AOSP com.android.cts.helpers.aosp.DefaultCtsPrintHelper نامیده می شود.

اگر رابط کاربری چاپ را سفارشی کنید، می توانید com.oem.cts.helpers.OemCtsPrintHelper ایجاد کنید که زیر کلاس DefaultCtsPrintHelper است. android_test_helper_app در Android.bp com.oem.cts.helpers نامیده می شود که com.oem.cts.helpers.apk را تولید می کند و interaction-helpers-prefix به عنوان Oem در AndroidManifest.xml اعلام می کند.

ویژگی دستگاه ro.vendor.cts_interaction_helper_packages روی com.oem.cts.helpers تنظیم شده است.

پیاده سازی های مرجع

پیاده سازی های مرجع شامل رابط های تحت cts/libs/helpers و کمک های پیش فرض AOSP تحت cts/helpers هستند. رابط سطح بالا در cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java مستند شده است.

برای اتصال تست CTS به کمک‌کننده‌های آن، صاحبان آزمون می‌توانند از تعریف @Rule مستند شده در cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java استفاده کنند.

هر ماژول CTS که از چارچوب و رفتار کمکی مورد انتظارش استفاده می کند، در یک رابط تعریف شده در زیر cts/libs/helpers/core/src/com/android/cts/helpers مستند شده است.

اجرای تست های CTS

تست بدون کمک

به غیر از یک ویژگی، گزینه تست بدون کمک کننده در زمان اجرا در دستگاه وجود ندارد، اما به صورت اختیاری نحوه تعامل تست های CTS با دستگاه را تغییر می دهد. اگر نیاز به اجرای CTS بدون پیاده سازی کمکی دارید، دو گزینه دارید:

  • ویژگی ro.vendor.cts_interaction_helper_packages را از دستگاه حذف کنید. این مانع از استفاده کامل از کمک کننده ها در آن ساخت می شود.
  • قبل از اجرای CTS، APK کمکی را از دایرکتوری testcases حذف کنید. تا زمانی که APK به testcases بازیابی نشود، این کمک‌کننده‌ها را از استفاده توسط هر اجرا جلوگیری می‌کند.

می‌توانید تنظیمات پیش‌فرض را با آرگومان‌های Tradefed و کنترل ویژگی ro.vendor.cts_interaction_helper_packages تغییر دهید، جایی که APK کمکی از آنجا بارگیری می‌شود.

برای مقادیر یا محدوده های مورد انتظار برای هر یک از تنظیمات موجود به موارد زیر مراجعه کنید.

  • ro.vendor.cts_interaction_helper_packages یک رشته جدا شده با کولون حاوی نام بسته است. می‌تواند هر مقداری را که انتخاب بسته معتبری برای پیاده‌سازی کمکی OEM است، بگیرد.
  • cts-tradefed آرگومان device-interaction-helper:property-name را می پذیرد که به طور موقت ویژگی مورد انتظار را برای یک اجرای آزمایشی تغییر می دهد، مانند --module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp' . مقدار نام ویژگی می تواند هر خاصیتی باشد که روی دستگاه تنظیم می کنید. مقدار ویژگی از همان محدودیت هایی پیروی می کند که ویژگی ro.vendor.cts_interaction_helper_packages شرح داده شده در بالا.

تست با سفارشی سازی

به‌طور پیش‌فرض، پیاده‌سازی‌های مرجع CTS را در اندروید استوک ارسال می‌کنند. بررسی کنید که پیاده‌سازی‌های شریک CTS را با سفارشی‌سازی‌های رابط کاربری تأیید کنند. هر کدام از ماژول‌های CTS را که UI یا ویژگی‌هایی را که سفارشی کرده‌اید پوشش می‌دهند، اجرا کنید.

برخی از ماژول‌ها یا کمک‌کنندگان CTS ممکن است هنوز از برخی سفارشی‌سازی‌ها پشتیبانی نکنند.

  • یک ماژول CTS که با رابط کاربری که می‌خواهید سفارشی کنید در تعامل است، ممکن است از چارچوب کمکی استفاده نکند. انتظار می رود که ماژول های CTS بر اساس تقاضا و اولویت های صاحب آزمون به چارچوب کمکی تبدیل شوند. درخواست‌های تبدیل را در مراحل اولیه انجام دهید تا اطمینان حاصل کنید که تبدیل طبق برنامه انجام می‌شود، مشابه درخواست تغییرات CTS برای پشتیبانی از ویژگی‌های برنامه‌ریزی شده شما.
  • توابع ارائه شده توسط یک کمک کننده موجود ممکن است به طور کامل به سفارشی سازی هایی که می خواهید انجام دهید پاسخ ندهند. توابع کمکی باید وابستگی های UI را انتزاع کنند. اگر یک تابع کمکی به طور غیرمستقیم وابستگی به UI داشته باشد، می‌توان آن را مشابه باگ‌های CTS درمان کرد.