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