ضبط اختبارات ACTS

توضّح هذه الصفحة طريقة ضبط اختبارات ACTS.

مصادر الضبط

تتضمن حزمة اختبار التواصل من Android (ACTS) ثلاثة مصادر رئيسية للإعداد:

  • واجهة سطر الأوامر (CLI)
  • ملف إعداد ACTS
  • متغيرات البيئة

ويتم دمج القيم من هذه المصادر في إعدادات واحدة تُستخدم لإجراء اختبار ACTS. إذا تم تحديد القيم في عدة مواقع، يتم استبدال القيم بناءً على الترتيب أعلاه (حيث تكون الأولوية لـ CLI).

ملاحظة حول متغيرات البيئة

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

متغيّرات الضبط المطلوبة

يتطلب كل اختبار من اختبارات ACTS ضبط المتغيرات التالية.

مسارات اختبار ACTS

يتم تشغيل ACTS من موقع إدخال رئيسي واحد. ونتيجة لذلك، لا يعرف العداء موقع مسار الاختبار.

حدِّد موقع مسار الاختبار باستخدام متغيّر البيئة ACTS_TESTPATH أو باستخدام العلامة -tp/--testpaths في سطر الأوامر. يمكن أن تكون القيمة قائمة بالأدلة.

دورات اختبار ACTS

يجب أن يعرف ACTS صفوف الاختبار التي يجب إجراؤها. يمكن أن يكون تعبيرًا عاديًا أو قائمة بأسماء فئات الاختبار.

لضبط هذه القيمة، استخدِم العلامة -tc/--test_class في سطر الأوامر. تجدر الإشارة إلى أنّ هذه العلامة تقبل أيضًا قائمة بأسماء الفئات. ويجب أن تتطابق أسماء الفئات مع أسماء الملفات المقابلة لها. على سبيل المثال، يجب العثور على SampleTest في SampleTest.py.

مسار سجلّ ACTS

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

لضبط مسار السجلّ، استخدِم متغيّر بيئة ACTS_LOGPATH أو العلامة -lp/--logpath في سطر الأوامر.

مسار إعداد ACTS

لإجراء الاختبار، يجب أن يعرف نظام ACTS النسخة المتوفّرة. وتحتوي إعدادات ACTS على جميع الأجهزة في الاختبار، وأيّ معلَمات خاصة بالاختبار أو البيئة قد تكون مطلوبة. اضبط هذه القيمة في سطر الأوامر باستخدام -c/--config.

إذا كانت هناك عدة اختبارات ضمن الإعدادات، تجري ACTS الاختبارات لكل اختبار. لإجراء اختبار لمجموعة اختبار واحدة فقط في القائمة، استخدِم وسيطة سطر الأوامر -tb/--testbed <NAME>.

مثال على محطة عمل محلية

يتطور معظم مستخدمي ACTS في فرع واحد لمستودع Android، ويمتلكون إعدادًا مشابهًا لهذا الإعداد:

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='~/android/<REPO_BRANCH>/tools/test/connectivity/acts_tests/'

# On cmdline
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin

إذا كان مستخدمو ACTS يعملون في عدة فروع، غالبًا ما يشغّلون الأداة من دليل acts/framework ويستخدمون مسارًا نسبيًا لـ ACTS_TESTPATH:

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'

# On cmdline
$ cd ~/android/main/tools/test/connectivity/acts_tests/acts_contrib/
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin

ضبط إعدادات الأسِرّة الاختبارية

يوفّر ملف إعداد ACTS جميع المعلومات اللازمة لإجراء الاختبارات على الأجهزة:

{
  "testbed": {
    "my_testbed": {
      "my_testbed_value": "value"
    },
    "another_testbed": {
      "AndroidDevice": [
        "53R147"
      ]
    }
  },
  "user_parameter_1": "special environment value",
  "user_parameter_2": "other special value"
}

الوحدة الأساسية في هذه الإعدادات هي testbed. في مثال الإعدادات أعلاه، يتم إنشاء my_testbed testbed بقيمة اختبار واحدة. ويحتوي الاختبار الثاني، another_testbed، على إعداد خاص لوحدة التحكُّم تتيح الاحتفاظ بالمعلومات المتعلقة بقائمة أجهزة Android. تم حفظ هذه الأجهزة في قائمة الأجهزة ضمن self.android_devices. يُرجى العِلم بأنّه إذا لم يحدِّد الاختبار الكائن AndroidDevice، فإنّ فئة الاختبار التي تتوقع وجود كائن AndroidDevice تُحدث استثناءً. للحصول على قائمة كاملة بإعدادات وحدة التحكّم المتوافقة التي تتوفّر مع تفعيل ACTS، يمكنك الاطّلاع على القائمة على /acts/framework/acts/controllers/.

يتم تخزين جميع القيم الأخرى (التي ليست قيمًا خاصة مذكورة في القسم أعلاه) في self.user_params كقاموس. وهو مكان جيد للاحتفاظ بمعلومات البيئة أو الاختبار مثل ما إذا كانت الهواتف في بيئة بيانات تفرض تكلفة استخدام، أو المدة التي يتم خلالها جمع البيانات للاختبار.

حالات خاصة لجهاز Android

لتيسير التطوير عندما تريد امتلاك أجهزة متعددة ذات خصائص مختلفة، هناك بعض الحالات الخاصة في AndroidDevice.

تنسيق إعدادات JSON

يتم ضبط كل أزواج المفتاح/القيمة في مثال JSON التالي على كائن AndroidDevice المقابل. إذا حاولت الإعدادات استبدال مَعلمة محدّدة في السمة AndroidDevice، سيتم طرح ControllerError.

  "AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
                    {"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]

بعد ذلك، في النص البرمجي الاختباري، يمكنك استخدام دالة فلترة لاسترداد الجهاز الصحيح والوصول إلى معلمات إضافية من كائن الجهاز:

  def setup_class(self):
      self.pub = next(filter(lambda ad: ad.label == 'publisher',
                             self.android_devices))
      self.sub = next(filter(lambda ad: ad.label == 'user_parameter_1',
                             self.android_devices))

مَعلمة اختيارية

في ما يلي مَعلمة اختيارية:

  • adb_logcat_param: سلسلة ملحقة بالأمر adb logcat لجمع سجلات adb. ويتم استخدام adb logcat -v threadtime -b all تلقائيًا. وفي حال ضبط السياسة adb_logcat_param، يتم استبدال القسم "-b all". على سبيل المثال، يؤدي ضبط adb_logcat_param على -b radio إلى تغيير الأمر إلى adb logcat -v threadtime -b radio.