القرد الخاص بممارس التطبيقات أو واجهة المستخدم

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

نظرة عامة

The Monkey هي أداة سطر أوامر يمكنك تشغيلها على أي مثيل محاكي أو على أحد الأجهزة. فهي ترسل تدفقًا عشوائيًا من أحداث المستخدم إلى النظام، والذي يعمل كاختبار ضغط على برنامج التطبيق الذي تطوِّره.

يتضمن القرد عددًا من الخيارات، لكنه ينقسم إلى أربع فئات أساسية:

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

عندما يشغّل القرد، فإنه ينشئ الأحداث ويرسلها إلى النظام. كما أنه يراقب النظام تحت الاختبار ويبحث عن ثلاثة حالات، يعالجها بشكل خاص:

  • إذا كنت قد قيّدت عمل Monkey في حزمة واحدة أو أكثر محدّدة، سيراقبه لمحاولات الانتقال إلى أي حزم أخرى، وسيحظرها.
  • إذا تعطّل تطبيقك أو تلقّى أي نوع من الاستثناءات غير المعالَجة، سيتوقف التطبيق عن العمل ويُبلِغ عن الخطأ.
  • إذا عرض التطبيق رسالة الخطأ التطبيق لا يستجيب، سيتوقف القرد ويبلغ عن الخطأ.

استنادًا إلى مستوى الإسهاب الذي اخترته، سترى أيضًا تقارير حول مستوى تقدّم القرد والأحداث التي يتم إنشاؤها.

معلومات أساسية عن القرد

يمكنك تشغيل Monkey باستخدام سطر أوامر على جهاز التطوير أو من نص برمجي. نظرًا لأن القرد يعمل في بيئة المحاكي/الجهاز، يجب عليك تشغيله من واجهة أوامر في تلك البيئة، يمكنك فعل ذلك من خلال توجيه adb shell إلى كل أمر، أو من خلال إدخال واجهة الأوامر وإدخال أوامر القرد مباشرةً.

بناء الجملة الأساسي هو:

$ adb shell monkey [options] <event-count>

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

$ adb shell monkey -p your.package.name -v 500

مرجع خيارات الطلبات

يسرد الجدول أدناه جميع الخيارات التي يمكنك تضمينها في سطر أوامر Monkey.

