এই পৃষ্ঠায় বর্ণনা করা হয়েছে যে শার্ডিংয়ের মাধ্যমে স্যুট মডিউলের (AndroidTest.xml) জন্য কী টিউন করা সম্ভব এবং ল্যাবে ক্রমাগত এক্সিকিউশনের সময় সেরা স্পিড পারফর্ম্যান্স পাওয়া যায়। আমরা প্রতিটি বিকল্প ব্যবহারের কারণ সহ
সাধারণভাবে বর্ণনা করার চেষ্টা করব।
ল্যাবে একটানা কোনও স্যুট চালানোর সময়, সম্পূর্ণ হতে মোট যে সময় লাগে তা কমানোর জন্য সাধারণত একাধিক ডিভাইসে স্যুটটি শার্ড করা হয়। সাধারণত, হার্নেস প্রতিটি শার্ডের এক্সিকিউশন টাইম ব্যালেন্স করার চেষ্টা করে যাতে সামগ্রিক সম্পূর্ণ হওয়ার সময় (যখন শেষ শার্ডটি শেষ হয়) কমানো যায়। কিন্তু কিছু টেস্টের প্রকৃতির কারণে, আমাদের কাছে সবসময় পর্যাপ্ত ইন্ট্রোস্পেকশন থাকে না এবং কিছু আচরণ টিউন করার জন্য মডিউল মালিকের প্রয়োজন হয়।
শেয়ার করা যাবে নাকি যাবে না?
হার্নেসকে জানানোর জন্য <option name="not-shardable" value="true" />-এর সাথে একটি মডিউল (AndroidTest.xml) ট্যাগ করা সম্ভব যে
এটি শার্ড করা উচিত নয়।
সাধারণত, মডিউলে, হার্নেসকে আপনার মডিউল শেয়ার করতে দেওয়া (ডিফল্ট আচরণ) হল সঠিক কাজ। কিন্তু কিছু ক্ষেত্রে, আপনি সেই আচরণ ওভাররাইড করতে চান:
- আপনার মডিউল সেট-আপ করার খরচ বেশি হলে:
একটি মডিউল শার্ডিং করার ফলে প্রস্তুতি (APK ইনস্টল, ফাইল পুশ ইত্যাদি) সম্ভবত জড়িত প্রতিটি ডিভাইসে একবার চালানো হয়। আপনার মডিউল সেট-আপ যদি দীর্ঘ ও ব্যয়বহুল হয় এবং টেস্টের রানটাইমের তুলনায় রেপ্লিকেট করার উপযুক্ত না হয়, তাহলে আপনার মডিউলকে 'শেয়ার করা যায় না' হিসেবে ট্যাগ করা উচিত।
- আপনার মডিউলে টেস্টের সংখ্যা কম হলে:
একটি মডিউল শার্ডিং করার ফলে সমস্ত পরীক্ষার কেস সম্ভবত স্বাধীনভাবে কার্যকর হয় বিভিন্ন ডিভাইসে। এটি প্রথম পয়েন্টের সাথে সম্পর্কিত; আপনার পরীক্ষার সংখ্যা কম হলে, আপনি কিছু শার্ডে একটি পরীক্ষা বা কোনও পরীক্ষা নাও পেতে পারেন, যা যেকোনও প্রস্তুতিমূলক ধাপকে বেশ ব্যয়বহুল করে তুলবে। একটি টেস্ট কেসের জন্য APK ইনস্টল করা সাধারণত লাভজনক হয় না, যেমন।
ইনস্ট্রুমেন্টেশন টেস্ট: সর্বাধিক কতগুলি শার্ড?
AndroidJUnitTest-এর মাধ্যমে চলা একটি ইনস্ট্রুমেন্টেশন টেস্ট হার্নেসের কাছে প্রকাশ করে না যে ইনস্ট্রুমেন্টেশনের অংশ হিসেবে কতগুলি টেস্ট আছে যতক্ষণ না আমরা আসলে APK ইনস্টল করি এবং চালাই। এইসব অপারেশন খুবই ব্যয়বহুল এবং স্যুটের অংশ হিসেবে থাকা সব মডিউলের জন্য শার্ডিংয়ের সময় এক্সিকিউট করা যায় না।
হার্নেস ইন্সট্রুমেন্টেশন টেস্টকে ওভার-শার্ড করতে পারে এবং এর ফলে কিছু খালি শার্ড তৈরি হতে পারে; ছয়টি শার্ডে পাঁচটি টেস্ট সহ ইন্সট্রুমেন্টেশন টেস্ট শার্ডিং করলে একটি টেস্ট সহ পাঁচটি শার্ড এবং কোনও টেস্ট ছাড়া একটি শার্ড তৈরি হয়। এইসব শার্ডের প্রত্যেকটির জন্য দামি APK ইনস্টলেশন প্রয়োজন।
তাই, ইন্সট্রুমেন্টেশন টেস্ট APK-তে পরীক্ষার সংখ্যা কম হলে, <option name="not-shardable" value="true" />-এর মাধ্যমে
মডিউল ট্যাগ করলে,
হার্নেস বুঝতে পারবে যে সেই মডিউলকে শার্ডিং করা উচিত নয়।
AndroidJUnitTest রানারের একটি বিশেষ বিকল্প আছে যা এটিকে সর্বাধিক শার্ডের সংখ্যা নির্দিষ্ট করতে দেয় যা এটিতে শার্ড করা যাবে:
<option name="ajur-max-shard" value="5" />।
এর ফলে, ইনভোকেশন লেভেলে যতগুলি শার্ডের অনুরোধ করা হোক না কেন, আপনি সর্বাধিক যতবার ইন্সট্রুমেন্টেশন শার্ড করা যাবে তা নির্দিষ্ট করতে পারবেন। ডিফল্ট হিসেবে, ইনভোকেশনের জন্য অনুরোধ করা শার্ডের সংখ্যায় ইনস্ট্রুমেন্টেশনকে শার্ড করা হবে।
যেমন, আপনার ইন্সট্রুমেন্টেশন টেস্ট APK-তে যদি মাত্র দুটি টেস্ট কেস থাকে, কিন্তু
আপনি এখনও এটি শার্ড করতে চান, তাহলে ajur-max-shard-এর ভ্যালু 2 হলে তা নিশ্চিত করবে যে
আপনি খালি শার্ড তৈরি করছেন না।