تكوين التجزئة

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