وحدة مساعدة التفاعل مع الجهاز في CTS

في الإصدار 11 من Android أو الإصدارات الأحدث، تتيح لك وحدات المساعدة في التفاعل مع الأجهزة ضمن مجموعة أدوات اختبار التوافق (CTS) تخصيص كيفية تفاعل اختبارات معيّنة من مجموعة أدوات اختبار التوافق (CTS) مع واجهة المستخدم على جهاز معيّن. ويعني ذلك أنّه يمكن تنفيذ الإجراءات، مثل استبدال عنصر واجهة مستخدم غير مشمول في مستند تعريف التوافق مع Android (CDD) أو مستندات واجهات برمجة التطبيقات، مع مواصلة اجتياز مجموعة أدوات اختبار التوافق.

يمكن لمصنّعي المعدّات الأصلية الذين يريدون تخصيص واجهة مستخدم Android أثناء تطوير المنتجات ويحتاجون إلى اجتياز اختبار CTS تنفيذ وحدات المساعدة. إذا كنت تستخدم عملية التنفيذ التلقائية لنظام التشغيل Android، ليس عليك اتّخاذ أي إجراء إضافي.

تنفيذ الوحدات المساعِدة

متطلبات تخصيص واجهة المستخدم

راجِع وحدات CDD أو Mainline بحثًا عن أي متطلبات لواجهة المستخدم. إذا كانت واجهة المستخدم المطلوبة تغطيها وحدات CDD أو Mainline، لا يمكن تخصيص واجهة المستخدم هذه.

إذا كانت اختبارات CTS التي تتفاعل مع واجهة المستخدم المطلوبة لا تستخدِم إطار عمل المساعد، لا يمكن تخصيص واجهة المستخدم هذه. تعاون مع مالك الاختبار لتحويل وحدة الاختبار قبل أن يتم تغيير واجهة المستخدم.

بخلاف ذلك، يمكنك تخصيص واجهة المستخدم.

سير العمل الخاص بالتنفيذ

  1. يمكنك تخصيص واجهة المستخدم حسب الحاجة لمنتجك المحدّد.
  2. حدِّد وحدات المساعدة الحالية في AOSP كفئات فرعية لاختبار CTS الوحدات التي تحتاج إلى التفاعل مع واجهة المستخدم. استبدِل التفاعلات اللازمة بطريقة مناسبة لواجهة المستخدم المخصّصة. تختلف عمليات الاستبدال تبعًا لنوع التغييرات.
    • تكون فئات المصنّعين الأصليين الفرعية في حزمة المصنّع الأصلي، مثل com.[oem].cts.helpers.
    • تتم تسمية كل فئة فرعية من المصنّعين الأصليين للأجهزة باستخدام بادئة شائعة تميّزها عن عملية تنفيذ 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. إذا كانت أدوات المساعدة الخاصة بصانعي الأجهزة الأصليين تنفِّذ بالكامل جميع الواجهات ذات الصلة، يكون com.android.cts.helpers.aosp اختياريًا.
  4. اضبط السمة ro.vendor.cts_interaction_helper_packages في صورة الجهاز لتضمين اسم حزمة APK. إذا كنت بحاجة إلى فصل عمليات تنفيذ مساعِد على مستوى حِزم APK متعددة، يمكن أن يحتوي هذا الحقل على قائمة بحِزم مفصولة بنقطتَين رأسيتين.
  5. تأكَّد من توفّر حزمة APK في دليل testcases عند تشغيل Tradefed لاختبار CTS. إذا لزم الأمر، تأكَّد من اختيار فئة تنفيذ المساعدة المُتوقّعة من خلال فحص رسائل 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 من الجهاز. ويؤدي ذلك إلى منع استخدام العناصر المساعِدة في هذا الإصدار بالكامل.
  • أزِل حزمة APK المساعِدة من الدليل testcases قبل تشغيل CTS. ويؤدي ذلك إلى منع استخدام المساعدين من خلال أي عمليات تشغيل إلى أن تتم استعادة حزمة APK إلى testcases.

يمكنك تغيير الإعدادات التلقائية باستخدام مَعلمات Tradefed وعنصر التحكّم في الموقع ro.vendor.cts_interaction_helper_packages، وهو المكان الذي يتم منه تحميل APK المساعد.

اطّلِع على ما يلي لمعرفة القيم أو النطاقات المتوقّعة لكلّ من الإعدادات المتاحة.

  • ro.vendor.cts_interaction_helper_packages هي سلسلة مفصولة بنقطتَين عموديتَين تحتوي على أسماء الحِزم. يمكن أن تأخذ أي قيمة تمثل خيارًا صالحًا لتطبيق مساعدة المصنّع الأصلي للجهاز.
  • يقبل 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 على نظام Android الأساسي تلقائيًا. تأكَّد من أنّ عمليات التنفيذ التي يجريها الشركاء تجتاز اختبار CTS مع تخصيصات واجهة المستخدم. شغِّل أيّ من وحدات CTS التي تغطي واجهة المستخدم أو الميزات التي خصّصتها.

قد لا تتيح بعض وحدات أو أدوات CTS بعض عمليات التخصيص بعد.

  • قد لا تستخدم وحدة CTS التي تتفاعل مع واجهة المستخدم التي تريد تخصيصها إطار عمل المساعد. من المتوقّع أن يتم تحويل وحدات CTS إلى إطار عمل المساعد استنادًا إلى الطلب وأولويات مالك الاختبار. قدِّم طلبات لإجراء عملية التحويل في وقت مبكر من العملية لضمان تنفيذ عملية التحويل وفقًا للجدول الزمني، تمامًا مثل طلب إجراء تغييرات على CTS لتتوافق مع الميزات المخطّط لها.
  • قد لا تعالج الدوال التي يوفّرها مساعد حالي بشكل كامل التخصيصات التي تريد إجراؤها. يجب أن تُنشئ الدوال المساعِدة محتوى مجردًا عن التبعيات المتعلّقة بواجهة المستخدم. إذا كانت وظيفة المساعدة تعتمد بشكل غير مباشر على واجهة المستخدم، يمكن التعامل مع ذلك على نحو مشابه للأعطال في CTS.