تجزئة الاختبار

عندما يكون نص الاختبار كبيرًا أو تصبح مدة التنفيذ طويلة، نقدم إمكانية تقسيم الاختبارات على عدة أجهزة: التقسيم.

التقسيم إلى أجزاء لها متطلبات أساسية لمتسابق الاختبار لدعم التقسيم.

تدعم غالبية عدّاء الاختبار الرئيسيين التقسيم إلى أجزاء، لذلك العمل مطلوب. فهي تدعم بالفعل التقسيم: اختبارات الأدوات، من جهة المضيف، GTest.

هناك نوعان من التقسيم الذي ندعمه في المقايضة: محلّي وموزَّع. وهما تشتركان في بعض أوجه التشابه، لذا تصف هذه الصفحة الخصائص الشائعة ثم تفاصيل كل منها.

السمات المشتركة

يفترض كل من شكلي التقسيم الخصائص نفسها من عدّاء الاختبارات: الأجزاء بحاجة إلى أن يكون مستقلاً وحتميًا. تتمثل الخطوة الأولى لكلا الجزءين في لإنشاء قائمة كاملة مرتبة من الاختبارات ثم تقسيمها إلى لمجموعات/أجزاء مختلفة.

يتمثل الاختلاف الرئيسي في النماذج المقسّمة في طريقة تنفيذ الاختبارات. اطّلِع على مزيد من التفاصيل في الأقسام أدناه.

التقسيم على أجزاء محلية

يُقصد بالتقسيم المحلي جميع الأجهزة المستخدمة في تنفيذ عملية التجزئة. يرتبط الاستدعاء بالمضيف الفعلي نفسه.

التنفيذ

يستفيد التقسيم المحلي من اتصال جميع الأجهزة بنفس المضيف من خلال إنشاء مجموعة من الاختبارات التي يجب تنفيذها مع وجود كل منها إجراء اختبارات استطلاع الجهاز عندما يكون مجانيًا (أي من خلال الاختبار السابق). ويؤدي هذا إلى استخدام محسّن للأجهزة. كما نسميها التقسيم الديناميكي:

الخيارات

--shard-count XX

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

يشير التقسيم إلى أجزاء إلى جميع الأجهزة المشتركة في تنفيذ عملية يمكن أن تتواجد الاستدعاء المجزأ في أي مكان ويرتبط بمصادر خارجية المضيفين.

التنفيذ

يحدث التقسيم إلى أجزاء موزعة عند إنشاء قائمة الاختبارات، ومحتوى وينفذ كل جزء الجزء المطلوب حاليًا فقط. إذًا، جميعًا تبني الأجزاء الموزعة نفس القائمة في البداية ثم تنفذ مجموعة فرعية حصرية منها، ما يؤدي إلى تنفيذ جميع الاختبارات.

والخاصية الرئيسية لهذا النموذج هي الأجزاء غير على دراية تامة بالعناصر البعض ويمكن أن تفشل بشكل مستقل.

العيب الرئيسي هو أن طول الجزء ليس متوازنًا بالضرورة لأنه لا يمكننا التنبؤ مقدمًا ببيئة تشغيل كل اختبار في كل جزء. يتم إجراء التوزيع ليتضمن العدد نفسه تقريبًا من حالات الاختبار في كل جزء.

الخيارات

--shard-count XX --shard-index XX

تقسيم الرموز المميّزة إلى أجزاء

يمكن استخدام التقسيم إلى أجزاء للرموز المميّزة مع عملية التقسيم المحلي فقط. العلم هو لا تعمل في حالات الاستخدام غير المحلي على حدة. في بعض الأحيان، قد يكون أحد الأجهزة التي تتضمنها عملية التقسيم إلى موارد خاصة لا تتوفر لدى الآخرين، مثل شريحة SIM بنجاح. قد تعمل بعض الاختبارات فقط عند توفر هذا المورد الخاص ستفشل بخلاف ذلك.

إنّ تقسيم الرموز المميّزة هو الحل الذي نقدّمه لحالات الاستخدام هذه. يمكن لوحدات الاختبار إجراء الإفصاح عن المورد الخاص الذي يحتاج إليه في AndroidTest.xml تعمل الإعدادات المبادلة على توجيه الاختبارات إلى جهاز يتضمّن المورد.

إعدادات XML

<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />

يتطابق value للرمز المميز مع Tradefed TokenProperty وهي مرتبطة بمعالج في TokenProviderHelper

ويسمح هذا الإجراء بتشغيل وحدات الاختبار على الأجهزة التي يمكنها إجراء ذلك بشكل صحيح. وتنفيذ الاختبارات.

ماذا أفعل إذا لم تتمكّن أي أجهزة من إجراء الاختبار؟

إذا لم يكن هناك أي أجهزة متوفرة لديك المورد المطابق لوحدة الاختبار، فشل وحدة الاختبار وتخطيها لأنه لا يمكن تنفيذها بشكل صحيح.

على سبيل المثال، إذا طلبت وحدة الاختبار تشغيل شريحة SIM ولكن لم تحتوي أي أجهزة على شريحة SIM، فإن وحدة الاختبار فشلت.

التنفيذ

مرر علامة الميزة هذه إلى سطر أوامر Tradefed الرئيسي:

--enable-token-sharding