JMeter Scripting এবং BeanShell

Java Technologies - জেমিটার (jmeter)
147
147

জেমিটার (JMeter) এর Scripting ক্ষমতা টেস্ট স্ক্রিপ্টে কাস্টম লজিক বা প্রক্রিয়া যোগ করতে সাহায্য করে। জেমিটার স্ক্রিপ্টিং মূলত BeanShell, Jython, বা JavaScript এর মাধ্যমে করা যায়। এর মধ্যে BeanShell সবচেয়ে জনপ্রিয় এবং ব্যাপকভাবে ব্যবহৃত স্ক্রিপ্টিং ভাষা, যেটি জাভার উপর ভিত্তি করে তৈরি এবং খুবই শক্তিশালী। এটি কাস্টম লজিক, ডেটা জেনারেশন, ভেরিয়েবল সেটিং, এবং অন্যান্য কার্যক্রমের জন্য ব্যবহৃত হয়।

এই টিউটোরিয়ালে আমরা JMeter Scripting এবং BeanShell স্ক্রিপ্টিং সম্পর্কে বিস্তারিত আলোচনা করব।


JMeter Scripting Overview

জেমিটার স্ক্রিপ্টিংয়ের মাধ্যমে আপনি বিভিন্ন টেস্ট প্ল্যানের মধ্যে কাস্টম লজিক যোগ করতে পারেন। কিছু সাধারণ ব্যবহৃত স্ক্রিপ্টিং প্রক্রিয়া অন্তর্ভুক্ত:

  • ডাইনামিক ডেটা জেনারেশন: API রিকোয়েস্টে বা ফর্ম ফিল্ডে ডাইনামিক ডেটা প্রদান।
  • ডেটা এক্সট্র্যাকশন: সার্ভারের রেসপন্স থেকে প্রয়োজনীয় ডেটা এক্সট্র্যাক্ট করা।
  • কাস্টম লজিক প্রয়োগ: জাভা কোড লিখে কাস্টম লজিক প্রয়োগ করা।

জেমিটার স্ক্রিপ্টিং বিভিন্ন ধরনের প্রসেসরের মাধ্যমে পরিচালিত হয়:

  • Pre-Processors: টেস্ট রান করার আগে কোড এক্সিকিউট করা হয়।
  • Post-Processors: রিকোয়েস্ট শেষে কোড এক্সিকিউট করা হয়।
  • Timers: রিকোয়েস্টের মধ্যে বিলম্ব যুক্ত করতে ব্যবহৃত হয়।
  • Assertions: রেসপন্স পরীক্ষার জন্য ব্যবহৃত হয়।

এখন আসুন বিস্তারিতভাবে BeanShell স্ক্রিপ্টিং সম্পর্কে আলোচনা করি।


BeanShell in JMeter

BeanShell একটি স্ক্রিপ্টিং ভাষা যা Java এর সিনট্যাক্স অনুসরণ করে, তবে এটি খুবই লাইটওয়েট এবং ইন্টারপ্রিটিভ। এর মাধ্যমে আপনি জাভার মতো কোড লিখতে পারেন এবং সেই কোড জেমিটার টেস্ট স্ক্রিপ্টে ব্যবহার করতে পারেন। BeanShell Pre-Processor এবং BeanShell Post-Processor ব্যবহার করে আপনি কাস্টম লজিক এবং ডেটা প্রসেসিং যুক্ত করতে পারেন।

BeanShell Pre-Processor

BeanShell Pre-Processor একটি টুল যা জেমিটার টেস্টের আগে কাস্টম কোড এক্সিকিউট করতে ব্যবহৃত হয়। এটি মূলত যখন আপনি টেস্ট রিকোয়েস্টের আগে কিছু কাস্টম কার্যক্রম করতে চান তখন ব্যবহৃত হয়।

