জেমিটার (JMeter) একটি শক্তিশালী টুল যা ওয়েব অ্যাপ্লিকেশন এবং সার্ভিসের লোড, পারফরম্যান্স এবং স্ট্রেস টেস্টিংয়ে ব্যবহৃত হয়। Parameterization এবং Correlation দুটি গুরুত্বপূর্ণ কৌশল, যা আপনাকে ডাইনামিক ডেটা এবং সেশন ইনফরমেশন নিয়ে কাজ করতে সাহায্য করে। এই দুটি কৌশল একসাথে ব্যবহার করলে আপনার টেস্ট কেস আরও বাস্তবসম্মত এবং কার্যকরী হয়ে ওঠে।
এই গাইডে, আমরা Parameterization এবং Correlation এর ধারণা, প্রয়োজনীয়তা এবং ব্যবহার নিয়ে আলোচনা করব।
Parameterization কি?
Parameterization হলো সেই প্রক্রিয়া যার মাধ্যমে আমরা একই রিকোয়েস্টে বিভিন্ন ভ্যালু ইনপুট হিসেবে প্রদান করি, যাতে একাধিক ভ্যালু দিয়ে একাধিক রিকোয়েস্ট পাঠানো সম্ভব হয়। এটি একাধিক ভ্যালু ব্যবহার করে বিভিন্ন ডেটা পয়েন্টের উপর টেস্ট পরিচালনা করতে সহায়তা করে।
Parameterization এর প্রয়োজনীয়তা
১. ডাইনামিক ডেটার ব্যবহার: ওয়েব অ্যাপ্লিকেশনগুলি সাধারণত বিভিন্ন ডেটার উপর কাজ করে, যেমন ইউজার আইডি, সার্চ কুয়েরি, ইত্যাদি। Parameterization ব্যবহার করে আপনি ডাইনামিকভাবে বিভিন্ন ডেটার উপর পরীক্ষা চালাতে পারেন।
২. একাধিক ইনপুটের সঙ্গে টেস্টিং: একাধিক ভ্যালু বা ডেটা দিয়ে একই রিকোয়েস্টটি একাধিকবার টেস্ট করা যায়, যা কার্যকরীভাবে লোড টেস্টিং এবং ডাটা-ড্রিভেন টেস্টিংয়ের জন্য সহায়ক।
৩. ডেটা ড্রিভেন টেস্টিং: Parameterization আপনাকে একই টেস্ট কেসের মাধ্যমে ভিন্ন ভিন্ন ইনপুট দিয়ে একাধিক টেস্ট কেস চালানোর সুযোগ দেয়।
জেমিটার Parameterization কিভাবে কাজ করে?
Parameterization করতে হলে, আপনাকে বিভিন্ন ইনপুট ডেটা ফাইল (যেমন CSV) ব্যবহার করতে হবে এবং সেই ডেটা ফাইলের ভিতরের ভ্যালু গুলো এক্সট্র্যাক্ট করে রিকোয়েস্টের ভ্যালুতে বসাতে হবে।
উদাহরণ:
CSV ডেটা ফাইলের মধ্যে নিম্নলিখিত ডেটা থাকতে পারে:
Username,Password
user1,password1
user2,password2
user3,password3
এই ডেটা ফাইলটি JMeter-এ ব্যবহার করতে, CSV Data Set Config এ সেটিংস করে রিকোয়েস্টে ডায়নামিক ডেটা ব্যবহার করা যায়।
- CSV Data Set Config যোগ করুন।
- Filename-এ CSV ফাইলের লোকেশন দিন।
- Variable Names-এ "Username,Password" নাম দিন।
- তারপর HTTP Request-এ
${Username}এবং${Password}ব্যবহার করুন।
Correlation কি?
Correlation হলো সেই প্রক্রিয়া, যার মাধ্যমে আমরা সার্ভার থেকে প্রাপ্ত ডাইনামিক ডেটা (যেমন সেশন আইডি, টোকেন, অথবা রেফারেন্স কোড) ক্যাপচার করি এবং পরবর্তী রিকোয়েস্টে এটি ব্যবহার করি। ওয়েব অ্যাপ্লিকেশন অনেক সময় ডাইনামিক ডেটা পাঠায়, যা প্রতিটি রিকোয়েস্টের জন্য ভিন্ন হয়। এই ডেটাগুলি পরবর্তী রিকোয়েস্টে ব্যবহৃত হতে পারে। Correlation এর মাধ্যমে সেই ডেটা এক্সট্র্যাক্ট করে পুনরায় ব্যবহার করা হয়।
Correlation এর প্রয়োজনীয়তা
১. সেশন ইনফরমেশন: বেশিরভাগ ওয়েব অ্যাপ্লিকেশন সেশন পরিচালনা করে, যেখানে ইউজার লগইন করার পর একটি সেশন টোকেন প্রদান করা হয়। পরবর্তী রিকোয়েস্টগুলির জন্য এই সেশন টোকেনটি প্রয়োজনীয়।
২. ডাইনামিক ভ্যালু এক্সট্র্যাকশন: ওয়েবপেজ রেসপন্সে বিভিন্ন ডাইনামিক ডেটা থাকতে পারে, যেমন রেফারেন্স কোড, সার্ভার টোকেন, বা র্যান্ডম ভ্যালু। এগুলি পরবর্তী রিকোয়েস্টে ব্যবহার করা প্রয়োজন হতে পারে।
৩. এন্টারপ্রাইজ সিস্টেমের সাথে টেস্টিং: যখন ওয়েব অ্যাপ্লিকেশন একাধিক ডাইনামিক রিকোয়েস্ট তৈরি করে, Correlation ব্যবহার করে রিকোয়েস্টের মধ্যে সম্পর্ক তৈরি করা হয় এবং সঠিক ফলাফল নিশ্চিত করা হয়।
জেমিটার Correlation কিভাবে কাজ করে?
Correlation করার জন্য আপনাকে রিকোয়েস্ট থেকে ডাইনামিক ডেটা এক্সট্র্যাক্ট করতে হবে এবং তারপর সেই ডেটা পরবর্তী রিকোয়েস্টে ব্যবহার করতে হবে। এটি সাধারণত Regular Expression Extractor অথবা JSON Extractor ব্যবহার করে করা হয়।
উদাহরণ:
ধরা যাক, আপনি একটি লগইন রিকোয়েস্টে সেশন আইডি পেয়ে থাকেন, যা আপনি পরবর্তী রিকোয়েস্টে ব্যবহার করতে চান। প্রথম রিকোয়েস্ট থেকে সেশন আইডি এক্সট্র্যাক্ট করার জন্য, আপনাকে Regular Expression Extractor ব্যবহার করতে হবে।
- Regular Expression Extractor যোগ করুন।
- Reference Name:
sessionID - Regular Expression:
session_id=([a-zA-Z0-9]+) - Template:
$1$ - Match No.:
1
এখন, আপনি পরবর্তী HTTP Request-এ ${sessionID} ব্যবহার করতে পারবেন।
Parameterization এবং Correlation এর মধ্যে পার্থক্য
| দিক | Parameterization | Correlation |
|---|---|---|
| কাজ | বিভিন্ন ইনপুট ডেটা দিয়ে একাধিক রিকোয়েস্ট পাঠানো | সার্ভার থেকে প্রাপ্ত ডাইনামিক ডেটা (যেমন সেশন টোকেন) এক্সট্র্যাক্ট করে পরবর্তী রিকোয়েস্টে ব্যবহার করা |
| ব্যবহার | একাধিক ইনপুট বা ডেটা দিয়ে একই রিকোয়েস্টের একাধিক ভ্যারিয়েন্ট তৈরি করা | ডাইনামিক ভ্যালু ক্যাপচার এবং পরবর্তী রিকোয়েস্টে ব্যবহার করা |
| ডেটা সোর্স | CSV ফাইল, Excel, বা অন্যান্য ডেটা সোর্স | রেসপন্স থেকে এক্সট্র্যাক্ট করা ডাইনামিক ডেটা |
সারাংশ
Parameterization এবং Correlation জেমিটার টেস্ট প্ল্যানের দুইটি গুরুত্বপূর্ণ অংশ যা আপনার ওয়েব অ্যাপ্লিকেশন বা সার্ভিসের টেস্টিংকে আরও বাস্তবসম্মত এবং ডাইনামিক করে তোলে। Parameterization ব্যবহার করে আপনি একাধিক ইনপুট ডেটা দিয়ে একই রিকোয়েস্ট চালাতে পারেন, যা আপনাকে ডেটা-ড্রিভেন টেস্টিং করতে সহায়তা করে। Correlation ব্যবহার করে আপনি রেসপন্স থেকে ডাইনামিক ডেটা এক্সট্র্যাক্ট করে তা পরবর্তী রিকোয়েস্টে ব্যবহার করতে পারেন, যা আপনার টেস্টকে আরও বাস্তবসম্মত এবং কার্যকরী করে তোলে।
Parameterization হল একটি গুরুত্বপূর্ণ ধারণা JMeter টেস্টিংয়ে, যা আপনার টেস্ট কেসে ভ্যারিয়েবল ব্যবহার করার সুযোগ দেয়। এটি আপনাকে বিভিন্ন ইনপুট ভ্যালু দিয়ে একাধিক রিকোয়েস্ট চালানোর সুবিধা প্রদান করে, যার ফলে আপনি প্রকৃত ব্যবহারকারীদের মতো ডায়নামিক টেস্টিং করতে পারেন। সাধারণত, ওয়েব অ্যাপ্লিকেশন বা ওয়েব সার্ভিসের টেস্টিং করার সময় একাধিক ইনপুট ভ্যালু প্রয়োজন হয়, এবং parameterization এর মাধ্যমে এই ইনপুটগুলো পরিচালনা করা যায়।
Parameterization এর প্রয়োজন কেন?
Parameterization ব্যবহারের মাধ্যমে আপনি স্ট্যাটিক ইনপুট ভ্যালু থেকে ডায়নামিক ইনপুট ভ্যালু ব্যবহার করতে পারেন, যা সিমুলেটেড ইউজারের প্রাকৃতিক আচরণকে অনুকরণ করে। এটি টেস্টের ভারসাম্য এবং বাস্তবতা নিশ্চিত করতে সাহায্য করে, বিশেষ করে যখন বিভিন্ন ভ্যারিয়েবল বা ডেটা দিয়ে একাধিক রিকোয়েস্ট প্রেরণ করা হয়।
Parameterization এর সুবিধা
- ভিন্ন ইনপুট দিয়ে একাধিক রিকোয়েস্ট:
- Parameterization এর মাধ্যমে আপনি বিভিন্ন ইনপুটের জন্য রিকোয়েস্ট পাঠাতে পারেন। যেমন, বিভিন্ন ইউজারনেম, পাসওয়ার্ড, অথবা ডেটাবেজের ভিন্ন ভিন্ন ভ্যালু দিয়ে আপনার টেস্ট চালানো যেতে পারে।
- বিভিন্ন ইউজার সিমুলেট করা:
- এটি একটি ওয়েব অ্যাপ্লিকেশন বা সার্ভিসের একাধিক ইউজারের সিমুলেশন তৈরি করে, যেখানে প্রতিটি ইউজারের ইনপুট ভিন্ন হতে পারে (যেমন, ইউজার ১ এর জন্য ইউজারনেম
user1এবং ইউজার ২ এর জন্যuser2)।
- এটি একটি ওয়েব অ্যাপ্লিকেশন বা সার্ভিসের একাধিক ইউজারের সিমুলেশন তৈরি করে, যেখানে প্রতিটি ইউজারের ইনপুট ভিন্ন হতে পারে (যেমন, ইউজার ১ এর জন্য ইউজারনেম
- ডাইনামিক টেস্টিং:
- Parameterization এর মাধ্যমে আপনি ডায়নামিক টেস্টিং করতে পারেন, যেখানে ইনপুট ভ্যালু বিভিন্ন রান-এর মধ্যে পরিবর্তিত হয়, এবং প্রতিটি রিকোয়েস্ট একটি নতুন সেট ইনপুট পায়।
- রিয়েল-টাইম লোড টেস্টিং:
- আপনি বিভিন্ন টাইপের ইনপুট দিয়ে একাধিক লোড টেস্ট করতে পারবেন এবং বাস্তব সিচুয়েশন অনুকরণ করতে পারবেন।
- বড় ডেটাসেটের উপর টেস্টিং:
- যখন বড় ডেটাসেট ব্যবহৃত হয়, তখন Parameterization এর মাধ্যমে সেগুলি ব্যবহার করে লোড টেস্ট করা সম্ভব হয়।
JMeter এ Parameterization কিভাবে কাজ করে?
JMeter তে Parameterization করার জন্য আপনি সাধারণত CSV Data Set Config কম্পোনেন্ট ব্যবহার করবেন। এই কম্পোনেন্টের মাধ্যমে আপনি CSV বা Excel ফাইল থেকে ডেটা ইমপোর্ট করে টেস্ট চলাকালীন বিভিন্ন ভ্যারিয়েবল দিয়ে টেস্ট করতে পারবেন।
উদাহরণ সহ Parameterization:
ধরা যাক, আপনার কাছে একটি CSV ফাইল আছে যার মধ্যে ইউজারনেম এবং পাসওয়ার্ড এর তালিকা রয়েছে:
CSV ফাইল (users.csv):
| Username | Password |
|---|---|
| user1 | pass1 |
| user2 | pass2 |
| user3 | pass3 |
এখন, আপনি এই CSV ফাইলটি JMeter এর CSV Data Set Config এর মাধ্যমে ইনপুট হিসেবে ব্যবহার করতে পারবেন।
Step 1: CSV Data Set Config যোগ করা
- Thread Group তে রাইট ক্লিক করুন এবং Add > Config Element > CSV Data Set Config নির্বাচন করুন।
- CSV Data Set Config কনফিগার করুন:
- Filename: আপনার CSV ফাইলের পাথ (যেমন,
users.csv)। - Variable Names: এখানে আপনি CSV ফাইলের কলামের নাম দেবেন, যেমন
Username, Password। - Delimiter: যদি আপনার CSV ফাইলটি কমা দিয়ে আলাদা থাকে, তাহলে
,দিয়ে সেট করুন।
- Filename: আপনার CSV ফাইলের পাথ (যেমন,
Step 2: HTTP Request কনফিগার করা
এখন, HTTP Request এর মধ্যে আপনি ${Username} এবং ${Password} ব্যবহার করবেন, যাতে সেগুলো CSV ফাইল থেকে ডায়নামিকভাবে নেয়া হয়।
HTTP Request Example:
- Server Name or IP:
www.example.com - Path:
/login - Parameters:
- username:
${Username} - password:
${Password}
- username:
এটি নিশ্চিত করবে যে, প্রতিটি থ্রেডের জন্য (যেমন, ইউজার ১, ইউজার ২, ইউজার ৩), আপনি ভিন্ন ইউজারনেম এবং পাসওয়ার্ড দিয়ে রিকোয়েস্ট করবেন।
Step 3: Test চালানো
এখন আপনি Start বাটনে ক্লিক করলে, JMeter প্রতিটি ইউজারের জন্য আলাদা রিকোয়েস্ট প্রেরণ করবে এবং প্রতিটি রিকোয়েস্টে নতুন ইউজারনেম এবং পাসওয়ার্ড ব্যবহার হবে।
অন্যান্য Parameterization Techniques
- User Defined Variables:
- আপনি JMeter এর User Defined Variables ব্যবহার করে স্ট্যাটিক ভ্যারিয়েবলও পাস করতে পারেন। যেমন, আপনি একটি URL বা API Key সংরক্ষণ করতে পারবেন এবং সেটা পুরো টেস্টে ব্যবহার করতে পারবেন।
- JMeter Functions:
- JMeter বিভিন্ন বিল্ট-ইন ফাংশন যেমন
${__Random()},${__time()},${__UUID()}ইত্যাদি ব্যবহার করে ডায়নামিক ডেটা তৈরি করতে সাহায্য করে।
- JMeter বিভিন্ন বিল্ট-ইন ফাংশন যেমন
কেন Parameterization প্রয়োজন?
- বিভিন্ন ইউজারের সিমুলেশন: একাধিক ইউজারের জন্য রিকোয়েস্ট পাঠানোর মাধ্যমে আপনি বুঝতে পারবেন আপনার অ্যাপ্লিকেশন কতটা কার্যকরী এবং কতটা লোড ম্যানেজ করতে সক্ষম।
- লাইভ ডেটা স্কেলিং: লাইভ ডেটা বা বিভিন্ন ইনপুট দিয়ে আপনার অ্যাপ্লিকেশন টেস্ট করা, যা প্রকৃত ইউজারের আচরণ অনুকরণ করে।
- পারফরম্যান্স টেস্টিং: লোড টেস্টিং এবং স্ট্রেস টেস্টিংয়ের জন্য একাধিক ইনপুট এবং ডেটার প্রয়োজন হয়, যা parameterization দ্বারা সম্ভব হয়।
- ডায়নামিক টেস্টিং: বিভিন্ন ভ্যারিয়েবল ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশন বা সার্ভিসের বিভিন্ন পরিস্থিতি পরীক্ষা করতে পারবেন।
সারাংশ
JMeter এর Parameterization ওয়েব অ্যাপ্লিকেশন এবং সার্ভিস টেস্টিংয়ের জন্য অপরিহার্য একটি টুল। এটি আপনাকে ডায়নামিকভাবে ইনপুট ভ্যালু প্রদান করতে এবং বাস্তব ইউজারের মতো বিভিন্ন কেসে পরীক্ষা চালাতে সহায়তা করে। CSV Data Set Config বা User Defined Variables এর মাধ্যমে আপনি সহজেই আপনার টেস্ট স্ক্রিপ্টে ভ্যারিয়েবল যোগ করতে পারেন এবং বিভিন্ন ডেটা দিয়ে রিকোয়েস্ট পাঠাতে পারেন। Parameterization এর মাধ্যমে আপনি সঠিক পারফরম্যান্স, লোড, এবং স্ট্রেস টেস্টিং পরিচালনা করতে পারবেন।
জেমিটার (JMeter) পারফরম্যান্স টেস্টিং এবং লোড টেস্টিং-এর জন্য একটি জনপ্রিয় ওপেন সোর্স টুল। এটি HTTP রিকোয়েস্ট, ডেটাবেস কননেকশন, এবং বিভিন্ন ধরনের সার্ভিস টেস্ট করতে ব্যবহৃত হয়। User-Defined Variables এবং Functions জেমিটারের মধ্যে খুবই গুরুত্বপূর্ণ উপাদান, যা টেস্টের স্বাভাবিক কাজের জন্য কাস্টমাইজেশন এবং ডাইনামিক্যালি ডেটা পরিচালনা করার সুযোগ প্রদান করে।
এই গাইডে, আমরা জানবো কীভাবে User-Defined Variables এবং Functions ব্যবহার করা যায় জেমিটারে, যাতে টেস্টের কাস্টমাইজেশন এবং কার্যকারিতা বৃদ্ধি পায়।
User-Defined Variables কি?
User-Defined Variables হলো এমন ভেরিয়েবল, যেগুলি আপনি নিজে নির্ধারণ করেন এবং এগুলি জেমিটার টেস্ট প্ল্যানের মধ্যে বিভিন্ন উপাদানকে প্রভাবিত করতে ব্যবহৃত হয়। এই ভেরিয়েবলগুলি আপনি বিভিন্ন স্যাম্পলার বা কনফিগারেশন উপাদানে ব্যবহার করতে পারেন, যেমন URL, প্যারামিটার, হেডার, ইত্যাদি।
User-Defined Variables ব্যবহারের সুবিধা
- কাস্টম কনফিগারেশন: আপনি টেস্ট প্ল্যানের মধ্যে প্যারামিটারাইজড কনফিগারেশন তৈরি করতে পারেন, যা আপনার টেস্টকে আরও ডাইনামিক এবং কাস্টমাইজড করে তোলে।
- ডেটা রিপিটেবল: একই ভেরিয়েবল একাধিক রিকোয়েস্টে ব্যবহার করা যায়, যা টেস্টের পুনরাবৃত্তির সুবিধা দেয়।
- সহজ মান পরিবর্তন: আপনি সহজেই কোন মান পরিবর্তন করতে পারবেন এবং তা সরাসরি সমস্ত স্যাম্পলার ও কনফিগারেশনে প্রভাব ফেলবে।
User-Defined Variables কনফিগার করা:
১. Test Plan-এ রাইট ক্লিক করুন এবং Add → Config Element → User Defined Variables সিলেক্ট করুন। ২. এটি একটি নতুন User Defined Variables এলিমেন্ট যোগ করবে। ৩. ভেরিয়েবল নাম এবং মান (value) যোগ করুন।
উদাহরণ:
ধরা যাক, আপনি একটি API-এর URL এবং API কী কনফিগার করতে চান। তাহলে আপনি নিচের মতো ভেরিয়েবল সেট করতে পারেন:
| Variable Name | Variable Value |
|---|---|
api_url | https://api.example.com |
api_key | 123456789abcdef |
এখন, আপনি এই ভেরিয়েবলগুলোকে জেমিটার টেস্ট প্ল্যানে বিভিন্ন জায়গায় ব্যবহার করতে পারবেন, যেমন HTTP Request-এ।
HTTP Request Example:
GET ${api_url}/endpoint?key=${api_key}
এখানে, ${api_url} এবং ${api_key} ভেরিয়েবল দুটি ডায়নামিকভাবে আপনার কনফিগারেশনের ভ্যালু অনুযায়ী প্রতিস্থাপিত হবে।
Functions কি?
Functions হল পূর্বনির্ধারিত কাস্টম ফাংশন, যা জেমিটার দ্বারা সরবরাহিত এবং এটি টেস্টের মধ্যে ডাইনামিক ডেটা তৈরির জন্য ব্যবহৃত হয়। Functions বিভিন্ন ধরনের ডেটা তৈরি করতে ব্যবহৃত হতে পারে, যেমন:
- Random numbers
- UUID generation
- Date-time manipulation
- String manipulation
Functions এর মাধ্যমে আপনি স্বয়ংক্রিয়ভাবে ভেরিয়েবল ভ্যালু পেতে পারেন, যা টেস্টের মধ্যে ডাইনামিক্যালি ব্যবহৃত হয়।
Functions এর সুবিধা
- ডাইনামিক ডেটা তৈরি: Functions ব্যবহার করে আপনি ডায়নামিক ডেটা তৈরি করতে পারেন, যেমন র্যান্ডম নাম্বার, টাইমস্ট্যাম্প, অথবা অন্যান্য কাস্টম ডেটা।
- টেস্ট রিএলিটিক ডেটা: Functions ডাইনামিক ডেটা ইনপুট দিয়ে রিয়েল-টাইম পরিস্থিতি সিমুলেট করতে সাহায্য করে।
Functions ব্যবহার:
আপনি Functions ব্যবহার করতে পারেন জেমিটার টেস্ট প্ল্যানে কাস্টম ভেরিয়েবল হিসাবে, অথবা সরাসরি স্যাম্পলারগুলির মধ্যে।
উদাহরণ:
১. Random Number Generation: জেমিটার-এর __Random ফাংশন ব্যবহার করে আপনি র্যান্ডম নাম্বার তৈরি করতে পারেন। এই ফাংশনটি সাধারণত ডাইনামিক ডেটা প্রজন্মের জন্য ব্যবহৃত হয়।
${__Random(1000,9999)}
এটি 1000 থেকে 9999 পর্যন্ত একটি র্যান্ডম নাম্বার তৈরি করবে।
২. UUID Generation: UUID (Universally Unique Identifier) ফাংশন ব্যবহার করে একটি ইউনিক আইডেন্টিফায়ার তৈরি করতে পারেন, যা সাধারণত রিকোয়েস্টের জন্য ইউনিক ডেটা প্রদান করতে ব্যবহৃত হয়।
${__UUID()}
এটি একটি ইউনিক UUID তৈরি করবে, যা আপনি API কিউআইডি বা রিকোয়েস্ট আইডেন্টিফায়ারের জন্য ব্যবহার করতে পারেন।
৩. Current Time in Specific Format: আপনি __time ফাংশন ব্যবহার করে বর্তমান সময় একটি নির্দিষ্ট ফরম্যাটে পেতে পারেন।
${__time(Y-M-d H:m:s,)}
এটি বর্তমান সময়কে Year-Month-Day Hour:Minute:Second ফরম্যাটে প্রদান করবে।
User-Defined Variables এবং Functions এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | User-Defined Variables | Functions |
|---|---|---|
| কাস্টমাইজেশন | সরাসরি ভেরিয়েবল দ্বারা কনফিগার করা হয়। | ডাইনামিক ডেটা তৈরি করে, যা পরিবর্তনশীল। |
| উদ্দেশ্য | রিকোয়েস্টের প্যারামিটার বা URL ইত্যাদি কনফিগার করতে। | র্যান্ডম নাম্বার, UUID, টাইমস্ট্যাম্প ইত্যাদি তৈরি করতে। |
| ব্যবহার | টেস্ট প্ল্যানে যেকোনো জায়গায় ভেরিয়েবল হিসেবে ব্যবহার করা যায়। | বিশেষ ফাংশন কল ব্যবহার করে ডাইনামিক ডেটা তৈরি করা। |
| একমাত্রিকতা | একটি নির্দিষ্ট মান সহ থাকে। | প্রতিবার নতুন মান তৈরি করে। |
সারাংশ
জেমিটার (JMeter) User-Defined Variables এবং Functions ব্যবহার করে আপনি টেস্ট প্ল্যানের কাস্টমাইজেশন এবং ডাইনামিক ডেটা সিমুলেশন করতে পারেন। User-Defined Variables ব্যবহার করে আপনি আপনার টেস্টের প্যারামিটার এবং কনফিগারেশন নির্ধারণ করতে পারেন, যা বারবার ব্যবহার করা যায়। অন্যদিকে, Functions আপনাকে ডাইনামিক্যালি র্যান্ডম ডেটা তৈরি করতে সাহায্য করে, যেমন র্যান্ডম নাম্বার, UUID, এবং টাইমস্ট্যাম্প, যা টেস্ট প্ল্যানের মধ্যে বিভিন্ন পরিস্থিতি সিমুলেট করতে কার্যকর।
জেমিটার (JMeter) একটি শক্তিশালী টুল যা ওয়েব অ্যাপ্লিকেশন এবং সার্ভিসের পারফরম্যান্স টেস্টিং করতে ব্যবহৃত হয়। ওয়েব অ্যাপ্লিকেশনগুলো সাধারণত ডাইনামিক ডেটা ব্যবহার করে (যেমন: টোকেন, সেশন আইডি, কুকিজ), এবং এই ডাইনামিক ডেটা টেস্ট প্ল্যানে সঠিকভাবে হ্যান্ডেল করা প্রয়োজন। Correlation হলো একটি প্রক্রিয়া যার মাধ্যমে ডাইনামিক ডেটা এক রিকোয়েস্ট থেকে আরেকটি রিকোয়েস্টে সরবরাহ করা হয়। এটি রিকোয়েস্ট এবং রেসপন্সের মধ্যে সঠিক ডেটা পরিচালনা করতে সহায়তা করে।
এই গাইডে, আমরা জেমিটার (JMeter) তে Correlation ব্যবহার করে ডাইনামিক ডেটা হ্যান্ডল করার প্রক্রিয়া আলোচনা করব।
Correlation কি?
Correlation হলো একটি প্রক্রিয়া যেখানে আপনি একটি রিকোয়েস্ট থেকে প্রাপ্ত ডাইনামিক ডেটা (যেমন: সেশন আইডি, সার্ভার-সাইড জেনারেট করা টোকেন) পরবর্তী রিকোয়েস্টে ব্যবহার করেন। অধিকাংশ ওয়েব অ্যাপ্লিকেশন ডাইনামিক ডেটা তৈরি করে, এবং সেগুলির সঠিক ব্যবহার নিশ্চিত করা জরুরি। জেমিটার Correlation এর মাধ্যমে আপনি ডাইনামিক ডেটা এক রিকোয়েস্ট থেকে আরেক রিকোয়েস্টে সঠিকভাবে পাস করতে পারেন।
কেন Correlation প্রয়োজন?
- Session Handling: ওয়েব অ্যাপ্লিকেশনগুলো সাধারণত সেশন আইডি ব্যবহার করে সেশন ট্র্যাকিং করতে। পরবর্তী রিকোয়েস্টে সেশন আইডি পাঠানো প্রয়োজন।
- Dynamic Tokens: অনেক অ্যাপ্লিকেশন রিকোয়েস্টের মধ্যে ডাইনামিক টোকেন জেনারেট করে, যেমন CSRF টোকেন।
- Data Dependency: এক রিকোয়েস্টের আউটপুট পরবর্তী রিকোয়েস্টের ইনপুট হিসেবে ব্যবহার হয়।
Correlation এর মাধ্যমে Dynamic Data Handle করার প্রক্রিয়া
1. ডাইনামিক ডেটা সনাক্ত করা
প্রথমে, আপনাকে ডাইনামিক ডেটা সনাক্ত করতে হবে। উদাহরণস্বরূপ, একটি লগিন রিকোয়েস্টে সেশন আইডি বা টোকেন থাকে যা পরবর্তী রিকোয়েস্টে ব্যবহার করা হয়।
ধরা যাক, একটি GET রিকোয়েস্টের রেসপন্সের মধ্যে একটি সেশন আইডি রয়েছে:
{
"session_id": "xyz123456"
}
এটি পরবর্তী রিকোয়েস্টে প্রেরণ করতে হবে।
2. Regex Extractor ব্যবহার করে ডাইনামিক ডেটা এক্সট্র্যাক্ট করা
Regular Expression Extractor হল একটি জেমিটার টুল যা রেসপন্স থেকে ডাইনামিক ডেটা এক্সট্র্যাক্ট করতে ব্যবহৃত হয়। আপনি এটি একটি Post Processor হিসেবে ব্যবহার করবেন।
ধাপ ১: Regular Expression Extractor যোগ করা
- Thread Group এর অধীনে রিকোয়েস্ট সিলেক্ট করুন।
- Add → Post Processors → Regular Expression Extractor সিলেক্ট করুন।
- এখন, আপনি সঠিক Regular Expression এবং গ্লোবাল ভেরিয়েবল সঠিকভাবে কনফিগার করবেন।
উদাহরণ কনফিগারেশন:
- Regular Expression:
"session_id":"(.+?)" - Template:
$1$ - Match No.:
1(প্রথম ম্যাচ) - Default Value:
NOT_FOUND
এটি session_id এর মান এক্সট্র্যাক্ট করবে এবং $1$ ব্যবহার করে এটি একটি ভেরিয়েবল হিসেবে সংরক্ষণ করবে।
3. Extracted Data পরবর্তী রিকোয়েস্টে ব্যবহার করা
ডাইনামিক ডেটা এক্সট্র্যাক্ট করার পর, আপনাকে এই ডেটা পরবর্তী রিকোয়েস্টে ব্যবহার করতে হবে। এটি জেমিটার-এ একটি ভেরিয়েবল হিসেবে কাজ করবে এবং পরবর্তী রিকোয়েস্টে সেটি ইনপুট হিসেবে পাস করা যাবে।
উদাহরণ:
ধরা যাক, আমরা যে সেশন আইডি এক্সট্র্যাক্ট করেছি, তা পরবর্তী HTTP রিকোয়েস্টে ব্যবহার করতে চাই। এখানে, এক্সট্র্যাক্ট করা ডেটা $session_id$ হিসেবে পরিচিত হবে।
পরবর্তী রিকোয়েস্ট কনফিগারেশন:
- HTTP Request-এ, যেখানে সেশন আইডি ব্যবহার করতে হবে, সেখানে ${session_id} ভেরিয়েবলটি ব্যবহার করুন।
উদাহরণ:
http://example.com/api/user?session_id=${session_id}
এখানে, $session_id$ ভেরিয়েবলটি প্রথম রিকোয়েস্ট থেকে এক্সট্র্যাক্ট করা সেশন আইডির মান গ্রহণ করবে এবং পরবর্তী রিকোয়েস্টে এটি পাঠানো হবে।
4. Debug Sampler দিয়ে ডাইনামিক ডেটা যাচাই করা
আপনার টেস্ট প্ল্যানে Debug Sampler যোগ করে আপনি নিশ্চিত করতে পারেন যে ডাইনামিক ডেটা সঠিকভাবে এক্সট্র্যাক্ট এবং ব্যবহৃত হচ্ছে কিনা।
ধাপ ১: Debug Sampler যোগ করা
- Thread Group এর অধীনে Add → Sampler → Debug Sampler সিলেক্ট করুন।
- এটি আপনার ভেরিয়েবল এবং ডাইনামিক ডেটা যাচাই করবে।
উদাহরণ:
Debug Sampler দিয়ে আপনি দেখতে পারবেন যে, এক্সট্র্যাক্ট করা ভেরিয়েবলটি সঠিকভাবে পাস হচ্ছে কিনা।
5. CSV Data Set Config ব্যবহার করা
ডাইনামিক ডেটা প্রক্রিয়ার জন্য কখনও কখনও একটি নির্দিষ্ট ডেটাসেট ব্যবহার করতে হতে পারে, বিশেষত যখন আপনাকে বড় আকারের ডেটা স্ক্র্যাপ করতে হয়। জেমিটার CSV Data Set Config ব্যবহার করে CSV ফাইল থেকে ডেটা ইনপুট নেয় এবং প্রতিটি রিকোয়েস্টে ডাইনামিক ডেটা সরবরাহ করতে সহায়তা করে।
উদাহরণ:
ধরা যাক, আপনার কাছে একটি CSV ফাইল আছে যা ডাইনামিক ইউজার ডেটা ধারণ করে:
username,password
user1,pass1
user2,pass2
user3,pass3
কনফিগারেশন:
- Thread Group এর অধীনে Add → Config Element → CSV Data Set Config সিলেক্ট করুন।
- CSV Data Set Config প্যানেলে, Filename এবং Variable Names ইনপুট দিন, যেমন:
- Filename:
user_data.csv - Variable Names:
username,password
- Filename:
এখন প্রতিটি রিকোয়েস্টে ডাইনামিকভাবে username এবং password পাস হবে।
সারাংশ
Correlation একটি অত্যন্ত গুরুত্বপূর্ণ প্রক্রিয়া যা ডাইনামিক ডেটা এক রিকোয়েস্ট থেকে অন্য রিকোয়েস্টে পাস করার জন্য ব্যবহৃত হয়। জেমিটার (JMeter) তে Regular Expression Extractor এবং CSV Data Set Config ব্যবহার করে আপনি ডাইনামিক ডেটা হ্যান্ডল করতে পারেন। এই প্রক্রিয়াগুলি আপনাকে ওয়েব অ্যাপ্লিকেশন বা API টেস্টে সঠিক ডেটা পাস করতে সহায়তা করে, যাতে আপনার টেস্টগুলি বাস্তবসম্মত হয় এবং সঠিকভাবে কাজ করে।
JMeter এ Parameterization এবং Correlation দুটি গুরুত্বপূর্ণ ধারণা যা লোড টেস্টিং ও ওয়েব অ্যাপ্লিকেশন স্ক্রিপ্টিংয়ের কার্যকারিতা বাড়াতে সাহায্য করে।
1. Parameterization (প্যারামিটারাইজেশন)
Parameterization হলো এমন একটি প্রক্রিয়া যার মাধ্যমে আপনি ডাইনামিক প্যারামিটার ব্যবহার করে টেস্টের আউটপুট পরিবর্তন করতে পারেন। সাধারণত, এটি ব্যবহার করা হয় যখন আপনি একাধিক ইউজার বা সেশনে ভিন্ন ভিন্ন ডেটা প্রদান করতে চান। উদাহরণস্বরূপ, আপনি যদি একাধিক ইউজার নিবন্ধন টেস্ট করতে চান, তবে আপনি নাম, ইমেইল বা পাসওয়ার্ডের মতো ডেটা পরিবর্তন করতে পারবেন।
Parameterization এর প্রয়োজনীয়তা
- একাধিক ভিন্ন ইনপুট: একাধিক ইউজারের জন্য বিভিন্ন ইনপুট ডেটা দিয়ে টেস্ট করার জন্য।
- ডাইনামিক ডেটা: প্রতিবার একই ডেটা পাঠানোর পরিবর্তে নতুন ডেটা পাঠানো।
উদাহরণ সহ Parameterization
ধরা যাক, আপনি একটি ওয়েব ফর্মের জন্য ইউজারনেম এবং পাসওয়ার্ড প্রেরণ করতে চান। এখানে, JMeter এর CSV Data Set Config ব্যবহার করে আপনি প্যারামিটারাইজেশন করতে পারেন।
উদাহরণ:
প্রথমে, একটি CSV ফাইল তৈরি করুন (যেমন
user_credentials.csv) যেখানে বিভিন্ন ইউজারনেম এবং পাসওয়ার্ড থাকবে:username,password user1,pass1 user2,pass2 user3,pass3- JMeter-এ CSV Data Set Config যোগ করুন:
- Right-click Test Plan > Add > Config Element > CSV Data Set Config।
- CSV ফাইলের পাথ দিন এবং প্যারামিটার নামগুলো উল্লেখ করুন (যেমন:
username,password)।
এখন, HTTP Request এর মধ্যে প্যারামিটারাইজেশন করুন:
- HTTP Request এর মধ্যে Username এবং Password প্যারামিটার হিসেবে দিন এবং সেখানে
${username}ও${password}ব্যবহার করুন।
username=${username} password=${password}- HTTP Request এর মধ্যে Username এবং Password প্যারামিটার হিসেবে দিন এবং সেখানে
এভাবে, প্রতিটি থ্রেড একে একে user1, user2, user3 ইউজারনেম এবং পাসওয়ার্ড সহ সাবমিট হবে।
2. Correlation (করিলেশন)
Correlation হলো সেই প্রক্রিয়া যার মাধ্যমে আপনি ডায়নামিকভাবে পরিবর্তিত ডেটা যেমন সেশন আইডি, টোকেন, বা কুকি ভ্যালু সরাসরি সংগ্রহ করে এবং পরবর্তী রিকোয়েস্টে সেগুলি ব্যবহার করেন। এটি জটিল অ্যাপ্লিকেশন বা সিস্টেমের জন্য খুবই গুরুত্বপূর্ণ, যেখানে একটি রিকোয়েস্টের আউটপুট পরবর্তী রিকোয়েস্টের ইনপুট হিসেবে ব্যবহৃত হয়।
Correlation এর প্রয়োজনীয়তা
- সেশন আইডি: লগইন হওয়ার পর সেশন আইডি সংগ্রহ করে পরবর্তী রিকোয়েস্টে ব্যবহার।
- ডাইনামিক টোকেন বা কুকি: API কল বা ফর্ম সাবমিশনের জন্য ডাইনামিক টোকেন বা কুকি প্রয়োজন হয়, যা এক রিকোয়েস্টে তৈরি হয়ে অন্য রিকোয়েস্টে ব্যবহার করতে হয়।
উদাহরণ সহ Correlation
ধরা যাক, আপনি একটি ওয়েব সাইটে লগইন করছেন এবং লগইন করার পর একটি সেশন আইডি বা টোকেন ফিরে আসছে। সেই টোকেনটি পরবর্তী রিকোয়েস্টে ব্যবহার করতে হবে।
উদাহরণ:
- প্রথমে, একটি HTTP Request ব্যবহার করে লগইন করুন এবং টোকেন সংগ্রহ করতে একটি Regular Expression Extractor যোগ করুন:
- Right-click HTTP Request > Add > Post Processors > Regular Expression Extractor।
Regular Expression Extractor কনফিগার করুন:
- Reference Name: token
- Regular Expression:
"token":"(.+?)" - Template:
$1$ - Match No.: 1
এখানে,
Regular Expressionব্যবহার করা হয়েছে যাতে লগইন রেসপন্সে থাকা টোকেনটি এক্সট্র্যাক্ট করা হয়।পরবর্তী HTTP Request-এ সেই টোকেনটি ব্যবহার করুন:
- HTTP Request-এর মধ্যে যেখানে টোকেন দরকার, সেখানে
${token}ব্যবহার করুন।
উদাহরণ:
Authorization: Bearer ${token}- HTTP Request-এর মধ্যে যেখানে টোকেন দরকার, সেখানে
এখন, প্রথম রিকোয়েস্টের আউটপুট (যেমন টোকেন) পরবর্তী রিকোয়েস্টে স্বয়ংক্রিয়ভাবে ব্যবহার হবে।
সারাংশ
Parameterization এবং Correlation হল JMeter এর গুরুত্বপূর্ণ কনসেপ্ট যা ডাইনামিক ডেটা এবং ডিপেনডেন্ট রিকোয়েস্টগুলি সঠিকভাবে হ্যান্ডেল করতে সাহায্য করে। Parameterization আপনাকে একাধিক ডেটা দিয়ে টেস্ট করতে সক্ষম করে, এবং Correlation আপনাকে ডায়নামিক ডেটা যেমন সেশন আইডি বা টোকেন সংগ্রহ করে এবং পরবর্তী রিকোয়েস্টে সেগুলি ব্যবহার করতে সহায়তা করে। JMeter এর এই দুই প্রক্রিয়া ওয়েব অ্যাপ্লিকেশন ও API পারফরম্যান্স টেস্টিংয়ের একটি অপরিহার্য অংশ।
Read more