জেমিটার (JMeter) ওয়েব অ্যাপ্লিকেশন বা সার্ভিসের পারফরম্যান্স টেস্ট করার জন্য শক্তিশালী একটি টুল। এর মধ্যে বিভিন্ন ধরনের Controllers রয়েছে, যেগুলি টেস্ট প্ল্যানের মধ্যে নির্দিষ্ট শর্ত (condition) অনুযায়ী রিকোয়েস্ট প্রেরণ এবং একাধিক রিকোয়েস্টের লজিক্যাল প্রবাহ নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এখানে আমরা If Controller, While Controller, এবং ForEach Controller এর ব্যবহার নিয়ে আলোচনা করব।
1. If Controller
If Controller একটি শর্তসাপেক্ষ (conditional) কম্পোনেন্ট, যা নির্দিষ্ট একটি শর্ত পূর্ণ হলে একটি সাবটাস্ক বা রিকোয়েস্ট চালাতে সহায়তা করে। এই কন্ট্রোলারের মাধ্যমে আপনি শর্তানুযায়ী নির্দিষ্ট কাজ বা রিকোয়েস্ট চালু বা বন্ধ করতে পারেন।
If Controller এর ব্যবহার:
- Condition: একটি শর্ত নির্ধারণ করা হয় যা যদি সত্য হয়, তবে শুধুমাত্র সেই সময় কার্যকর হবে।
- Use Case: যখন কোনো বিশেষ পরিস্থিতি বা ডেটার উপর ভিত্তি করে একটি নির্দিষ্ট রিকোয়েস্ট চালানোর প্রয়োজন হয়।
উদাহরণ:
ধরা যাক, একটি পেজে লগইন করার পর যদি রেসপন্স কোড 200 হয়, তবে পরবর্তী পেজে পণ্যের তথ্য স্ক্র্যাপ করা হবে।
- If Controller ব্যবহার করার জন্য, প্রথমে Thread Group এর মধ্যে Add → Logic Controller → If Controller নির্বাচন করুন।
- Condition:
ResponseCode == 200(যদি সার্ভার 200 OK রেসপন্স দেয়) - Sub Requests: এর মধ্যে আপনি ঐ রিকোয়েস্টগুলো দিতে পারবেন যেগুলি আপনি 200 OK রেসপন্স পেলে চালাতে চান।
${__javaScript(${ResponseCode} == 200,)}
এই শর্তের মাধ্যমে, যদি রেসপন্স কোড 200 হয়, তবে ওই শর্তের অধীনে থাকা অন্যান্য রিকোয়েস্ট বা অপারেশন কার্যকর হবে।
2. While Controller
While Controller ব্যবহার করা হয় একটি শর্তীয় লুপ চালানোর জন্য। এটি সেইসময় পর্যন্ত রিকোয়েস্ট বা সাবটাস্ক চালিয়ে যায়, যতক্ষণ না নির্দিষ্ট শর্ত পূর্ণ হয়। এটি While Loop এর মতো কাজ করে, যেখানে শর্ত সত্য না হওয়া পর্যন্ত লুপ চলতে থাকে।
While Controller এর ব্যবহার:
- Condition: একটি শর্ত যা বারবার পরীক্ষা করা হয় যতক্ষণ না সেটি মিথ্যা না হয়।
- Use Case: যখন কিছু নির্দিষ্ট সংখ্যক বার একটি কাজ সম্পন্ন করতে হবে অথবা একটি নির্দিষ্ট শর্ত পূর্ণ না হওয়া পর্যন্ত কাজ চলতে থাকবে।
উদাহরণ:
ধরা যাক, আপনি একটি ওয়েব পেজের "Load More" বাটন ক্লিক করতে চান যতক্ষণ না সব পেজ লোড না হয়। আপনি এই শর্তে While Controller ব্যবহার করতে পারেন।
- While Controller ব্যবহার করার জন্য, প্রথমে Thread Group এর মধ্যে Add → Logic Controller → While Controller নির্বাচন করুন।
- Condition:
(${PageLoaded} == false)(যতক্ষণ না পেজ সম্পূর্ণ লোড হচ্ছে) - Sub Requests: এর মধ্যে আপনি ঐ রিকোয়েস্টগুলো যোগ করবেন যা লোডিং এর জন্য ব্যবহৃত হবে (যেমন, "Load More" ক্লিক করা)
${__javaScript(${PageLoaded} == false,)}
এতে যতক্ষণ না PageLoaded ভ্যারিয়েবল সত্য (true) হয়ে যায়, ততক্ষণ পর্যন্ত While Controller রিকোয়েস্ট পাঠিয়ে যাবে।
3. ForEach Controller
ForEach Controller এমন একটি কম্পোনেন্ট যা লিস্ট বা অ্যারে ডেটা ব্যবহার করে একটি লুপ তৈরি করে। এই কন্ট্রোলারের মাধ্যমে আপনি বিভিন্ন আইটেম বা ডেটার জন্য একাধিক রিকোয়েস্ট বা সাবটাস্ক চালাতে পারেন।
ForEach Controller এর ব্যবহার:
- Input Variable: একটি লিস্ট বা অ্যারে দেওয়া হয়, যা থেকে এক এক করে আইটেম নিয়ে রিকোয়েস্ট চালানো হয়।
- Use Case: যখন আপনার কাছে একটি ডেটা সেট বা লিস্ট থাকে এবং আপনি প্রতিটি আইটেমের জন্য আলাদা আলাদা রিকোয়েস্ট পাঠাতে চান।
উদাহরণ:
ধরা যাক, আপনি একাধিক ইউজারের জন্য লগইন রিকোয়েস্ট পাঠাতে চান। এই ক্ষেত্রে, আপনি ForEach Controller ব্যবহার করতে পারেন।
- ForEach Controller ব্যবহার করার জন্য, প্রথমে Thread Group এর মধ্যে Add → Logic Controller → ForEach Controller নির্বাচন করুন।
- Input Variable Prefix:
UserList(এটি একটি লিস্ট বা অ্যারে হবে যা ভ্যারিয়েবলের মাধ্যমে প্রদান করা হবে) - Sub Requests: এর মধ্যে আপনি ঐ রিকোয়েস্টগুলো দিবেন যেগুলি ইউজারদের জন্য পাঠানো হবে।
User1,User2,User3,User4
এটি প্রতিটি ইউজারের জন্য একে একে লগইন রিকোয়েস্ট পাঠাবে।
সারাংশ
জেমিটার (JMeter) এর If Controller, While Controller, এবং ForEach Controller অত্যন্ত গুরুত্বপূর্ণ টুল, যা বিভিন্ন ধরনের শর্ত, লুপ এবং ডেটা সেট পরিচালনা করতে সহায়তা করে।
- If Controller ব্যবহার করে শর্ত অনুযায়ী রিকোয়েস্ট চালানো যায়।
- While Controller একটি শর্তীয় লুপ তৈরি করে, যা শর্ত সত্য না হওয়া পর্যন্ত চলতে থাকে।
- ForEach Controller ব্যবহার করে আপনি লিস্ট বা অ্যারে থেকে একাধিক আইটেমের জন্য রিকোয়েস্ট পাঠাতে পারেন।
এই কম্পোনেন্টগুলির সাহায্যে আপনি টেস্ট প্ল্যানের মধ্যে লজিক্যাল ফ্লো কাস্টমাইজ করে টেস্টিং কার্যক্রম আরও দক্ষ ও নির্ভরযোগ্য করতে পারেন।
Read more