تصف هذه الصفحة ما يمكن ضبطه لوحدة مجموعة ( AndroidTest.xml
) عبر التجزئة والحصول على أفضل أداء للسرعة أثناء التنفيذ المستمر في المعمل. سنحاول وصف الخيارات بطريقة عامة مع منطق استخدام كل منها.
عند تشغيل مجموعة في المختبر بشكل مستمر ، عادةً ما يتم تقسيم المجموعة عبر عدة أجهزة لتقليل وقت الإكمال الإجمالي. يحاول الحزام عادةً موازنة وقت تنفيذ كل جزء لتقليل وقت الإكمال الإجمالي (عند انتهاء آخر جزء) ؛ ولكن نظرًا لطبيعة بعض الاختبارات ، ليس لدينا دائمًا ما يكفي من الاستبطان ونحتاج إلى مالك الوحدة لضبط بعض السلوك.
قابل للتقسيم أم غير قابل للتجزئة؟
من الممكن وضع علامة على وحدة نمطية ( AndroidTest.xml
) بـ <option name="not-shardable" value="true" />
لإخطار الأداة بأنه لا ينبغي تجزئتها.
في وحدة نمطية ، فإن السماح لجزء الحزام بتقسيم وحدتك (السلوك الافتراضي) هو الشيء الصحيح الذي يجب القيام به. لكن في بعض الحالات ، قد ترغب في تجاوز هذا السلوك:
- عندما يكون إعداد الوحدة الخاصة بك مكلفًا:
تؤدي مشاركة وحدة نمطية إلى تشغيل الإعداد (تثبيت APK ، ملف دفع ، وما إلى ذلك) مرة واحدة لكل جهاز معني. إذا كان إعداد الوحدة الخاصة بك طويلًا ومكلفًا ولا يستحق النسخ المتماثل مقارنة بوقت تشغيل الاختبار ، فيجب عليك وضع علامة على الوحدة على أنها غير قابلة للتجزئة.
- عندما يكون عدد الاختبارات في الوحدة الخاصة بك منخفضًا:
تؤدي مشاركة الوحدة النمطية في جميع حالات الاختبار التي يمكن تنفيذها بشكل مستقل على أجهزة مختلفة. هذا يتعلق بالنقطة الأولى ؛ إذا كان عدد الاختبارات الخاصة بك منخفضًا ، فقد ينتهي بك الأمر باختبار واحد أو لا يوجد اختبار في بعض القطع ، مما يجعل أي خطوة تحضيرية مكلفة للغاية. عادةً لا يستحق تثبيت APK لحالة اختبار واحدة كل هذا العناء ، على سبيل المثال.
اختبارات الأجهزة: أقصى عدد من القطع؟
لا يكشف اختبار الأجهزة الذي يتم إجراؤه من خلال AndroidJUnitTest عن عدد الاختبارات التي تشكل جزءًا من الأجهزة حتى نقوم بالفعل بتثبيت APK وتشغيله. هذه العمليات مكلفة ولا يمكن تنفيذها في وقت التجزئة لجميع أجزاء الوحدات النمطية من المجموعة.
قد يؤدي الحزام إلى إفراط في اختبار الأجهزة وينتهي ببعض القطع الفارغة ؛ تجزئة اختبار الأجهزة مع خمسة اختبارات في ستة شظايا ينتج عنها خمس شظايا باختبار واحد وشظية واحدة بدون اختبارات. كل جزء من هذه الأجزاء سيتطلب تثبيت APK مكلفًا.
لذلك عندما يكون عدد الاختبارات في اختبار الأجهزة APK منخفضًا ، فإن وضع علامة على الوحدة بـ <option name="not-shardable" value="true" />
سيسمح للتسخير بمعرفة تقسيم هذه الوحدة لا يستحق ذلك.
يحتوي عداء AndroidJUnitTest
على خيار خاص يسمح له بتحديد الحد الأقصى لعدد القطع المسموح بقطعها إلى: <option name="ajur-max-shard" value="5" />
.
يتيح لك هذا تحديد الحد الأقصى لعدد المرات التي يمكن فيها تجزئة الأجهزة بغض النظر عن عدد الأجزاء المطلوبة على مستوى الاستدعاء. بشكل افتراضي ، سيتم تقسيم الأجهزة إلى عدد الأجزاء المطلوبة للاستدعاء.
على سبيل المثال ، إذا كان ملف APK الخاص باختبار الأجهزة يحتوي على حالتين للاختبار فقط ولكنك لا تزال ترغب في تجزئتهما ، فإن وجود قيمة ajur-max-shard
تبلغ 2
سيضمن أنك لا تنشئ أجزاء فارغة.