عندما تكون مجموعة الاختبارات كبيرة أو يصبح وقت التنفيذ طويلاً، نتيح إمكانية تقسيم الاختبارات على عدة أجهزة، وهو ما يُعرف باسم التقسيم.
يتضمّن التقسيم إلى أجزاء متطلبات أساسية يجب استيفاؤها لكي يتيح مشغّل الاختبار التقسيم إلى أجزاء.
تتيح غالبية أدوات تشغيل الاختبار الرئيسية التجزئة، لذا لا يلزم اتّخاذ أي إجراءات إضافية. تتوفّر ميزة التقسيم في الاختبارات التالية: اختبارات الأجهزة، والاختبارات المستندة إلى جانب المضيف، وGTest.
هناك نوعان من التقسيم الذي نتيحه في Tradefed: التقسيم المحلي والموزّع. تتشارك هذه الأنواع بعض التشابهات، لذا توضّح هذه الصفحة الخصائص المشتركة ثم التفاصيل الخاصة بكل نوع.
الخصائص الشائعة
يفترض كلا النوعين من التقسيم الخصائص نفسها من مشغّلات الاختبارات: يجب أن تكون الأجزاء مستقلة وحتمية. تتمثل الخطوة الأولى في كلتا طريقتَي التقسيم في إنشاء قائمة كاملة ومرتّبة بالاختبارات، ثم تقسيمها إلى مجموعات أو أجزاء مختلفة.
ويكمن الاختلاف الرئيسي بين أشكال التقسيم في طريقة تنفيذ الاختبارات. يمكنك الاطّلاع على مزيد من التفاصيل في الأقسام أدناه.
التقسيم المحلي
التجزئة المحلية تعني أنّ جميع الأجهزة المشاركة في تنفيذ الاستدعاء المجزّأ مرتبطة بالمضيف المادي نفسه.
التنفيذ
تستفيد عملية التقسيم المحلية من جميع الأجهزة المتصلة بالمضيف نفسه من خلال إنشاء مجموعة من الاختبارات التي يجب تنفيذها، ويقوم كل جهاز باستطلاع الاختبارات عندما يكون متاحًا (أي بعد الانتهاء من الاختبار السابق). ويؤدي ذلك إلى تحسين استخدام الجهاز. ويُعرف أيضًا باسم التقسيم الديناميكي.
الخيارات
--shard-count XX
التقسيم الموزَّع
التجزئة الموزّعة تعني أنّ جميع الأجهزة المشاركة في تنفيذ الاستدعاء المجزّأ يمكن أن تكون في أي مكان ومتصلة بمضيفين ماديين مختلفين.
التنفيذ
يحدث التقسيم الموزّع عند إنشاء قائمة الاختبارات، ولا يتم تنفيذ سوى الجزء المطلوب حاليًا من المحتوى في كل جزء. لذا، تنشئ جميع الأجزاء الموزّعة القائمة نفسها في البداية، ثم تنفّذ مجموعة فرعية حصرية بشكل متبادل منها، ما يؤدي إلى تنفيذ جميع الاختبارات.
الخاصية الرئيسية لهذا النموذج هي أنّ الأجزاء لا تعرف بعضها البعض على الإطلاق ويمكن أن تفشل بشكل مستقل.
العيب الرئيسي هو أنّ طول الجزء ليس متوازنًا بالضرورة، لأنّه لا يمكننا التنبؤ مسبقًا بوقت تشغيل كل اختبار في كل جزء. يتم التوزيع بحيث يكون هناك عدد متساوٍ تقريبًا من حالات الاختبار في كل جزء.
الخيارات
--shard-count XX --shard-index XX
تقسيم الرموز المميزة
يمكن استخدام تقسيم الرموز المميزة مع التقسيم المحلي فقط. لا يمكن استخدام العلامة في حالات استخدام التقسيم غير المحلي. في بعض الأحيان، يحتوي أحد الأجهزة المشاركة في التقسيم على موارد خاصة لا تتوفّر في الأجهزة الأخرى، مثل شريحة SIM. قد لا تعمل بعض الاختبارات إلا عند توفّر هذا المورد الخاص، وقد يتعذّر إجراؤها في حال عدم توفّره.
تقسيم الرموز المميزة هو الحلّ الذي نقدّمه لحالات الاستخدام هذه. يمكن لوحدات الاختبار تحديد المورد الخاص الذي تحتاج إليه في AndroidTest.xml، كما يوجّه Tradefed الاختبارات إلى جهاز يتضمّن المورد.
إعدادات XML
<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
يتطابق value الرمز المميّز مع TokenProperty في Tradefed، ويرتبط بمعالج في TokenProviderHelper.
يتيح ذلك تشغيل وحدات الاختبار على الأجهزة التي يمكنها تنفيذ الاختبارات بشكل صحيح.
ماذا لو لم تتمكّن أي أجهزة من إجراء الاختبار؟
إذا لم تتوفّر أي أجهزة تحتوي على المورد المطابق لوحدة الاختبار، سيتم إيقاف وحدة الاختبار وتخطّيها لأنّه لا يمكن تنفيذها بشكل صحيح.
على سبيل المثال، إذا طلبت وحدة اختبار تشغيل شريحة SIM ولكن لم تتضمّن أي أجهزة شريحة SIM، ستتعذّر وحدة الاختبار.
التنفيذ
مرِّر علامة الميزة هذه إلى سطر الأوامر الرئيسي في Tradefed:
--enable-token-sharding