The Monkey هو برنامج يتم تشغيله على المحاكي أو الجهاز التابع لك وينشئ مجموعات بث عشوائية وعوائية لأحداث المستخدم، مثل النقرات أو اللمسات أو الإيماءات، فضلاً عن عدد من الأحداث على مستوى النظام. يمكنك استخدام القرد لاختبار التطبيقات التي تطورها، وذلك بطريقة عشوائية وقابلة للتكرار أيضًا.
نظرة عامة
أداة Monkey هي أداة سطر أوامر يمكنك تشغيلها على أي مثيل محاكي أو على جهاز. فهو يرسل تدفقًا عشوائيًا من أحداث المستخدم إلى النظام، والذي يعد بمثابة اختبار ضغط على برنامج التطبيق الذي تقوم بتطويره.
يتضمن القرد عددًا من الخيارات، لكنه ينقسم إلى أربع فئات أساسية:
- خيارات الضبط الأساسية، مثل ضبط عدد الأحداث المطلوب محاولة تنفيذها
- قيود تشغيلية، مثل قصر الاختبار على حزمة واحدة.
- أنواع الأحداث وفترات تكرارها.
- خيارات تصحيح الأخطاء
فعندما يشغّل القرد، ينشئ الأحداث ويرسلها إلى النظام. كما أنه يراقب النظام قيد الاختبار ويبحث عن ثلاثة حالات يتم التعامل معها بشكل خاص:
- إذا كنت قد قيّدت تشغيل Monkey في حزمة محدّدة واحدة أو أكثر، يراقبه محاولات الانتقال إلى أي حزم أخرى ويحظرها.
- إذا تعطّل تطبيقك أو تلقّى أي نوع من الاستثناءات التي لم تتم معالجتها، سيتوقّف القرد والإبلاغ عن الخطأ.
- إذا أنشأ التطبيق رسالة الخطأ التطبيق لا يستجيب، سيتوقّف القرد والإبلاغ عن الخطأ.
بناءً على مستوى الإسهاب الذي حددته، سترى أيضًا تقارير حول تقدم القرد والأحداث التي يتم إنشاؤها.
الاستخدام الأساسي للقرد
يمكنك تشغيل القرد باستخدام سطر أوامر على جهاز التطوير أو من نص برمجي.
نظرًا لأن القرد يعمل في بيئة المحاكي/الجهاز، يجب عليك تشغيله من هيكل في تلك البيئة. يمكنك إجراء ذلك من خلال توجيه adb shell
إلى كل أمر،
أو من خلال إدخال واجهة المستخدم وإدخال أوامر Monkey مباشرةً.
بناء الجملة الأساسي هو:
$ 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 |
عندما يتعطل التطبيق أو يواجه أي نوع من الاستثناءات غير المعالجة، سيتوقف تشغيل Monkey عادةً. في حال تحديد هذا الخيار، سيواصل القرد إرسال الأحداث إلى النظام حتى تكتمل عملية العدّ. | |
--ignore-timeouts |
عادةً ما يتوقف التشغيل عندما يتعرض التطبيق لأي نوع من أخطاء المهلة مثل مربع الحوار "التطبيق لا يستجيب". إذا حددت هذا الخيار، فسيواصل القرد إرسال الأحداث إلى النظام، حتى يكتمل العد. | |
--ignore-security-exceptions |
يتوقف تطبيق Monkey عادةً عندما يواجه التطبيق أي نوع من أخطاء الأذونات، على سبيل المثال إذا حاول تشغيل نشاط يتطلب أذونات معينة. عند تحديد هذا الخيار، سيواصل القرد إرسال الأحداث إلى النظام حتى تكتمل عملية العدّ. | |
--kill-process-after-error |
عادةً، عند توقف القرد بسبب خطأ، يتم ترك التطبيق الذي تعذّر تشغيله قيد التشغيل. عند ضبط هذا الخيار، يُعلم النظام بإيقاف العملية التي حدث فيها الخطأ. تجدر الإشارة إلى أنه في حال الاكتمال العادي (الناجح)، لن يتم إيقاف العملية(العمليات) التي تم إطلاقها، ويتم ببساطة ترك الجهاز في الحالة الأخيرة بعد الحدث النهائي. | |
--monitor-native-crashes |
يرصد الأعطال التي تحدث في الرموز البرمجية الأصلية لنظام Android والإبلاغ عنها. في حال ضبط --kill-process-after-error، سيتوقف النظام. | |
--wait-dbg |
لإيقاف تنفيذ القرد إلى أن يتم إرفاق برنامج تصحيح أخطاء به. |