إعدادات الاختبار المعقّدة

قد تتطلّب بعض وحدات الاختبار خطوات إعداد وإزالة مخصّصة لا يمكن تنفيذها ضمن نموذج الاختبار نفسه. تشمل الأمثلة المعتادة ما يلي:

  • تثبيت حِزم APK أخرى (بالإضافة إلى حزمة APK التجريبية)
  • إرسال بعض الملفات إلى الجهاز
  • تنفيذ الأوامر (مثل adb shell pm ...)

في الماضي، تلجأ فرق المكونات عادةً إلى كتابة اختبار من جانب المضيف أداء هذه المهام، مما يتطلب فهمًا لسياسة الاتحاد التجاري وعادةً ما يزيد من تعقيد وحدة الاختبار .

وبالاستعانة بخدمات CTS، قدَّمنا مفهوم ضبط وحدة الاختبار لدعم مثل هذه المهام، يمكن تحقيق قائمة المهام الشائعة أعلاه من خلال بضعة أسطر من . للحصول على أقصى قدر من المرونة، يمكنك أيضًا تنفيذ معالج ملف التوجيه الخاص بك، كما هو محدّد في ITargetPreparer أو ITargetCleaner، وضبطه لاستخدامه في إعدادات وحدة الاختبار الخاصة بك.

ملف ضبط وحدة الاختبار هو ملف XML مطلوب تتم إضافته إلى مجلد مصدر الوحدة العلوي ، ويُسمى "AndroidTest.xml". يتّبع ملف XML تنسيق ملف الضبط المستخدَم من قِبل حِزمة اختبار التشغيل الآلي في Trade Federation. في الوقت الحالي، العلامتان الرئيسيتان اللتان تتم معالجتهما من خلال إعدادات وحدة الاختبار هما علامتا "target_preparer" و "test".

جهات إعداد مستهدفة

تحدد علامة "target_preparer"، كما يوحي الاسم، أداة تحضير الهدف. (يُرجى الاطّلاع على ITargetPreparer) توفر طريقة إعداد يتم استدعاؤها قبل تنفيذ وحدة الاختبار للاختبار؛ وإذا كانت الفئة المشار إليها في علامة "target_preparer" أيضًا implements ITargetCleaner، فسيتم استدعاء طريقة تقسيمها بعد الانتهاء من وحدة الاختبار.

لاستخدام إعدادات الوحدة المشتركة المضمنة، أضِف ملفًا جديدًا باسم AndroidTest.xml على بمجلد المستوى الأعلى لوحدة الاختبار، وأقوم بتعبئته بما يلي المحتوى:

<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>

كمثال، يمكننا إضافة علامات الخيارات التالية (في التعليق "insert" أعلاه):

    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put secure accessibility_enabled 1" />
        <option name="teardown-command" value="settings put secure accessibility_enabled 0" />
    </target_preparer>

ستضبط الخيارات مجموعة الاختبار على:

  1. قبل استدعاء الوحدة التجريبية، نفِّذ أمر واجهة الأوامر "الإعدادات وضع آمن" إمكانية الوصول: 1 بوصة على الجهاز
  2. بعد الانتهاء من وحدة الاختبار، نفِّذ أمر "الإعدادات" (الإعدادات) في "الإعدادات الآمنة" (settings mode) Accessibility_enabled 0"

في هذا المثال بالذات، يتم تمكين/إيقاف إمكانية الوصول قبل/بعد على تنفيذ وحدة الاختبار على التوالي. بعد عرض مثال بسيط، من الضروري تغطية مزيد من التفاصيل حول كيفية استخدام علامة "الخيار". كما هو موضّح أعلاه، يمكن أن تحتوي العلامة على سمتَين: الاسم والقيمة. يجب أن تشير سمة الاسم إلى أحد الخيارات التي يقدمها الجاهز.