BeanShell Pre-Processor কনফিগারেশন:

  1. Test Plan > Thread Group > Add > Pre-Processor > BeanShell Pre-Processor
  2. এখানে আপনি কাস্টম BeanShell কোড লিখতে পারবেন, যেমন ডেটা জেনারেশন, কাস্টম লজিক প্রয়োগ, বা টেস্ট প্ল্যানের ভেরিয়েবল তৈরি।

উদাহরণ:

ধরা যাক, আপনি একটি র্যান্ডম সেশন আইডি তৈরি করতে চান এবং সেটি পরবর্তী রিকোয়েস্টে ব্যবহার করতে চান। আপনি নিম্নলিখিত কোডটি BeanShell Pre-Processor তে লিখতে পারেন:

// Generate a random session ID
String sessionId = "session_" + Math.random();
vars.put("sessionId", sessionId); // Save sessionId to a JMeter variable

এখানে Math.random() ব্যবহার করে একটি র্যান্ডম সেশন আইডি তৈরি করা হয়েছে এবং সেটি sessionId নামে জেমিটার ভেরিয়েবলে সংরক্ষণ করা হয়েছে।

BeanShell Post-Processor

BeanShell Post-Processor টেস্ট রিকোয়েস্টের পরে কোড এক্সিকিউট করার জন্য ব্যবহৃত হয়। এটি ব্যবহার করে আপনি রিকোয়েস্টের রেসপন্স থেকে ডেটা এক্সট্র্যাক্ট করতে, রেসপন্সের ওপর কাস্টম লজিক প্রয়োগ করতে পারেন।

BeanShell Post-Processor কনফিগারেশন:

  1. Test Plan > Thread Group > Add > Post-Processor > BeanShell Post-Processor
  2. এখানে আপনি রেসপন্স ডেটা প্রসেস করতে কাস্টম কোড লিখতে পারেন।

উদাহরণ:

ধরা যাক, আপনি API রেসপন্স থেকে একটি টোকেন বের করতে চান এবং সেটি পরবর্তী রিকোয়েস্টে ব্যবহার করতে চান। নিচে BeanShell কোড দেওয়া হল:

// Extract the token from the response data
String responseData = prev.getResponseDataAsString();
String token = responseData.substring(responseData.indexOf("token\":\"") + 8, responseData.indexOf("\"", responseData.indexOf("token\":\"") + 8));
vars.put("authToken", token); // Save token to a JMeter variable

এখানে, prev.getResponseDataAsString() ব্যবহার করে রেসপন্সের ডেটা নেওয়া হয়েছে এবং substring() দিয়ে টোকেন এক্সট্র্যাক্ট করা হয়েছে।

BeanShell Example: Using Variables in JMeter

BeanShell স্ক্রিপ্টে আপনি বিভিন্ন ধরনের জেমিটার ভেরিয়েবল ব্যবহার করতে পারেন। যেমন vars.get() এবং vars.put() মেথড ব্যবহার করে ভেরিয়েবল পড়া এবং লেখা সম্ভব।

// Access JMeter variables
String user = vars.get("username");
String password = vars.get("password");

// Use the variables in your script
log.info("Username: " + user);
log.info("Password: " + password);

এখানে, vars.get() দিয়ে username এবং password ভেরিয়েবল পাওয়া হয়েছে এবং log.info() দিয়ে লগ করা হয়েছে।


Performance Considerations of BeanShell in JMeter

যত শক্তিশালী এবং ফ্লেক্সিবল BeanShell স্ক্রিপ্টিং, ততই এটি কিছু পারফরম্যান্স সমস্যাও সৃষ্টি করতে পারে, বিশেষত যখন আপনি বড় স্কেল টেস্টিং করছেন।

  • Slow Execution: BeanShell স্ক্রিপ্টিং ইন্টারপ্রিটিভ, এবং এটি জাভার কোডের তুলনায় ধীরগতিতে চলে। তাই, বড় সংখ্যক রিকোয়েস্টের জন্য BeanShell কোডের ব্যবহার পারফরম্যান্সে প্রভাব ফেলতে পারে।
  • Memory Usage: অত্যধিক বা জটিল স্ক্রিপ্ট ব্যবহার করলে এটি মেমরি ব্যবহারে প্রভাব ফেলতে পারে। তাই, স্ক্রিপ্ট অপটিমাইজ করা গুরুত্বপূর্ণ।

