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