تكوين اختبارات ACTS

توضح هذه الصفحة كيفية تكوين اختبارات ACTS.

مصادر التكوين

تحتوي مجموعة اختبار Android Comms (ACTS) على ثلاثة مصادر رئيسية للتكوين:

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

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

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

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

متغيرات التكوين المطلوبة

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

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

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

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

دروس اختبار الأفعال

يجب أن تعرف 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 repo واحد، ولديهم إعداد مشابه لهذا:

# 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 من دليل 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"
}

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

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

حالات خاصة لأجهزة الأندرويد

لتسهيل التطوير عندما تريد أن يكون لديك أجهزة متعددة بخصائص مختلفة متاحة، 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 .