আপনি যখন বড় স্কেল টেস্টের জন্য জেমিটার ব্যবহার করবেন, তখন BeanShell-এর পরিবর্তে Jython বা JavaScript ব্যবহার করার কথা চিন্তা করতে পারেন, কারণ তারা সাধারণত অধিক পারফরম্যান্স প্রদান করে।


সারাংশ

BeanShell জেমিটার টেস্ট স্ক্রিপ্টে কাস্টম লজিক এবং ডেটা প্রসেসিং যোগ করার জন্য একটি শক্তিশালী স্ক্রিপ্টিং ভাষা। BeanShell Pre-Processor এবং BeanShell Post-Processor ব্যবহার করে আপনি ডাইনামিক ডেটা জেনারেশন, রেসপন্স এক্সট্র্যাকশন, এবং অন্যান্য কাস্টম লজিক প্রয়োগ করতে পারেন। তবে, পারফরম্যান্স সমস্যা এড়ানোর জন্য বড় স্কেল টেস্টিংয়ের জন্য BeanShell স্ক্রিপ্টে কিছু সতর্কতা অবলম্বন করা প্রয়োজন।

Content added By

BeanShell এবং JMeter Scripting এর ধারণা

96
96

জেমিটার (JMeter) একটি শক্তিশালী ওপেন সোর্স টুল, যা ওয়েব অ্যাপ্লিকেশন, ওয়েব সার্ভিস এবং অন্যান্য প্রটোকলের পারফরম্যান্স এবং ফাংশনাল টেস্টিংয়ের জন্য ব্যবহৃত হয়। টেস্ট প্ল্যানের মধ্যে জাভা বা স্ক্রিপ্টিং ভাষা ব্যবহার করে কাস্টম কার্য সম্পাদন করতে BeanShell এবং JMeter Scripting ব্যবহার করা হয়।

BeanShell

BeanShell একটি স্ক্রিপ্টিং ভাষা যা জাভা ভাষার উপর ভিত্তি করে তৈরি, এবং এটি জাভা কোডের মতোই কাজ করে তবে কোডের মধ্যে কমপ্লেক্সিটি কমায় এবং দ্রুত টেস্ট কনফিগারেশন পরিবর্তন করার সুযোগ দেয়। জেমিটার ব্যবহারকারীরা টেস্ট প্ল্যানের মধ্যে BeanShell স্ক্রিপ্ট ব্যবহার করে বিভিন্ন কার্য সম্পাদন করতে পারেন, যেমন ডেটা প্রিপারেশন, কাস্টম ফাংশন বা ক্যালকুলেশন, ভেরিয়েবল সেটিংস ইত্যাদি।


1. BeanShell কি?

BeanShell একটি সহজ এবং নমনীয় স্ক্রিপ্টিং ভাষা যা জাভা কোডের মতোই কাজ করে কিন্তু সহজ এবং কমপ্লেক্সিটি কমায়। এটি জাভা API ব্যবহার করতে পারে এবং অনেক ক্ষেত্রে এটি Java এর কাজকে হালকা করে তোলে। জেমিটার প্রজেক্টে BeanShell ব্যবহার করার মাধ্যমে আপনি বিভিন্ন কার্য সম্পাদন করতে পারেন, যেমন:

  • ডেটা ম্যানিপুলেশন (যেমন, কাস্টম ভেরিয়েবল তৈরি করা)
  • কাস্টম ক্যালকুলেশন (যেমন, সংখ্যা বা স্ট্রিং অপারেশন)
  • ওয়েব সার্ভিস রিকোয়েস্টের আগে বা পরে কিছু কাস্টম কার্য সম্পাদন করা

