Monkey برنامهای است که بر روی شبیهساز یا دستگاه شما اجرا میشود و جریانهای شبه تصادفی از رویدادهای کاربر مانند کلیکها، لمسها یا ژستها و همچنین تعدادی رویداد در سطح سیستم تولید میکند. میتوانید از Monkey برای تست استرس برنامههایی که در حال توسعه هستید، به شیوهای تصادفی و در عین حال قابل تکرار استفاده کنید.
نمای کلی
Monkey یک ابزار خط فرمان است که می توانید آن را روی هر نمونه شبیه ساز یا دستگاهی اجرا کنید. این یک جریان شبه تصادفی از رویدادهای کاربر را به سیستم ارسال می کند که به عنوان یک تست استرس روی نرم افزار کاربردی که در حال توسعه آن هستید عمل می کند.
میمون شامل تعدادی گزینه است، اما آنها به چهار دسته اصلی تقسیم می شوند:
- گزینه های پیکربندی اولیه، مانند تنظیم تعداد رویدادهایی که باید تلاش کنید.
- محدودیت های عملیاتی، مانند محدود کردن تست به یک بسته.
- انواع و فرکانس رویدادها
- گزینه های اشکال زدایی
هنگامی که میمون اجرا می شود، رویدادها را تولید می کند و آنها را به سیستم ارسال می کند. همچنین سیستم تحت آزمایش را تماشا میکند و به دنبال سه وضعیت میگردد که بهویژه آنها را درمان میکند:
- اگر میمون را محدود کرده باشید تا در یک یا چند بسته خاص اجرا شود، تلاشها برای پیمایش به بستههای دیگر را بررسی میکند و آنها را مسدود میکند.
- اگر برنامه شما از کار بیفتد یا هر نوع استثنای کنترل نشده ای دریافت کند، Monkey متوقف می شود و خطا را گزارش می کند.
- اگر برنامه شما خطای عدم پاسخگویی را ایجاد کند، Monkey متوقف می شود و خطا را گزارش می دهد.
بسته به سطح پرحرفی که انتخاب کرده اید، گزارش هایی از پیشرفت میمون و رویدادهای در حال تولید را نیز مشاهده خواهید کرد.
استفاده اولیه از میمون
می توانید Monkey را با استفاده از یک خط فرمان در ماشین توسعه خود یا از یک اسکریپت راه اندازی کنید. از آنجایی که میمون در محیط شبیه ساز/دستگاه اجرا می شود، باید آن را از پوسته ای در آن محیط راه اندازی کنید. می توانید این کار را با قرار دادن adb shell
برای هر دستور یا با وارد کردن پوسته و وارد کردن مستقیم دستورات Monkey انجام دهید.
نحو اصلی این است:
$ adb shell monkey [options] <event-count>
بدون هیچ گزینه ای مشخص شده، Monkey در حالت آرام (غیر کلامی) راه اندازی می شود و رویدادها را به هر (و همه) بسته های نصب شده روی هدف شما ارسال می کند. در اینجا یک خط فرمان معمولی وجود دارد که برنامه شما را راه اندازی می کند و 500 رویداد شبه تصادفی را به آن ارسال می کند:
$ adb shell monkey -p your.package.name -v 500
مرجع گزینه های فرمان
جدول زیر تمام گزینه هایی را که می توانید در خط فرمان Monkey قرار دهید فهرست می کند.
دسته بندی | گزینه | توضیحات |
---|---|---|
ژنرال | --help | یک راهنمای استفاده ساده را چاپ می کند. |
-v | هر -v در خط فرمان سطح پرحرفی را افزایش می دهد. سطح 0 (پیشفرض) اطلاعات کمی فراتر از اعلان راهاندازی، تکمیل تست و نتایج نهایی ارائه میکند. سطح 1 جزئیات بیشتری در مورد آزمون در حین اجرا ارائه می دهد، مانند رویدادهای فردی که به فعالیت های شما ارسال می شود. سطح 2 اطلاعات راه اندازی دقیق تری مانند فعالیت های انتخاب شده یا انتخاب نشده برای آزمایش را ارائه می دهد. | |
رویدادها | -s <seed> | مقدار بذر برای مولد اعداد شبه تصادفی. اگر میمون را با همان مقدار 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> | اگر یک یا چند بسته را به این ترتیب مشخص کنید، Monkey فقط به سیستم اجازه می دهد تا از فعالیت های درون آن بسته ها بازدید کند. اگر برنامه شما نیاز به دسترسی به فعالیتهای بستههای دیگر دارد (مثلاً برای انتخاب مخاطب)، باید آن بستهها را نیز مشخص کنید. اگر هیچ بسته ای را مشخص نکنید، Monkey به سیستم اجازه می دهد تا فعالیت ها را در همه بسته ها راه اندازی کند. برای تعیین چندین بسته، از گزینه -p چندین بار استفاده کنید - یک گزینه -p در هر بسته. |
-c <main-category> | اگر یک یا چند دسته را از این طریق مشخص کنید، Monkey فقط به سیستم اجازه می دهد تا از فعالیت هایی که با یکی از دسته بندی های مشخص شده لیست شده اند بازدید کند. اگر هیچ دستهای را مشخص نکنید، میمون فعالیتهای فهرست شده با دسته 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 | خرابی هایی را که در کد بومی سیستم اندروید رخ می دهد را تماشا می کند و گزارش می دهد. اگر --kill-process-after-error تنظیم شود، سیستم متوقف می شود. | |
--wait-dbg | اجرای میمون را متوقف می کند تا زمانی که یک دیباگر به آن متصل شود. |