Trade Federation ব্যবহার করে চালানো পরীক্ষার লাইফসাইকেলে চারটি আলাদা আলাদা ধাপ থাকে, যেগুলি আনুষ্ঠানিকভাবে সংজ্ঞায়িত ইন্টারফেসের চারপাশে ডিজাইন করা হয়।
সংজ্ঞায়িত ইন্টারফেস
- বিল্ড প্রোভাইডার: পরীক্ষা করার জন্য বিল্ড প্রদান করে এবং প্রয়োজন হলে উপযুক্ত ফাইল ডাউনলোড করে।
- টার্গেট প্রস্তুতকারক: টেস্ট এনভায়রনমেন্ট প্রস্তুত করে, যার মধ্যে সম্ভবত সফ্টওয়্যার ইনস্টলেশন এবং ডিভাইস কনফিগারেশন অন্তর্ভুক্ত থাকে।
- টেস্ট: টেস্ট রান করে এবং টেস্টের ফলাফল সংগ্রহ করে। এটি যেকোনও JUnit টেস্ট হতে পারে, যদিও আমাদের IRemoteTest ইন্টারফেসটি বিশেষভাবে Trade Federation এনভায়রনমেন্টে ভালোভাবে কাজ করার জন্য ডিজাইন করা হয়েছে।
- টেস্ট ইনভোকেশন লিসেনার (ফলাফল রিপোর্টিং): টেস্টের ফলাফল শোনে, সাধারণত টেস্টের ফলাফল কোনও রিপোজিটরিতে ফরওয়ার্ড করার জন্য অথবা টেস্ট রানারে দেখানোর জন্য।
TF-এর মূল টেস্টিং এন্টিটি হল কনফিগারেশন (config)। কনফিগ হল একটি XML ফাইল যা কোনও পরীক্ষার লাইফসাইকেল কম্পোনেন্ট ঘোষণা করে।
পরীক্ষার লাইফসাইকেলকে আলাদা করার উদ্দেশ্য হল যাতে এটি আবার ব্যবহার করা যায়। এই ডিজাইন ব্যবহার করে, ডেভেলপার একবার টেস্ট তৈরি করতে পারেন এবং তারপর ইন্টিগ্রেটর বিভিন্ন পরিবেশে সেই টেস্ট চালানোর জন্য আলাদা কনফিগারেশন তৈরি করতে পারেন। যেমন, তারা এমন একটি কনফিগারেশন তৈরি করতে পারে যা লোকাল মেশিনে একটি টেস্ট রান করবে এবং ফলাফলটি stdout-এ ডাম্প করবে। তারপর তারা একটি দ্বিতীয় কনফিগারেশন তৈরি করতে পারে যা একই পরীক্ষা চালাবে, কিন্তু একটি ব্যবহার করবে একটি ডাটাবেসে পরীক্ষার ফলাফল সংরক্ষণ করতে বিভিন্ন টেস্ট ইনভোকেশন লিসেনার। তৃতীয় কনফিগারেশন কোথাও কোনও টেস্ট ল্যাব থেকে সেই টেস্টটি একটানা চালানোর জন্য ডিজাইন করা হতে পারে।
এখানে উল্লেখ করা সুবিধাজনক যে, কমান্ড-লাইন আর্গুমেন্ট (টেস্ট রানার দ্বারা প্রদত্ত) সহ একটি কনফিগারেশনকে কমান্ড বলা হয়। TF যখন কোনও কমান্ডের সাথে
ITestDevice পেয়ার করে এবং সেটি এক্সিকিউট করে, তখন পরবর্তী অবজেক্টকে ইনভোকেশন বলা হয়।
সংক্ষেপে, ইনভোকেশন বলতে সম্পূর্ণ TF টেস্টের এক্সিকিউশনকে বোঝায়, যা সেটির সম্পূর্ণ লাইফসাইকেল জুড়ে চলে।
অতিরিক্ত কনফিগারেশন কম্পোনেন্ট
- ডিভাইস রিকভারি: ডিভাইস কানেকশন বিচ্ছিন্ন হয়ে গেলে তা ফিরিয়ে আনার মেকানিজম।
- Logger: tradefed লগিং ডেটা সংগ্রহ করে।
স্টেজের আউটপুট ও সমস্যা
ইনভোকেশনের প্রতিটি ধাপ ক্রমানুসারে এক্সিকিউট হয় এবং এর একটি নির্দিষ্ট লক্ষ্য থাকে। এই বিভাগে প্রতিটি ধাপের সাধারণ আউটপুট ও সমস্যার বিবরণ দেওয়া হয়েছে।
প্রদানকারী তৈরি করা
এই পর্যায়ে একটি
IBuildInfo
অবজেক্ট তৈরি ও আউটপুট করা হয় যাতে টেস্ট সেট-আপ ও রান করার জন্য প্রয়োজনীয় সব ফাইলের রেফারেন্স থাকে।
এই পর্যায়ে সবচেয়ে সাধারণ সমস্যা হল অনুরোধ করা ফাইল ডাউনলোড করতে বা খুঁজে পেতে না পারা।
এই পর্যায়ে কোনও সমস্যা হলে, সরাসরি সেই সমস্যার ব্যাপারে রিপোর্ট করা হয় এবং কোনও পরীক্ষা চালানো হয় না।
টার্গেট প্রস্তুতি
এই পর্যায়ে, পরীক্ষা করা হচ্ছে এমন টার্গেটের জন্য প্রয়োজনীয় স্টেট সেট-আপ করা হয়। এই পর্যায়ে, প্রদত্ত টেস্ট ইনভোকেশনের জন্য প্রয়োজন অনুযায়ী ডিভাইস বা হোস্ট সেট-আপ পরিবর্তন করা যেতে পারে।
এই পর্যায়ে সাধারণত যে সমস্যাগুলি হয় সেগুলি হল ডিভাইসকে নির্দিষ্ট অবস্থায় সেট-আপ করতে না পারা (যেমন, ফ্ল্যাশ করতে না পারা) এবং সেট-আপের জন্য প্রয়োজনীয় ফাইল খুঁজে না পাওয়া।
এই পর্যায়ে কোনও সমস্যা হলে, টার্গেট ক্লিন-আপ রান করে, সমস্যার রিপোর্ট করা হয় এবং কোনও টেস্ট রান করা হয় না।
পরীক্ষা
এই ধাপে, আগে থেকে প্রস্তুত করা টার্গেটে অনুরোধ করা টেস্ট চালানো হয় এবং টেস্টের ফলাফল রিপোর্ট করা হয়।
এই পর্যায়ে সাধারণত যে সমস্যাগুলি হয় তার মধ্যে রয়েছে, পরীক্ষা করা টার্গেট উপলভ্য না থাকা অথবা কিছু সমস্যার কারণে টেস্ট আংশিক এক্সিকিউট হওয়া। এইসব সমস্যা হল ইনফ্রাস্ট্রাকচার সংক্রান্ত সমস্যা যা একটি টেস্ট কেস ব্যর্থ হওয়ার পরিবর্তে টেস্ট এক্সিকিউশনকেই প্রভাবিত করে।
এই পর্যায়ে কোনও সমস্যা হলে টেস্ট এক্সিকিউশন বন্ধ হয়ে যায়, টার্গেট ক্লিন-আপ চলতে থাকে, সমস্যার ব্যাপারে রিপোর্ট করা হয় এবং আংশিক ফলাফল পাওয়া যায়।
ফলাফল রিপোর্টিং
এই পর্যায়ে, কনফিগার করা পরিষেবাতে (যেমন, সার্ভার ও লোকাল ফাইল) ফলাফল ও সমস্যা রিপোর্ট করা হয়।
যদিও স্বতন্ত্র ফলাফল রিপোর্টারদের ভুল হতে পারে, তবে সেগুলি একে অপরের থেকে আলাদা (একজন রিপোর্টার অন্যজনের ভুল দেখতে পান না)। এইসব সমস্যা শুধুমাত্র কোনও একজন রিপোর্টারের নিজস্ব ফলাফল রিপোর্টিংকে প্রভাবিত করে এবং লগ থেকে সমস্যাগুলি দেখা যেতে পারে।