TestNG একটি শক্তিশালী টেস্টিং ফ্রেমওয়ার্ক যা টেস্ট কেসগুলোকে পুনরায় চালানোর (retry) সুবিধা প্রদান করে। কিছু ক্ষেত্রে টেস্ট কেসগুলো প্রথম বার রান করার সময় ফেইল করতে পারে, এবং সেক্ষেত্রে টেস্ট পুনরায় চালানো প্রয়োজন হতে পারে। TestNG-এ Retry Logic প্রয়োগ করা খুব সহজ, এবং এটি মূলত টেস্ট কেসগুলোর পুনরায় চেষ্টা করার প্রক্রিয়াকে স্বয়ংক্রিয়ভাবে পরিচালনা করে।
Retry Logic কিভাবে কাজ করে
TestNG-এ Retry Logic ব্যবহার করার জন্য একটি ক্লাস তৈরি করতে হবে যা IRetryAnalyzer ইন্টারফেস ইমপ্লিমেন্ট করবে। এই ইন্টারফেসটি টেস্ট ফেইল হওয়ার পরে পুনরায় চেষ্টা করার জন্য কাস্টম লজিক নির্ধারণ করতে সাহায্য করে। আপনি এখানে পুনরায় চেষ্টা করার সংখ্যা এবং শর্ত কনফিগার করতে পারবেন।
IRetryAnalyzer ইন্টারফেস ব্যবহার
IRetryAnalyzer ইন্টারফেসটি retry মেথড প্রদান করে, যা প্রত্যেকটি ফেইল হওয়া টেস্ট কেসের জন্য পুনরায় চেষ্টা করার লজিক বাস্তবায়ন করে।
নিচে এর উদাহরণ দেখানো হল:
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
public class RetryAnalyzer implements IRetryAnalyzer {
private int count = 0;
private static final int MAX_RETRY_COUNT = 3; // maximum number of retries
@Override
public boolean retry(ITestResult iTestResult) {
if (count < MAX_RETRY_COUNT) {
count++;
return true; // retry the test
}
return false; // no more retries
}
}
এখানে:
count- একটি কাউন্টার, যা ট্র্যাক করে যে কত বার টেস্ট কেস পুনরায় চেষ্টা করা হয়েছে।MAX_RETRY_COUNT- পুনরায় চেষ্টা করার সর্বাধিক সংখ্যা (এখানে ৩ বার)।retry()- এই মেথডটি রিটার্ন করবেtrueযদি টেস্ট কেসটি পুনরায় চালাতে চাওয়া হয়, এবংfalseযদি পুনরায় চালানোর প্রয়োজন না থাকে।
Retry Logic টেস্ট কেসে প্রয়োগ করা
এখন আপনাকে আপনার টেস্ট কেসে @Test অ্যানোটেশন ব্যবহার করে RetryAnalyzer ইমপ্লিমেন্ট করতে হবে। এটি কিভাবে করা হবে, তা নিচে দেখানো হল:
import org.testng.annotations.Test;
public class TestRetry {
@Test(retryAnalyzer = RetryAnalyzer.class)
public void testMethod() {
System.out.println("Running testMethod");
// এখানে একটি ইচ্ছাকৃত ব্যতিক্রম (exception) তৈরি করা হচ্ছে
if (Math.random() < 0.5) {
throw new RuntimeException("Test failed, retrying...");
}
}
}
এখানে:
@Test(retryAnalyzer = RetryAnalyzer.class)- এটিtestMethod-এ Retry Logic প্রয়োগ করে।- যদি
testMethodফেইল হয়, তবেRetryAnalyzerক্লাসটি টেস্ট কেসটি পুনরায় চালাবে, যতক্ষণ নাMAX_RETRY_COUNTপৌঁছায়।
Retry Logic এর সুবিধা
- ফেইল হওয়ার পর পুনরায় চেষ্টা: অনেক সময় নির্দিষ্ট কারণে টেস্ট কেস প্রথমবার ফেইল হতে পারে, যেমন নেটওয়ার্ক ইস্যু বা র্যান্ডম ফ্যাক্টর। Retry Logic ফেইল হওয়া টেস্টগুলোকে পুনরায় চালানোর মাধ্যমে পরীক্ষা সফল হওয়ার সুযোগ বাড়ায়।
- টেস্ট ফেইলিংয়ের কারণ নির্ধারণে সাহায্য: কিছু ক্ষেত্রে, ফেইল হওয়া টেস্টগুলো পুনরায় চালানো হলে, সমস্যা বুঝতে এবং সঠিক সমাধান বের করতে সহায়তা করে।
- স্ট্যাবলিটি বৃদ্ধি: কোনো নির্দিষ্ট টেস্ট কেসের কারণে পুরো টেস্ট স্যুট ফেইল না হয়ে শুধু ঐ টেস্ট কেসটি পুনরায় চালানো সম্ভব হয়, যা টেস্ট স্যুটের স্থিতিশীলতা বৃদ্ধি করে।
সারাংশ
TestNG-এ Retry Logic প্রয়োগ করার মাধ্যমে আপনি টেস্ট কেসগুলোর পুনরায় চেষ্টা করার সুবিধা পাবেন। এটি টেস্ট ফলাফল সঠিকভাবে নিশ্চিত করতে সহায়ক, বিশেষত যখন র্যান্ডম বা পরিবেশগত কারণে টেস্টগুলো ফেইল হয়। IRetryAnalyzer ইন্টারফেস ব্যবহার করে এই লজিকটি কাস্টমাইজ করা যায় এবং পুনরায় চেষ্টা করার সংখ্যা নির্ধারণ করা সম্ভব।