الفئة Option الوصف
الإعدادات العامة --help طباعة دليل استخدام بسيط
-v سيؤدي كل v- في سطر الأوامر إلى زيادة مستوى الإسهاب. يقدم المستوى 0 (الافتراضي) معلومات قليلة بخلاف إشعار بدء التشغيل وإكمال الاختبار والنتائج النهائية. يوفّر المستوى 1 مزيدًا من التفاصيل حول الاختبار أثناء تنفيذه، مثل إرسال الأحداث الفردية إلى أنشطتك. يوفر المستوى 2 معلومات أكثر تفصيلاً عن الإعداد مثل الأنشطة التي تم اختيارها أو تلك التي لم يتم اختيارها للاختبار.
الأحداث -s <seed> القيمة الأساسية لإنشاء الرقم العشوائي الزائف. إذا أعدت تشغيل القرد بنفس القيمة الأولية، فسينشئ نفس تسلسل الأحداث.
--throttle <milliseconds> لإدراج مهلة ثابتة بين الأحداث. يمكنك استخدام هذا الخيار لإبطاء سرعة القرد. وفي حال عدم تحديد ذلك، لن يحدث أي تأخير، وسيتم إنشاء الأحداث في أسرع وقت ممكن.
--pct-touch <percent> ضبط النسبة المئوية لأحداث اللمس. (أحداث اللمس هي أحداث متسلسلة في مكان واحد على الشاشة).
--pct-motion <percent> تعديل النسبة المئوية لأحداث الحركة. (تتكون أحداث الحركة من حدث هبوط في مكان ما على الشاشة، وسلسلة من الحركات العشوائية العشوائية، وحدث متّجه للأعلى).
--pct-trackball <percent> تعديل النسبة المئوية لأحداث كرة التعقب. (تتألف أحداث كرة التعقب من حركة عشوائية واحدة أو أكثر، متبوعة أحيانًا بنقرة).
--pct-nav <percent> تعديل النسبة المئوية لأحداث التنقّل "الأساسية" (تتألف أحداث التنقّل من أعلى/أسفل/يسار/يمين، كإدخال من جهاز إدخال باتجاهي).
--pct-majornav <percent> يمكنك تعديل النسبة المئوية لأحداث التنقّل "الرئيسية". (هذه هي أحداث التنقّل التي تؤدي عادةً إلى تنفيذ إجراءات داخل واجهة المستخدم، مثل الزر الأوسط في لوحة ذات 5 اتجاهات أو مفتاح الرجوع أو مفتاح القائمة).
--pct-syskeys <percent> تعديل النسبة المئوية للأحداث الرئيسية في "النظام". (هذه هي المفاتيح التي محجوزة بشكل عام ليستخدمها النظام، مثل "المنزل" أو "الرجوع" أو "بدء المكالمة" أو "إنهاء المكالمة" أو "عناصر التحكم في مستوى الصوت").
--pct-appswitch <percent> تعديل النسبة المئوية لعمليات إطلاق النشاط في فترات عشوائية، سيُصدر القرد استدعاء startActivity()، كطريقة لزيادة تغطية جميع الأنشطة في حزمتك إلى أقصى حد.
--pct-anyevent <percent> يمكنك تعديل النسبة المئوية للأنواع الأخرى من الأحداث. وشامل هذه الأحداث لجميع أنواع الأحداث الأخرى، مثل الضغط على المفاتيح، والأزرار الأخرى الأقل استخدامًا على الجهاز، وما إلى ذلك.
القيود -p <allowed-package-name> وإذا حددت حزمة واحدة أو أكثر بهذه الطريقة، سيسمح القرد فقط للنظام بزيارة الأنشطة ضمن تلك الحزم. إذا كان تطبيقك يتطلب الوصول إلى الأنشطة في الحزم الأخرى (مثل تحديد جهة اتصال)، فستحتاج إلى تحديد هذه الحزم أيضًا. إذا لم تحدد أي حزم، سيسمح القرد للنظام ببدء الأنشطة في جميع الحزم. لتحديد حزم متعددة، استخدِم الخيار -p عدّة مرات، أي خيار -p واحد لكل حزمة.
-c <main-category> وإذا حددت فئة واحدة أو أكثر بهذه الطريقة، سيسمح القرد فقط للنظام بزيارة الأنشطة المدرجة مع إحدى الفئات المحددة. إذا لم تحدّد أي فئات، سيختار القرد الأنشطة المدرَجة بالفئة Intent.CATEGORY_LAUNCHER أو Intent.CATEGORY_MONKEY. لتحديد فئات متعددة، استخدم الخيار -c عدة مرات - خيار واحد -c لكل فئة.
تصحيح الأخطاء --dbg-no-events عند التحديد، سيُجري القرد الإطلاق الأولي في نشاط تجريبي، لكنه لن ينشئ أي أحداث أخرى. للحصول على أفضل النتائج، ادمج مع -v، وقيدًا واحدًا أو أكثر من قيود الحزمة، والخانات غير الصفرية للإبقاء على تشغيل القرد لمدة 30 ثانية أو أكثر. يوفر هذا بيئة يمكنك من خلالها مراقبة انتقالات الحزم التي استدعاها تطبيقك.
--hprof في حال ضبط هذا الخيار، سيؤدي إلى إنشاء تقارير تحديد مواصفات قبل تسلسل حدث Monkey وبعده مباشرةً. سيؤدي ذلك إلى إنشاء ملفات كبيرة (حوالي 5 ميغابايت) في بيانات/بيانات متنوعة، لذا يُرجى استخدامها بحرص. للحصول على معلومات حول تحليل تقارير التوليف، يمكنك الاطّلاع على الملف الشخصي لأداء تطبيقك.
--ignore-crashes عادةً، يتوقف التطبيق عند تعطل التطبيق أو عند مواجهة أي نوع من الاستثناءات غير المعالجة. إذا حددت هذا الخيار، سيستمر القرد في إرسال الأحداث إلى النظام حتى تكتمل عملية العدّ.
--ignore-timeouts عادةً، يتوقف التشغيل عندما يواجه التطبيق أي نوع من أخطاء المهلة مثل مربع حوار "التطبيق لا يستجيب". إذا حددت هذا الخيار، سيستمر القرد في إرسال الأحداث إلى النظام حتى يكتمل العد.
--ignore-security-exceptions يتوقف برنامج Monkey عادةً عندما يواجه التطبيق أي نوع من أخطاء الأذونات، على سبيل المثال، إذا حاول تشغيل نشاط يتطلب أذونات معينة. إذا حددت هذا الخيار، سيستمر القرد في إرسال الأحداث إلى النظام حتى تكتمل العدد.
--kill-process-after-error عادة، عند توقف القرد بسبب حدوث خطأ، يتم ترك التطبيق الذي أخفق قيد التشغيل. عند ضبط هذا الخيار، سيُرسل ذلك إشارة إلى النظام بإيقاف العملية التي حدث فيها الخطأ. تجدر الإشارة إلى أنه عند الإكمال العادي (الناجح)، لا يتم إيقاف العمليات التي يتم إطلاقها، ويترك الجهاز ببساطة في حالته الأخيرة بعد الحدث النهائي.
--monitor-native-crashes يراقب هذا الوضع الأعطال التي تحدث في الرموز البرمجية الأصلية لنظام Android ويبلغ عنها. في حال ضبط --kill-process-after-error، سيتوقف النظام.
--wait-dbg يتم إيقاف تنفيذ القرد إلى أن يتم إرفاق برنامج تصحيح أخطاء به.