BeanShell স্ক্রিপ্টিং কনফিগারেশন

JMeter তে BeanShell স্ক্রিপ্ট ব্যবহার করার জন্য আপনাকে BeanShell PreProcessor অথবা BeanShell PostProcessor এর মতো উপাদান যোগ করতে হবে।


2. BeanShell PreProcessor উদাহরণ

PreProcessor ব্যবহার করার মাধ্যমে আপনি Sampler বা HTTP রিকোয়েস্ট এক্সিকিউট হওয়ার আগে কিছু কাস্টম কার্য সম্পাদন করতে পারেন।

উদাহরণ:

ধরা যাক, আপনি একটি Random Number তৈরি করতে চান এবং সেই নম্বরটি একটি ভেরিয়েবলে সংরক্ষণ করতে চান।

স্টেপ 1: BeanShell PreProcessor যোগ করা

  • Thread Group-এ রাইট ক্লিক করুন।
  • Add -> PreProcessors -> BeanShell PreProcessor সিলেক্ট করুন।

স্টেপ 2: BeanShell স্ক্রিপ্ট কনফিগারেশন

BeanShell PreProcessor স্ক্রিপ্টে কোড লেখুন:

// Random Number Generation
int randomNum = (int)(Math.random() * 1000); 
vars.put("randomNumber", String.valueOf(randomNum));  // Store in JMeter variable

এটি একটি র্যান্ডম নাম্বার তৈরি করবে এবং সেটিকে randomNumber নামক ভেরিয়েবলে সংরক্ষণ করবে।


3. BeanShell PostProcessor উদাহরণ

PostProcessor ব্যবহার করে আপনি রেসপন্স পাওয়ার পরে কিছু কাস্টম কার্য সম্পাদন করতে পারেন, যেমন রেসপন্স থেকে ডেটা এক্সট্র্যাক্ট করা বা রেসপন্স যাচাই করা।

উদাহরণ:

ধরা যাক, আপনি HTTP রিকোয়েস্টের রেসপন্স থেকে একটি ভ্যালু এক্সট্র্যাক্ট করতে চান এবং সেটি একটি ভেরিয়েবলে সংরক্ষণ করতে চান।

স্টেপ 1: BeanShell PostProcessor যোগ করা

  • HTTP Request Sampler-এ রাইট ক্লিক করুন।
  • Add -> PostProcessors -> BeanShell PostProcessor সিলেক্ট করুন।

স্টেপ 2: BeanShell স্ক্রিপ্ট কনফিগারেশন

// Extract specific part of response
String response = prev.getResponseDataAsString();
String extractedValue = response.split(":")[1];  // Example: Extract value after colon
vars.put("extractedValue", extractedValue); // Store in JMeter variable

এটি HTTP রেসপন্স থেকে একটি ভ্যালু এক্সট্র্যাক্ট করবে এবং সেটি extractedValue নামক ভেরিয়েবলে সংরক্ষণ করবে।


4. JMeter Scripting

JMeter স্ক্রিপ্টিং ভাষা ব্যবহার করে আপনি অনেক শক্তিশালী কার্য সম্পাদন করতে পারেন। জেমিটার বিভিন্ন ধরনের স্ক্রিপ্টিং ভাষা সাপোর্ট করে, যেমন:

  • JMeter Functions: জেমিটার বিল্ট-ইন ফাংশন যা ভেরিয়েবল তৈরি, প্রক্রিয়াকরণ, এবং সিমুলেশন করা সম্ভব করে।
  • Groovy: Groovy একটি শক্তিশালী স্ক্রিপ্টিং ভাষা যা জাভা ভিত্তিক এবং জেমিটারেও ব্যবহৃত হয়।
  • JavaScript: আপনি JavaScript দিয়ে কাস্টম স্ক্রিপ্ট লেখার মাধ্যমে বিভিন্ন ক্যালকুলেশন বা টেস্ট কনফিগার করতে পারেন।

