توضّح هذه الصفحة طريقة ضبط اختبارات 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
.