يعتمد الغرض الدقيق لحقل القيمة على كيفية تعريف المُعِدّ الخيار: يمكن أن يكون سلسلة أو رقمًا أو قيمة منطقية أو حتى مسار ملف. في ما يلي ملخّص لجهات إعداد الاستهداف الثلاثة الشائعة:

  • اسم الصف: PushFilePreparer

    • الاسم المختصر: push-file
    • الدالة: يدفع الملفات العشوائية ضمن مجلد حالة الاختبار إلى الوجهة على الجهاز
    • ملاحظات:
      • يمكن لأداة التجهيز هذه الانتقال من مجلد إلى آخر، أو من ملف إلى ملف؛ الذي/التي هو أنه لا يمكنك وضع ملف ضمن مجلد على الجهاز: فيجب حدد اسم الملف الوجهة ضمن هذا المجلد أيضًا
    • الخيارات:
      • push-file: ملف push-spec، الذي يحدّد الملف المحلي بالمسار الذي يجب دفعه على الجهاز يمكن تكراره. في حال ضبط إعدادات ملفات متعددة لدفعها إلى المسار البعيد نفسه، سيتم دفع الملف الأحدث.
      • push: (ميزة متوقّفة نهائيًا) مواصفات دفع، بتنسيق '/path/to/srcfile.txt->/path/to/destfile.txt' أو '/path/to/srcfile.txt->/path/to/destdir/'. يمكن تكرارها. قد يكون هذا المسار نسبيًا لدليل وحدة الاختبار أو دليل out نفسه.
      • post-push: أمر يتم تشغيله على الجهاز (باستخدام "adb shell <your command>") بعد محاولة إجراء كل عمليات الدفع. معدّل الاستخدام في هذه الحالة، استخدام أمر chmod للحصول على الأذونات
  • اسم الفئة: InstallApkSetup

    • الاسم القصير:install-apk
    • الدالة: تدفع ملفات apk العشوائية إلى الوجهة على جهاز
    • الخيارات:
      • اسم-الملف-الاختباري: اسم حزمة APK المطلوب تثبيتها على الجهاز.
      • وسيطة التثبيت: وسيطات إضافية يتم تمريرها إلى الأمر pm install ، بما في ذلك الشرطة المائلة البادئة، مثل "-d". يمكن تكرارها
  • اسم الفئة: RunCommandTargetPreparer

    • الاسم المختصر: run-command
    • دالة: تنفِّذ أوامر قشرة عشوائية قبل تنفيذ اختبار الوحدة أو بعده
    • الخيارات:
      • run-command: أمر shell في أداة adb المطلوب تنفيذه يمكن تكرارها
      • teardown-command: أمر shell في adb المطلوب تنفيذه خلال مرحلة الإزالة قد يتم تكرار الإجراء

حصة الاختبار

فئة الاختبار هي فئة الاتحاد التجاري لاستخدامها لتنفيذ الاختبار.

<test class="com.android.tradefed.testtype.AndroidJUnitTest">
  <option name="package" value="android.test.example.helloworld"/>
  <option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>

في ما يلي ثلاث فئات اختبار شائعة:

  • اسم الفئة: GTest

    • الاسم المختصر: gtest
    • function: اختبار يُشغِّل حزمة اختبار أصلية على جهاز معيّن.
    • الخيارات:
      • Native-test-device-path: هو المسار على الجهاز الذي توجد فيه الاختبارات الأصلية.
  • اسم الصف: instrumentationTest

    • الاسم المختصر: الأداة
    • الوظيفة: اختبار يشغِّل حزمة اختبار أدوات على جهاز معيّن
    • الخيارات:
      • package:اسم حزمة البيان لتطبيق اختبار Android المطلوب تشغيله.
      • class:اسم فئة الاختبار المطلوب تشغيله.
      • method:اسم طريقة الاختبار المطلوب تنفيذها.
  • اسم الفئة: AndroidJUnitTest

    • function: اختبار يُشغِّل حِزمة اختبار أداة قياس الأداء على جهاز معيّن باستخدام android.support.test.runner.AndroidJUnitRunner وهذه هي الطريقة الرئيسية لتنفيذ اختبار أداة قياس الأداء.