برای Android 11 یا بالاتر، ماژولهای کمکی تعامل دستگاه مجموعه تست سازگاری (CTS) به شما امکان میدهند نحوه تعامل برخی آزمایشهای CTS با رابط کاربری (UI) در یک دستگاه خاص را سفارشی کنید. این بدان معناست که اقداماتی مانند جایگزینی یک عنصر UI که توسط سند تعریف سازگاری Android (CDD) یا اسناد API پوشش داده نمیشود، میتواند در حالی انجام شود که هنوز CTS را رد میکنید.
OEM هایی که می خواهند رابط کاربری Android را در طول توسعه محصول سفارشی کنند و باید CTS را پاس کنند، ممکن است بتوانند ماژول های کمکی را پیاده سازی کنند. اگر از پیاده سازی پیش فرض اندروید استفاده می کنید، دیگر نیازی به کار اضافی نیست.
پیاده سازی ماژول های کمکی
الزامات برای سفارشی کردن رابط کاربری
ماژولهای CDD یا Mainline را برای هر گونه نیاز UI بررسی کنید. اگر UI مورد نظر توسط ماژول های CDD یا Mainline پوشش داده شود، آن UI را نمی توان سفارشی کرد.
اگر تستهای CTS که با رابط کاربری مورد نظر تعامل دارند از چارچوب کمکی استفاده نکنند، آن رابط کاربری را نمیتوان سفارشی کرد. برای تبدیل ماژول تست قبل از تغییر رابط کاربری، با صاحب آزمون کار کنید.
در غیر این صورت، می توانید UI را سفارشی کنید.
گردش کار پیاده سازی
- UI را در صورت نیاز برای محصول خاص خود سفارشی کنید.
- ماژولهای کمکی AOSP موجود را بهعنوان زیر کلاسهایی برای ماژولهای تست CTS که نیاز به تعامل با UI دارند، تعیین کنید. تعاملات لازم را به طور مناسب برای رابط کاربری سفارشی جایگزین کنید. تعویض ها بسته به نوع تغییرات متفاوت است.
- زیر کلاس های OEM در یک بسته OEM مانند
com.[oem].cts.helpers
هستند. - هر زیر کلاس OEM با یک پیشوند مشترک نامگذاری می شود که آن را از اجرای AOSP که دارای پیشوند
Default
است متمایز می کند.
- زیر کلاس های OEM در یک بسته OEM مانند
- کمککنندگان را در یک 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
اختیاری است.
-
- ویژگی
ro.vendor.cts_interaction_helper_packages
را در تصویر دستگاه تنظیم کنید تا نام APK را درج کند. اگر میخواهید پیادهسازیهای کمکی خود را در چندین APK جدا کنید، این ویژگی میتواند حاوی فهرستی از بستهها باشد که با کولون جدا شدهاند. - هنگام اجرای Tradefed برای CTS، مطمئن شوید که APK در دایرکتوری
testcases
موجود است. در صورت نیاز، تأیید کنید که کلاس پیاده سازی کمکی مورد انتظار با بررسی پیام های logcat انتخاب شده است. - اختیاری، اما به شدت توصیه می شود: پیاده سازی کمکی خود را به 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 درمان کرد.