JMeter একটি শক্তিশালী টুল যা বিভিন্ন ধরনের টেস্টিং করতে সক্ষম, এবং এর মধ্যে রয়েছে BeanShell Scripting। BeanShell JMeter তে একটি স্ক্রিপ্টিং ল্যাঙ্গুয়েজ হিসেবে ব্যবহৃত হয় যা Java ভিত্তিক, তবে এটি খুবই সহজ এবং সহজে ব্যবহারযোগ্য। BeanShell এর মাধ্যমে আপনি JMeter টেস্টের মধ্যে ডায়নামিক আচরণ বা কাস্টম লজিক তৈরি করতে পারেন, যা সাধারাণভাবে সরাসরি JMeter কনফিগারেশন দ্বারা সম্ভব হয় না।
BeanShell Scripting কি?
BeanShell একটি Java-এর মতো স্ক্রিপ্টিং ল্যাঙ্গুয়েজ, যা JMeter তে বিভিন্ন কাস্টম স্ক্রিপ্টিং অপারেশন করতে ব্যবহার করা হয়। এটি মূলত Java কোডের সাথে সামঞ্জস্যপূর্ণ, তবে আরো সহজ এবং লঘু। JMeter এর মধ্যে BeanShell ব্যবহার করার মাধ্যমে আপনি কাস্টম ভ্যারিয়েবল বা ফাংশন তৈরি করতে পারেন, যা আপনার টেস্ট কেসের জন্য বিশেষভাবে দরকারী।
BeanShell Scripting এর ব্যবহার
JMeter তে BeanShell স্ক্রিপ্ট সাধারণত BeanShell PreProcessor, BeanShell PostProcessor, BeanShell Sampler, বা BeanShell Assertion এর মাধ্যমে ব্যবহার করা হয়। BeanShell স্ক্রিপ্টিং এর মাধ্যমে আপনি যেমন ডাইনামিক ভ্যারিয়েবল তৈরি করতে পারেন, তেমনি টেস্ট চলাকালে প্রোগ্রাম্যাটিক চেকও করতে পারেন।
উদাহরণ সহ BeanShell Scripting
উদাহরণ 1: BeanShell PreProcessor
BeanShell PreProcessor স্ক্রিপ্টটি রিকোয়েস্ট প্রেরণের আগে রান হয় এবং এটি প্রি-প্রসেসিং কাজ করতে ব্যবহৃত হয়। ধরুন, আপনি একটি API টেস্ট করছেন এবং প্রতিটি রিকোয়েস্টের জন্য একটি ডাইনামিক টোকেন তৈরি করতে চান।
Step 1: BeanShell PreProcessor যোগ করা
- HTTP Request এর উপর রাইট ক্লিক করুন এবং Add > Pre Processors > BeanShell PreProcessor নির্বাচন করুন।
- এবার BeanShell PreProcessor এর মধ্যে নিম্নলিখিত স্ক্রিপ্ট যুক্ত করুন:
// টোকেন তৈরি করা
String token = "Token_" + System.currentTimeMillis();
vars.put("dynamicToken", token); // "dynamicToken" একটি JMeter ভ্যারিয়েবল হিসেবে সংরক্ষণ করা হবে
Step 2: HTTP Request কনফিগার করা
এখন, আপনি HTTP Request এ Authorization বা অন্য যে কোনো জায়গায় ${dynamicToken} ব্যবহার করতে পারবেন। যেমন:
- Authorization Header:
Bearer ${dynamicToken}
এটি আপনার API রিকোয়েস্টে ডাইনামিক টোকেন ব্যবহার করবে, যা প্রতি রিকোয়েস্টে ভিন্ন হবে।
উদাহরণ 2: BeanShell PostProcessor
BeanShell PostProcessor স্ক্রিপ্টটি HTTP রিকোয়েস্টের রেসপন্স পাওয়ার পর রান হয়। ধরুন, আপনি API রেসপন্স থেকে একটি নির্দিষ্ট ভ্যালু (যেমন, একটি userId) এক্সট্র্যাক্ট করতে চান এবং সেটি পরবর্তী রিকোয়েস্টে ব্যবহার করতে চান।
Step 1: BeanShell PostProcessor যোগ করা
- HTTP Request এর উপর রাইট ক্লিক করুন এবং Add > Post Processors > BeanShell PostProcessor নির্বাচন করুন।
- BeanShell PostProcessor এর মধ্যে নিচের স্ক্রিপ্ট যোগ করুন:
// রেসপন্স থেকে userId এক্সট্র্যাক্ট করা
String response = prev.getResponseDataAsString();
String userId = response.substring(response.indexOf("userId\":\"") + 9, response.indexOf("\"", response.indexOf("userId\":\"") + 9));
vars.put("userId", userId); // এক্সট্র্যাক্ট করা userId কে JMeter ভ্যারিয়েবল হিসেবে সংরক্ষণ করা হবে
Step 2: HTTP Request কনফিগার করা
এখন, আপনি পরবর্তী HTTP Request এ ${userId} ব্যবহার করতে পারেন। যেমন:
- Path:
/getUserDetails/${userId}
এটি পরবর্তী রিকোয়েস্টে ডাইনামিকভাবে userId ইনপুট প্যারামিটার পাঠাবে।
উদাহরণ 3: BeanShell Assertion
BeanShell Assertion দিয়ে আপনি কাস্টম চেক করতে পারেন, যেমন রেসপন্স কোড যাচাই করা, রেসপন্সে নির্দিষ্ট কন্টেন্ট থাকা কিনা তা যাচাই করা ইত্যাদি।
Step 1: BeanShell Assertion যোগ করা
- HTTP Request এর উপর রাইট ক্লিক করুন এবং Add > Assertions > BeanShell Assertion নির্বাচন করুন।
- BeanShell Assertion এর মধ্যে নিচের স্ক্রিপ্ট যোগ করুন:
// রেসপন্স কোড চেক করা
int responseCode = prev.getResponseCode();
if (responseCode != 200) {
Failure = true; // রেসপন্স কোড ২০০ না হলে Assertion ফেল হবে
FailureMessage = "Expected 200, but got " + responseCode; // একটি কাস্টম মেসেজ প্রদান
}
এটি চেক করবে যে, HTTP রেসপন্স কোড ২০০ কিনা। যদি না হয়, তাহলে Assertion ফেল হবে এবং একটি কাস্টম মেসেজ দেখানো হবে।
BeanShell Scripting এর সুবিধা
- ডাইনামিক ডেটা প্রোসেসিং: JMeter তে আপনি যেকোনো সময় ডাইনামিক ভ্যারিয়েবল বা কাস্টম লজিক যোগ করতে পারেন।
- Java কোডের সহজ ব্যবহার: BeanShell Java ভিত্তিক একটি স্ক্রিপ্টিং ভাষা, যা Java কোড লিখতে জানলে খুবই সহজ।
- API রেসপন্স থেকে ডেটা এক্সট্র্যাকশন: আপনি API রেসপন্স থেকে ডেটা এক্সট্র্যাক্ট করে পরবর্তী রিকোয়েস্টে ব্যবহার করতে পারেন।
- কাস্টম চেক এবং লজিক: JMeter এর সাধারণ টুলস দিয়ে যেসব জটিল কাজ করা সম্ভব নয়, তা BeanShell স্ক্রিপ্টিং দিয়ে করা যায়।
BeanShell Scripting এর সীমাবদ্ধতা
- পারফরম্যান্স: BeanShell Java ভিত্তিক হলেও, JMeter এর অন্যান্য কম্পোনেন্টের তুলনায় কিছুটা ধীর হতে পারে।
- স্কেলেবিলিটি: বড় স্কেল টেস্টিংয়ে BeanShell স্ক্রিপ্ট ব্যবহার করলে পারফরম্যান্সে কিছু সমস্যা হতে পারে, কারণ এটি ভারী স্ক্রিপ্টিং প্রক্রিয়া।
সারাংশ
JMeter তে BeanShell Scripting আপনাকে কাস্টম স্ক্রিপ্ট তৈরি করার সুযোগ দেয়, যা জটিল টেস্ট কেস বা ডাইনামিক আচরণ সিমুলেট করার জন্য খুবই কার্যকরী। BeanShell PreProcessor, PostProcessor, এবং Assertion ব্যবহার করে আপনি API রেসপন্স থেকে ডেটা এক্সট্র্যাক্ট করতে, কাস্টম চেক করতে এবং ডাইনামিকভাবে টেস্ট কেস সাজাতে পারেন। এটি JMeter টেস্ট কনফিগারেশনে আরো ফ্লেক্সিবিলিটি এবং কার্যক্ষমতা যোগ করে।