ضبط التجزئة

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