UI/অ্যাপ্লিকেশন এক্সারসাইজার বানর

দ্য মাঙ্কি হল এমন একটি প্রোগ্রাম যা আপনার এমুলেটর বা ডিভাইসে চলে এবং ব্যবহারকারীর ইভেন্ট যেমন ক্লিক, স্পর্শ বা অঙ্গভঙ্গির পাশাপাশি বেশ কিছু সিস্টেম-লেভেল ইভেন্টের সিউডো-এলোমেলো স্ট্রীম তৈরি করে। আপনি বাঁদর ব্যবহার করতে পারেন স্ট্রেস-টেস্ট অ্যাপ্লিকেশন যা আপনি বিকাশ করছেন, একটি র্যান্ডম কিন্তু পুনরাবৃত্তিযোগ্য পদ্ধতিতে।

ওভারভিউ

বানর হল একটি কমান্ড-লাইন টুল যা আপনি যেকোনো এমুলেটর ইনস্ট্যান্স বা ডিভাইসে চালাতে পারেন। এটি সিস্টেমে ব্যবহারকারীর ইভেন্টগুলির একটি ছদ্ম-এলোমেলো স্ট্রিম পাঠায়, যা আপনি যে অ্যাপ্লিকেশন সফ্টওয়্যারটি বিকাশ করছেন তার উপর একটি চাপ পরীক্ষা হিসাবে কাজ করে।

বানরটিতে বেশ কয়েকটি বিকল্প রয়েছে, তবে সেগুলি চারটি প্রাথমিক বিভাগে বিভক্ত:

  • মৌলিক কনফিগারেশন বিকল্প, যেমন চেষ্টা করার জন্য ইভেন্টের সংখ্যা সেট করা।
  • অপারেশনাল সীমাবদ্ধতা, যেমন একটি একক প্যাকেজে পরীক্ষা সীমাবদ্ধ করা।
  • ইভেন্টের ধরন এবং ফ্রিকোয়েন্সি।
  • ডিবাগিং অপশন।

যখন বানরটি চলে, এটি ইভেন্ট তৈরি করে এবং সেগুলিকে সিস্টেমে পাঠায়। এটি পরীক্ষার অধীনে সিস্টেমটিও দেখে এবং তিনটি শর্তের সন্ধান করে, যা এটি বিশেষভাবে আচরণ করে:

  • আপনি যদি বানরকে এক বা একাধিক নির্দিষ্ট প্যাকেজে চালানোর জন্য সীমাবদ্ধ করে থাকেন, তবে এটি অন্য কোনো প্যাকেজে নেভিগেট করার প্রচেষ্টার জন্য পর্যবেক্ষণ করে এবং সেগুলিকে ব্লক করে।
  • যদি আপনার অ্যাপ্লিকেশনটি ক্র্যাশ হয়ে যায় বা কোনো প্রকার অ-হ্যান্ডেল করা ব্যতিক্রম গ্রহণ করে, তাহলে বানরটি থামবে এবং ত্রুটিটি রিপোর্ট করবে।
  • যদি আপনার অ্যাপ্লিকেশানটি এমন একটি অ্যাপ্লিকেশন তৈরি করে যা রেসপন্সিং এরর না করে , তাহলে বানরটি থামবে এবং ত্রুটিটি রিপোর্ট করবে।

আপনার নির্বাচিত শব্দের স্তরের উপর নির্ভর করে, আপনি বাঁদরের অগ্রগতি এবং ইভেন্টগুলি তৈরি করা সম্পর্কে রিপোর্টও দেখতে পাবেন।

বানরের মৌলিক ব্যবহার

আপনি আপনার ডেভেলপমেন্ট মেশিনে বা একটি স্ক্রিপ্ট থেকে কমান্ড লাইন ব্যবহার করে বানর চালু করতে পারেন। যেহেতু বানরটি এমুলেটর/ডিভাইস পরিবেশে চলে, আপনাকে অবশ্যই সেই পরিবেশের একটি শেল থেকে এটি চালু করতে হবে। আপনি প্রতিটি কমান্ডে adb shell প্রিফেস করে বা শেল প্রবেশ করে এবং সরাসরি মানকি কমান্ড প্রবেশ করে এটি করতে পারেন।