উদাহরণ: Groovy Script

JMeter তে Groovy স্ক্রিপ্ট ব্যবহার করে কাস্টম কার্য সম্পাদন করতে পারেন, যেমন আউটপুট হিসাবে কিছু ডেটা গণনা করা।

স্টেপ 1: JSR223 Sampler যোগ করা

  • Thread Group-এ রাইট ক্লিক করুন।
  • Add -> Sampler -> JSR223 Sampler সিলেক্ট করুন।

স্টেপ 2: Groovy স্ক্রিপ্ট কনফিগারেশন

Groovy স্ক্রিপ্ট কনফিগার করার জন্য:

// Groovy script for simple calculation
def sum = 10 + 20;
vars.put("sumResult", sum.toString());  // Store the result in JMeter variable

এটি একটি সাধারাণ গাণিতিক ক্যালকুলেশন করবে এবং সেই ফলাফলকে sumResult নামে একটি ভেরিয়েবলে সংরক্ষণ করবে।


5. JMeter Functions

জেমিটার ফাংশনগুলি টেস্টের মধ্যে ভেরিয়েবল তৈরি করতে, রেসপন্স ডেটা প্রক্রিয়াকরণে, এবং টেস্ট চলাকালীন ডাইনামিক ডেটা প্রযোজ্য করতে ব্যবহৃত হয়।

উদাহরণ: Random

একটি Random ফাংশন ব্যবহার করে আপনি র্যান্ডম ভ্যালু জেনারেট করতে পারেন।

উদাহরণ:

${__Random(1000,9999)}

এটি 1000 থেকে 9999 এর মধ্যে একটি র্যান্ডম সংখ্যা তৈরি করবে।


6. JMeter Scripting এর অন্যান্য উদাহরণ

উদাহরণ: CSV Data Set Config

জেমিটার CSV Data Set Config ব্যবহার করে আপনি CSV ফাইল থেকে ডেটা লোড করতে পারেন এবং সেই ডেটা প্রতি রিকোয়েস্টে ব্যবহার করতে পারেন।

কনফিগারেশন:

  • File Name: data.csv
  • Variable Names: username, password

এটি data.csv ফাইল থেকে username এবং password এর মান এক্সট্র্যাক্ট করবে এবং প্রতিটি রিকোয়েস্টে ব্যবহার করবে।


সারাংশ

BeanShell এবং JMeter Scripting এর মাধ্যমে জেমিটার টেস্ট প্ল্যানে কাস্টম কার্য সম্পাদন করা যায়। BeanShell স্ক্রিপ্টের মাধ্যমে আপনি HTTP রিকোয়েস্টের আগে বা পরে কাস্টম কোড চালাতে পারেন, যেমন ডেটা ম্যানিপুলেশন বা রেসপন্স এক্সট্র্যাকশন। JMeter Functions এবং Groovy স্ক্রিপ্টগুলি আপনার টেস্টের মধ্যে আরও ডায়নামিক কার্য সম্পাদন করতে সহায়তা করে, যেমন র্যান্ডম ভ্যালু জেনারেট করা, গণনা করা বা ডেটা এক্সট্র্যাক্ট করা। JMeter এর এই স্ক্রিপ্টিং ক্ষমতা আপনার টেস্ট প্ল্যানকে আরো ফ্লেক্সিবল এবং শক্তিশালী করে তোলে।

Content added By

BeanShell Sampler এবং Pre-Processor এর ব্যবহার

114
114

