إعداد التقسيم إلى أجزاء

توضّح هذه الصفحة ما يمكن ضبطه في وحدة مجموعة (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 يضمن عدم إنشاء أجزاء فارغة.