عندما تكون مجموعة النصوص الاختبارية كبيرة أو يصبح وقت التنفيذ طويلاً، نتيح إمكانية تقسيم الاختبارات على عدة أجهزة: التجزئة.
يتضمّن التقسيم إلى أجزاء متطلبات أساسية يجب توفّرها في أداة تنفيذ الاختبارات لكي تتيح التقسيم إلى أجزاء.
تتيح معظم أدوات تشغيل الاختبارات الرئيسية تقسيم الاختبارات، لذا لا يلزم اتّخاذ أي إجراءات إضافية. تتوافق هذه الاختبارات حاليًا مع التقسيم إلى أجزاء: اختبارات قياس حالة التطبيق، والاختبارات المستندة إلى جانب المضيف، و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