জেমিটার (JMeter) একটি শক্তিশালী টুল যা পারফরম্যান্স, লোড, এবং স্ট্রেস টেস্টিংয়ের জন্য ব্যবহৃত হয়। BeanShell Sampler এবং Pre-Processor হল দুটি গুরুত্বপূর্ণ ফিচার যা জেমিটার টেস্ট কেস কনফিগারেশন এবং স্ক্রিপ্টিংকে আরও ফ্লেক্সিবল ও কার্যকরী করে তোলে। এই ফিচারগুলো আপনাকে আরও ডাইনামিক এবং কাস্টমাইজড টেস্ট কেস তৈরি করতে সাহায্য করে।

এই গাইডে আমরা BeanShell Sampler এবং Pre-Processor এর ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করব।


BeanShell Sampler

BeanShell Sampler হল জেমিটার একটি স্ক্রিপ্টিং উপাদান যা Java বা BeanShell স্ক্রিপ্টিং ভাষা ব্যবহার করে কাস্টম কোড বা স্ক্রিপ্ট রান করতে সাহায্য করে। এটি আপনাকে HTTP রিকোয়েস্ট বা অন্য কোন স্যাম্পলারের আগে বা পরে বিশেষ কোনো কাজ করার সুযোগ দেয়।

BeanShell Sampler এর প্রয়োজনীয়তা

  1. কাস্টম স্ক্রিপ্টিং: BeanShell Sampler ব্যবহার করে আপনি আপনার নিজস্ব স্ক্রিপ্ট বা কোড রান করতে পারেন যা আপনার টেস্ট কেসের জন্য বিশেষভাবে তৈরি করা হয়েছে।
  2. ডাইনামিক ডেটা তৈরি: আপনি যদি ডাইনামিক ডেটা তৈরি করতে চান, যেমন একটি টোকেন বা সেশন আইডি যা একাধিক রিকোয়েস্টে ব্যবহৃত হবে, তবে BeanShell Sampler ব্যবহার করে সহজেই এটি করা সম্ভব।
  3. জটিল লজিক প্রয়োগ: জেমিটার টেস্ট কেসে আপনি যদি কোনো বিশেষ ক্যালকুলেশন বা লজিক প্রয়োগ করতে চান, যেমন গণনা, শর্তপূরণ ইত্যাদি, তবে BeanShell Sampler এর মাধ্যমে এটি করতে পারবেন।

BeanShell Sampler কনফিগারেশন

  1. Thread Group বা যেকোনো স্যাম্পলার-এ রাইট ক্লিক করুন।
  2. "Add" -> "Sampler" -> "BeanShell Sampler" সিলেক্ট করুন।
  3. BeanShell Sampler এর মধ্যে স্ক্রিপ্ট লিখুন।

উদাহরণ:

আপনি যদি কোনো র্যান্ডম নাম জেনারেট করতে চান, তাহলে BeanShell Sampler-এ নিচের কোডটি ব্যবহার করতে পারেন:

import java.util.Random;
String[] names = {"John", "Jane", "Mike", "Alice", "Bob"};
Random rand = new Random();
String randomName = names[rand.nextInt(names.length)];
vars.put("RandomName", randomName);

এখানে, এই স্ক্রিপ্টটি একটি র্যান্ডম নাম নির্বাচন করবে এবং সেটিকে RandomName ভ্যারিয়েবলে সংরক্ষণ করবে, যা পরবর্তী রিকোয়েস্টে ব্যবহার করা যেতে পারে।


Pre-Processor

Pre-Processor হল জেমিটার উপাদান যা রিকোয়েস্ট পাঠানোর আগে কিছু কোড বা স্ক্রিপ্ট রান করার জন্য ব্যবহৃত হয়। এটি সাধারণত রিকোয়েস্টের জন্য ডেটা প্রস্তুত করার কাজ করে, যেমন, ডাইনামিক ডেটা তৈরি করা বা কনফিগারেশন সেট করা।

