برای اندروید ۱۱ یا بالاتر، ماژولهای کمکی تعامل دستگاه Compatibility Test Suite (CTS) به شما امکان میدهند نحوه تعامل برخی از تستهای CTS با رابط کاربری (UI) را در یک دستگاه خاص سفارشی کنید. این بدان معناست که اقداماتی مانند جایگزینی یک عنصر رابط کاربری که توسط سند تعریف سازگاری اندروید (CDD) یا اسناد API پوشش داده نمیشود، میتوانند در حین عبور از CTS انجام شوند.
تولیدکنندگان اصلی تجهیزات (OEM) که میخواهند رابط کاربری اندروید را در طول توسعه محصول سفارشیسازی کنند و نیاز به گذراندن CTS دارند، ممکن است بتوانند ماژولهای کمکی را پیادهسازی کنند. اگر از پیادهسازی پیشفرض اندروید استفاده کنید، هیچ کار اضافی لازم نیست.
پیادهسازی ماژولهای کمکی
الزامات سفارشیسازی رابط کاربری
ماژولهای CDD یا Mainline را برای هرگونه نیاز رابط کاربری بررسی کنید. اگر رابط کاربری مورد نظر توسط ماژولهای CDD یا Mainline پوشش داده میشود، آن رابط کاربری قابل سفارشیسازی نیست.
اگر تستهای CTS که با رابط کاربری مورد نظر تعامل دارند از چارچوب کمکی استفاده نکنند، آن رابط کاربری قابل سفارشیسازی نیست. قبل از تغییر رابط کاربری، با مالک تست برای تبدیل ماژول تست همکاری کنید.
در غیر این صورت، میتوانید رابط کاربری را شخصیسازی کنید.
گردش کار پیادهسازی
- رابط کاربری را در صورت نیاز برای محصول خاص خود سفارشی کنید.
- ماژولهای کمکی AOSP موجود را به عنوان زیرکلاسهایی برای ماژولهای آزمایشی CTS که نیاز به تعامل با رابط کاربری دارند، تعیین کنید. تعاملات لازم را به طور مناسب برای رابط کاربری سفارشی جایگزین کنید. جایگزینیها بسته به نوع تغییرات متفاوت هستند.
- زیرکلاسهای 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 به helper های آن، دارندگان تست میتوانند از تعریف @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را از دستگاه حذف کنید. این کار مانع از استفاده کامل از helperها در آن ساخت میشود. - قبل از اجرای 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 که رابط کاربری یا ویژگیهای سفارشیسازی شده شما را پوشش میدهند، اجرا کنید.
ممکن است برخی از ماژولها یا کمککنندههای CTS هنوز از برخی سفارشیسازیها پشتیبانی نکنند.
- یک ماژول CTS که با رابط کاربری که میخواهید سفارشیسازی کنید، تعامل دارد، ممکن است از چارچوب کمکی استفاده نکند. انتظار میرود ماژولهای CTS بر اساس تقاضا و اولویتهای مالک تست، به چارچوب کمکی تبدیل شوند. درخواستهای تبدیل را در اوایل فرآیند ثبت کنید تا اطمینان حاصل شود که تبدیل طبق برنامه انجام میشود، مشابه درخواست تغییرات CTS برای پشتیبانی از ویژگیهای برنامهریزی شده شما.
- توابع ارائه شده توسط یک تابع کمکی موجود ممکن است به طور کامل سفارشیسازیهایی را که میخواهید انجام دهید، انجام ندهند. توابع کمکی باید وابستگیهای رابط کاربری را حذف کنند. اگر یک تابع کمکی به طور غیرمستقیم وابستگی رابط کاربری داشته باشد، میتوان با آن مشابه باگهای CTS رفتار کرد.