মৌলিক সিনট্যাক্স হল:

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

কোন বিকল্প নির্দিষ্ট করা ছাড়াই, বানরটি একটি শান্ত (নন-ভার্বোস) মোডে চালু হবে এবং আপনার লক্ষ্যে ইনস্টল করা যেকোনো (এবং সমস্ত) প্যাকেজে ইভেন্ট পাঠাবে। এখানে একটি আরও সাধারণ কমান্ড লাইন রয়েছে, যা আপনার অ্যাপ্লিকেশনটি চালু করবে এবং এতে 500 টি সিউডো-র্যান্ডম ইভেন্ট পাঠাবে:

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

কমান্ড অপশন রেফারেন্স

নীচের সারণীতে আপনি মানকি কমান্ড লাইনে অন্তর্ভুক্ত করতে পারেন এমন সমস্ত বিকল্প তালিকাভুক্ত করে।

শ্রেণী অপশন বর্ণনা
সাধারণ --help একটি সাধারণ ব্যবহার নির্দেশিকা প্রিন্ট করে।
-v কমান্ড লাইনের প্রতিটি -v verbosity লেভেল বৃদ্ধি করবে। স্তর 0 (ডিফল্ট) স্টার্টআপ বিজ্ঞপ্তি, পরীক্ষা সমাপ্তি এবং চূড়ান্ত ফলাফলের বাইরে সামান্য তথ্য প্রদান করে। লেভেল 1 পরীক্ষা চলাকালীন সে সম্পর্কে আরও বিশদ বিবরণ প্রদান করে, যেমন আপনার কার্যকলাপে পৃথক ইভেন্ট পাঠানো হয়। লেভেল 2 আরও বিস্তারিত সেটআপ তথ্য প্রদান করে যেমন ক্রিয়াকলাপগুলি নির্বাচিত বা পরীক্ষার জন্য নির্বাচিত নয়৷
ঘটনা -s <seed> সিউডো-র্যান্ডম নম্বর জেনারেটরের জন্য বীজের মান। আপনি যদি একই বীজের মান দিয়ে বানরটিকে পুনরায় চালান, তাহলে এটি ঘটনাগুলির একই ক্রম তৈরি করবে।
--throttle <milliseconds> ইভেন্টগুলির মধ্যে একটি নির্দিষ্ট বিলম্ব সন্নিবেশ করায়। আপনি বানরকে ধীর করতে এই বিকল্পটি ব্যবহার করতে পারেন। যদি নির্দিষ্ট না করা হয়, কোন বিলম্ব নেই এবং ঘটনাগুলি যত দ্রুত সম্ভব উত্পন্ন হয়৷
--pct-touch <percent> স্পর্শ ইভেন্টের শতাংশ সামঞ্জস্য করুন। (স্পর্শ ইভেন্ট হল স্ক্রিনের একক জায়গায় একটি ডাউন-আপ ইভেন্ট।)
--pct-motion <percent> মোশন ইভেন্টের শতাংশ সামঞ্জস্য করুন। (মোশন ইভেন্টগুলি স্ক্রিনের কোথাও একটি ডাউন ইভেন্ট, ছদ্ম-এলোমেলো আন্দোলনের একটি সিরিজ এবং একটি আপ ইভেন্ট নিয়ে গঠিত।)
--pct-trackball <percent> ট্র্যাকবল ইভেন্টের শতাংশ সামঞ্জস্য করুন। (ট্র্যাকবল ইভেন্টে এক বা একাধিক এলোমেলো আন্দোলন থাকে, কখনও কখনও একটি ক্লিক দ্বারা অনুসরণ করা হয়।)
--pct-nav <percent> "মৌলিক" নেভিগেশন ইভেন্টের শতাংশ সামঞ্জস্য করুন। (নেভিগেশন ইভেন্টগুলি একটি দিকনির্দেশক ইনপুট ডিভাইস থেকে ইনপুট হিসাবে উপরে/নিচে/বাম/ডান নিয়ে গঠিত।)
--pct-majornav <percent> "প্রধান" নেভিগেশন ইভেন্টের শতাংশ সামঞ্জস্য করুন। (এগুলি হল নেভিগেশন ইভেন্ট যা সাধারণত আপনার UI-এর মধ্যে কাজ করে, যেমন 5-ওয়ে প্যাডে কেন্দ্র বোতাম, পিছনের কী, বা মেনু কী।)
--pct-syskeys <percent> "সিস্টেম" কী ইভেন্টের শতাংশ সামঞ্জস্য করুন। (এগুলি এমন কী যা সাধারণত সিস্টেমের দ্বারা ব্যবহারের জন্য সংরক্ষিত থাকে, যেমন হোম, ব্যাক, স্টার্ট কল, শেষ কল, বা ভলিউম নিয়ন্ত্রণ৷)
--pct-appswitch <percent> অ্যাক্টিভিটি লঞ্চের শতাংশ সামঞ্জস্য করুন। এলোমেলো ব্যবধানে, আপনার প্যাকেজের মধ্যে সমস্ত ক্রিয়াকলাপের কভারেজ সর্বাধিক করার উপায় হিসাবে, বানর একটি startActivity() কল জারি করবে।
--pct-anyevent <percent> অন্যান্য ধরনের ইভেন্টের শতাংশ সামঞ্জস্য করুন। এটি অন্যান্য সমস্ত ধরণের ইভেন্টের জন্য একটি ক্যাচ-অল যেমন কী প্রেস, ডিভাইসে অন্যান্য কম-ব্যবহৃত বোতাম এবং আরও অনেক কিছু।
সীমাবদ্ধতা -p <allowed-package-name> যদি আপনি এইভাবে এক বা একাধিক প্যাকেজ উল্লেখ করেন, তাহলে Monkey শুধুমাত্র সেই প্যাকেজের মধ্যে থাকা ক্রিয়াকলাপগুলি দেখার জন্য সিস্টেমটিকে অনুমতি দেবে। যদি আপনার অ্যাপ্লিকেশনের জন্য অন্যান্য প্যাকেজগুলির কার্যকলাপে অ্যাক্সেসের প্রয়োজন হয় (যেমন একটি পরিচিতি নির্বাচন করতে) আপনাকে সেই প্যাকেজগুলিও নির্দিষ্ট করতে হবে। আপনি যদি কোনো প্যাকেজ নির্দিষ্ট না করেন, তাহলে মাঙ্কি সিস্টেমটিকে সমস্ত প্যাকেজে কার্যক্রম চালু করার অনুমতি দেবে। একাধিক প্যাকেজ নির্দিষ্ট করতে, -p বিকল্পটি একাধিকবার ব্যবহার করুন — প্যাকেজ প্রতি এক -p বিকল্প।
-c <main-category> আপনি যদি এইভাবে এক বা একাধিক বিভাগ নির্দিষ্ট করেন, তাহলে মাঙ্কি সিস্টেমটিকে শুধুমাত্র নির্দিষ্ট শ্রেণীগুলির একটির সাথে তালিকাভুক্ত কার্যকলাপগুলি দেখার অনুমতি দেবে। আপনি যদি কোনো বিভাগ নির্দিষ্ট না করেন, তাহলে বানর Intent.CATEGORY_LAUNCHER বা Intent.CATEGORY_MONKEY বিভাগের সাথে তালিকাভুক্ত কার্যকলাপ নির্বাচন করবে। একাধিক বিভাগ নির্দিষ্ট করতে, -c বিকল্পটি একাধিকবার ব্যবহার করুন — প্রতি বিভাগে এক -c বিকল্প।
ডিবাগিং --dbg-no-events নির্দিষ্ট করা হলে, বাঁদরটি একটি পরীক্ষামূলক কার্যকলাপে প্রাথমিক প্রবর্তন করবে, কিন্তু পরবর্তী কোনো ইভেন্ট তৈরি করবে না। সেরা ফলাফলের জন্য, -v, এক বা একাধিক প্যাকেজ সীমাবদ্ধতা এবং একটি নন-জিরো থ্রোটলের সাথে একত্রিত করুন যাতে মাঙ্কিকে 30 সেকেন্ড বা তার বেশি সময় ধরে চলতে থাকে। এটি এমন একটি পরিবেশ প্রদান করে যেখানে আপনি আপনার অ্যাপ্লিকেশন দ্বারা আহ্বান করা প্যাকেজ রূপান্তর নিরীক্ষণ করতে পারেন।
--hprof সেট করা থাকলে, এই বিকল্পটি মাঙ্কি ইভেন্ট সিকোয়েন্সের আগে এবং পরে প্রোফাইলিং রিপোর্ট তৈরি করবে। এটি ডেটা/বিবিধে বড় (~5Mb) ফাইল তৈরি করবে, তাই যত্ন সহকারে ব্যবহার করুন। প্রোফাইলিং রিপোর্ট বিশ্লেষণের তথ্যের জন্য, আপনার অ্যাপের কর্মক্ষমতা প্রোফাইল দেখুন।
--ignore-crashes সাধারনত, যখন অ্যাপ্লিকেশন ক্র্যাশ হয়ে যায় বা কোনো ধরনের আন-হ্যান্ডেল করা ব্যতিক্রম অনুভব করে তখন বানরটি বন্ধ হয়ে যায়। আপনি এই বিকল্পটি উল্লেখ করলে, গণনা সম্পূর্ণ না হওয়া পর্যন্ত Monkey সিস্টেমে ইভেন্ট পাঠাতে থাকবে।
--ignore-timeouts সাধারণত, যখন অ্যাপ্লিকেশনটি "অ্যাপ্লিকেশন নট রেসপন্সিং" ডায়ালগের মতো যেকোন ধরনের টাইমআউট ত্রুটির সম্মুখীন হয় তখন বানরটি বন্ধ হয়ে যায়। আপনি এই বিকল্পটি উল্লেখ করলে, গণনা সম্পূর্ণ না হওয়া পর্যন্ত Monkey সিস্টেমে ইভেন্ট পাঠাতে থাকবে।
--ignore-security-exceptions সাধারণত, যখন অ্যাপ্লিকেশনটি কোনো ধরনের অনুমতি ত্রুটি অনুভব করে তখন বানরটি বন্ধ হয়ে যায়, উদাহরণস্বরূপ যদি এটি এমন কোনো কার্যকলাপ চালু করার চেষ্টা করে যার জন্য নির্দিষ্ট অনুমতির প্রয়োজন হয়। আপনি এই বিকল্পটি উল্লেখ করলে, গণনা সম্পূর্ণ না হওয়া পর্যন্ত Monkey সিস্টেমে ইভেন্ট পাঠাতে থাকবে।
--kill-process-after-error সাধারণত, যখন একটি ত্রুটির কারণে বানর বন্ধ হয়ে যায়, ব্যর্থ হওয়া অ্যাপ্লিকেশনটি চলমান থাকবে। এই বিকল্পটি সেট করা হলে, এটি সিস্টেমকে সংকেত দেবে যে প্রক্রিয়াটিতে ত্রুটি ঘটেছে তা বন্ধ করতে। দ্রষ্টব্য, একটি স্বাভাবিক (সফল) সমাপ্তির অধীনে, চালু হওয়া প্রক্রিয়া(গুলি) বন্ধ করা হয় না এবং চূড়ান্ত ইভেন্টের পরে ডিভাইসটিকে কেবল শেষ অবস্থায় রেখে দেওয়া হয়।
--monitor-native-crashes অ্যান্ড্রয়েড সিস্টেম নেটিভ কোডে ঘটছে ক্র্যাশগুলি দেখে এবং রিপোর্ট করে৷ যদি --kill-process-after-error সেট করা হয়, সিস্টেম বন্ধ হয়ে যাবে।
--wait-dbg একটি ডিবাগার সংযুক্ত না হওয়া পর্যন্ত বানরটিকে কার্যকর করা বন্ধ করে।