Pre-Processor এর প্রয়োজনীয়তা

  1. ডেটা প্রস্তুতি: Pre-Processor ব্যবহার করে আপনি রিকোয়েস্টের আগে কিছু ডাইনামিক ডেটা প্রস্তুত করতে পারেন, যেমন API টোকেন বা সেশন আইডি, যা পরবর্তী রিকোয়েস্টে ব্যবহার করা হবে।
  2. রিকোয়েস্ট কনফিগারেশন: আপনি Pre-Processor ব্যবহার করে HTTP রিকোয়েস্টের বিভিন্ন অংশ কনফিগার করতে পারেন। যেমন রিকোয়েস্ট হেডার, প্যারামিটার ইত্যাদি।
  3. রিপিটিশন বা কন্ডিশনাল রিকোয়েস্ট: Pre-Processor ব্যবহার করে আপনি নির্দিষ্ট শর্তের উপর ভিত্তি করে রিকোয়েস্ট রান করতে পারেন।

Pre-Processor কনফিগারেশন

  1. Thread Group বা যেকোনো স্যাম্পলার-এ রাইট ক্লিক করুন।
  2. "Add" -> "Pre Processors" -> আপনার পছন্দের Pre-Processor সিলেক্ট করুন (যেমন BeanShell Pre-Processor বা Regular Expression Extractor)।
  3. স্ক্রিপ্ট বা কনফিগারেশন লিখুন যা রিকোয়েস্ট পাঠানোর আগে রান হবে।

উদাহরণ:

ধরা যাক, আপনি চান যে, রিকোয়েস্ট পাঠানোর আগে একটি র্যান্ডম নাম তৈরি করা হোক (যেমন BeanShell Pre-Processor ব্যবহার করে)। এখানে নিচের কোডটি লিখতে পারেন:

import java.util.Random;
String[] names = {"John", "Jane", "Mike", "Alice", "Bob"};
Random rand = new Random();
String randomName = names[rand.nextInt(names.length)];
vars.put("RandomName", randomName);

এটি BeanShell Pre-Processor হিসেবে কাজ করবে এবং RandomName ভ্যারিয়েবলটি আপনার HTTP রিকোয়েস্টের সাথে যুক্ত হবে। পরবর্তী HTTP Request-এ আপনি ${RandomName} ব্যবহার করতে পারবেন।


BeanShell Sampler এবং Pre-Processor এর মধ্যে পার্থক্য

দিকBeanShell SamplerPre-Processor
কার্যকলাপরিকোয়েস্টের মধ্যে স্ক্রিপ্ট বা কোড রান করারিকোয়েস্টের আগে কোড বা স্ক্রিপ্ট রান করা
ব্যবহারকাস্টম কোড বা স্ক্রিপ্ট তৈরি করতেডেটা প্রস্তুতি বা কনফিগারেশন পরিবর্তন করতে
সামঞ্জস্যসম্পূর্ণ স্ক্রিপ্ট লিখতে ব্যবহৃতরিকোয়েস্টের আগে ডেটা বা কনফিগারেশন সেট করার জন্য

সারাংশ

BeanShell Sampler এবং Pre-Processor হল জেমিটার টেস্ট কনফিগারেশনের অত্যন্ত শক্তিশালী উপাদান। BeanShell Sampler আপনাকে কাস্টম স্ক্রিপ্ট বা কোড রান করার সুযোগ দেয়, যা টেস্ট কেসকে আরও ডাইনামিক এবং কাস্টমাইজড করে তোলে। অন্যদিকে, Pre-Processor রিকোয়েস্টের আগে ডাইনামিক ডেটা তৈরি বা কনফিগারেশন পরিবর্তন করার জন্য ব্যবহৃত হয়। এই দুটি উপাদান একত্রে ব্যবহার করে আপনি জেমিটার টেস্ট কেসকে আরও কার্যকরী এবং বাস্তবসম্মত করে তুলতে পারেন।

Content added By

