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