উদাহরণ সহ BeanShell Scripting

99
99

JMeter একটি শক্তিশালী টুল যা বিভিন্ন ধরনের টেস্টিং করতে সক্ষম, এবং এর মধ্যে রয়েছে BeanShell ScriptingBeanShell 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 যোগ করা
  1. HTTP Request এর উপর রাইট ক্লিক করুন এবং Add > Pre Processors > BeanShell PreProcessor নির্বাচন করুন।
  2. এবার 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 যোগ করা
  1. HTTP Request এর উপর রাইট ক্লিক করুন এবং Add > Post Processors > BeanShell PostProcessor নির্বাচন করুন।
  2. 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 যোগ করা
  1. HTTP Request এর উপর রাইট ক্লিক করুন এবং Add > Assertions > BeanShell Assertion নির্বাচন করুন।
  2. BeanShell Assertion এর মধ্যে নিচের স্ক্রিপ্ট যোগ করুন:
// রেসপন্স কোড চেক করা
int responseCode = prev.getResponseCode();
if (responseCode != 200) {
    Failure = true;  // রেসপন্স কোড ২০০ না হলে Assertion ফেল হবে
    FailureMessage = "Expected 200, but got " + responseCode;  // একটি কাস্টম মেসেজ প্রদান
}

এটি চেক করবে যে, HTTP রেসপন্স কোড ২০০ কিনা। যদি না হয়, তাহলে Assertion ফেল হবে এবং একটি কাস্টম মেসেজ দেখানো হবে।


BeanShell Scripting এর সুবিধা

  1. ডাইনামিক ডেটা প্রোসেসিং: JMeter তে আপনি যেকোনো সময় ডাইনামিক ভ্যারিয়েবল বা কাস্টম লজিক যোগ করতে পারেন।
  2. Java কোডের সহজ ব্যবহার: BeanShell Java ভিত্তিক একটি স্ক্রিপ্টিং ভাষা, যা Java কোড লিখতে জানলে খুবই সহজ।
  3. API রেসপন্স থেকে ডেটা এক্সট্র্যাকশন: আপনি API রেসপন্স থেকে ডেটা এক্সট্র্যাক্ট করে পরবর্তী রিকোয়েস্টে ব্যবহার করতে পারেন।
  4. কাস্টম চেক এবং লজিক: JMeter এর সাধারণ টুলস দিয়ে যেসব জটিল কাজ করা সম্ভব নয়, তা BeanShell স্ক্রিপ্টিং দিয়ে করা যায়।

BeanShell Scripting এর সীমাবদ্ধতা

  1. পারফরম্যান্স: BeanShell Java ভিত্তিক হলেও, JMeter এর অন্যান্য কম্পোনেন্টের তুলনায় কিছুটা ধীর হতে পারে।
  2. স্কেলেবিলিটি: বড় স্কেল টেস্টিংয়ে BeanShell স্ক্রিপ্ট ব্যবহার করলে পারফরম্যান্সে কিছু সমস্যা হতে পারে, কারণ এটি ভারী স্ক্রিপ্টিং প্রক্রিয়া।

সারাংশ

JMeter তে BeanShell Scripting আপনাকে কাস্টম স্ক্রিপ্ট তৈরি করার সুযোগ দেয়, যা জটিল টেস্ট কেস বা ডাইনামিক আচরণ সিমুলেট করার জন্য খুবই কার্যকরী। BeanShell PreProcessor, PostProcessor, এবং Assertion ব্যবহার করে আপনি API রেসপন্স থেকে ডেটা এক্সট্র্যাক্ট করতে, কাস্টম চেক করতে এবং ডাইনামিকভাবে টেস্ট কেস সাজাতে পারেন। এটি JMeter টেস্ট কনফিগারেশনে আরো ফ্লেক্সিবিলিটি এবং কার্যক্ষমতা যোগ করে।

Content added By
Promotion