গ্যাটলিং এবং মাভেনের সাথে পারফরম্যান্স টেস্টিং ফ্রেমওয়ার্ক

পারফরম্যান্স পরীক্ষার জন্য কোনও গ্যাটলিং প্রকল্পকে সংগঠিত ও কাঠামোর সর্বোত্তম উপায় কী?

একটি কাঠামো ডিজাইন করার সময়, আমাদের রক্ষণাবেক্ষণযোগ্যতা এবং প্রসারযোগ্যতা সম্পর্কে চিন্তা করা উচিত, সুতরাং আমরা কীভাবে উপাদানগুলি সংগঠিত করি তা অত্যন্ত গুরুত্বপূর্ণ।

এই টিউটোরিয়ালে, আমরা গ্যাটলিং এবং মাভেন ব্যবহার করে স্ক্র্যাচ থেকে একটি পারফরম্যান্স টেস্টিং ফ্রেমওয়ার্ক কীভাবে তৈরি করব তা দেখাব।




গ্যাটিং ম্যাভেন টেস্ট ফ্রেমওয়ার্ক

প্রাক-প্রয়োজনীয়তা:

এই টিউটোরিয়ালটির জন্য আপনার নিম্নলিখিত ইনস্টল করা প্রয়োজন:


  • জাভা 1.8
  • মাভেন ৩.৫
  • স্কেল প্লাগইন সহ ইন্টেলিজি ইনস্টল করা হয়েছে

প্রথমত, আমরা মাভেন গ্যাটলিং আরকিটাইপ চালিয়ে একটি বেস প্রকল্প তৈরি করি:

mvn archetype:generate -DarchetypeGroupId=io.gatling.highcharts -DarchetypeArtifactId=gatling-highcharts-maven-archetype

আপনি উপরের কমান্ডটি কার্যকর করার সময় এটি নির্ভরতাগুলি ডাউনলোড করা শুরু করবে।

যখন অনুরোধ করা হয়, তখন ‘গ্রুপআইডি’, ‘আর্টিফ্যাক্টআইডি’ এবং ‘সংস্করণ’ এর মান প্রদান করুন।

আমার সেটআপটি নীচের মত দেখাচ্ছে:


আপনি যখন প্রকল্পটি খুলবেন, আপনি লক্ষ্য করবেন যে সেখানে কিছু ডিফল্ট ফাইল এবং ফোল্ডার রয়েছে।

সম্পদের অধীনে, আমাদের আছে


দেহ এই প্যাকেজটি অনুরোধ পেলোড ধারণ করে। উদাহরণস্বরূপ, বিভিন্ন অনুরোধের জন্য আপনার কাছে অনুরোধের টেম্পলেট থাকতে পারে।

তথ্য এই প্যাকেজটি আপনাকে সিএসভি হিসাবে আপনার পরীক্ষাগুলিতে ফিড দেওয়ার প্রয়োজনীয় ডেটা ধারণ করে।

উপরের দুটি ফোল্ডার ছাড়াও রয়েছে গ্যাটলিংকনফ, লগব্যাক.এক্সএমএল এবং রেকর্ডার.কনফ ফাইল। আমরা এই টিউটোরিয়ালে এগুলি নিয়ে আলোচনা করব না।

গ্যাটলিংয়ের মাভেন আর্কিটাইপ তিনটি বেস স্কেল অবজেক্ট তৈরি করে, তবে আমরা সেগুলি ব্যবহার করব না, তাই এগিয়ে যান এবং অবজেক্টগুলি মুছুন।


উপরন্তু, আমরা চারটি প্যাকেজ তৈরি করব, কনফিগার , অনুরোধ , পরিস্থিতি , এবং অনুকরণ :

প্যাকেজ কনফিগার করুন

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

package io.devqa.config object Config {
val app_url = 'http://example-app.com'
val users = Integer.getInteger('users', 10).toInt
val rampUp = Integer.getInteger('rampup', 1).toInt
val throughput = Integer.getInteger('throughput', 100).toInt }

অনুরোধ প্যাকেজ

অনুরোধ প্যাকেজটিতে বিভিন্ন অপারেশন অনুরোধ রয়েছে। উদাহরণস্বরূপ, আমাদের কাছে একটি অনুরোধ থাকতে পারে যা অনুমোদনের টোকেন পায়। অন্য অনুরোধটি ব্যবহারকারী তৈরি করতে পূর্ববর্তী অনুরোধ থেকে টোকেন ব্যবহার করতে পারে এবং আরও কিছু।


এগুলি পৃথক ও বিচ্ছিন্ন অনুরোধগুলি বিভিন্ন প্রান্তে প্রেরণ করা হয়।

GetTokenRequest

package io.devqa.requests import io.gatling.core.Predef._ import io.gatling.http.Predef._ import io.devqa.config.Config.app_url object GetTokenRequest {
val get_token = http('RequestName').get(app_url + '/token')
.check(status is 200)
.check(jsonPath('$..token').saveAs('token')) }

ক্রিয়েট ইউজারআরওয়েস্ট

package io.devqa.requests import io.devqa.config.Config.app_url import io.gatling.core.Predef._ import io.gatling.http.Predef._ object CreateUserRequest {
val sentHeaders = Map('Authorization' -> 'bearer ${token}')
val create_user = exec(http('Create User Request')
.post(app_url + '/users')
.headers(sentHeaders)
.formParam('name', 'John')
.formParam('password', 'John5P4ss')
.check(status is 201)
.check(regex('Created').exists)) }

দৃশ্য প্যাকেজ

দৃশ্যের প্যাকেজটি ব্যবসায়িক পরিস্থিতি ধারণ করে। উদাহরণস্বরূপ, একটি ব্যবহারকারী তৈরি করতে, আমাদের প্রথমে একটি লেখক টোকেন পেতে হবে এবং তারপরে একটি ব্যবহারকারী তৈরি করার জন্য ফর্মের পরামিতিগুলির সাথে শিরোনাম হিসাবে টোকেনটি প্রেরণ করতে হবে। অর্থাৎ আমরা দ্বিতীয় অনুরোধটি খাওয়ানোর জন্য প্রথম অনুরোধের প্রতিক্রিয়াটি ব্যবহার করি। এই 'অনুরোধের শৃঙ্খলা' এপিআই পরীক্ষায় বেশ সাধারণ।

ক্রিয়েট ইউজারসেনারিও

package io.devqa.scenarios import io.devqa.requests.{CreateUserRequest, GetTokenRequest} import io.gatling.core.Predef.scenario object CreateUserScenario {
val createUserScenario = scenario('Create User Scenario')
.exec(GetTokenRequest.get_token)
.exec(CreateUserRequest.create_user) }

সিমুলেশন প্যাকেজ

পরিশেষে, সিমুলেশন প্যাকেজে আমাদের সিমুলেশন রয়েছে। আপনি সিমুলেশনগুলি বিভিন্ন লোড প্রোফাইল হিসাবে ভাবতে পারেন। উদাহরণস্বরূপ, আমাদের একটি সাধারণ লোড সিমুলেশন বা স্পাইক সিমুলেশন থাকতে পারে।

সিমুলেশনগুলির স্কেলা ক্লাস হওয়া দরকার এবং তাদের অবশ্যই গ্যাটলিং সিমুলেশন ক্লাসটি প্রসারিত করতে হবে।

package io.devqa.simulations import io.devqa.scenarios.CreateUserScenario import io.gatling.core.Predef.Simulation import io.gatling.core.Predef._ import io.devqa.config.Config._ class CreateUserSimulation extends Simulation {
private val createUserExec = CreateUserScenario.createUserScenario
.inject(atOnceUsers(users))
setUp(createUserExec) }

আপনার প্রকল্পটি নীচের মত দেখতে হবে:

রানটাইমে আমাদের পারফরম্যান্স পরীক্ষায় ব্যবহারকারী এবং থ্রুটপুট যেমন প্যারামিটারগুলি পাস করার জন্য আমাদের pom.xML ফাইলটিও পরিবর্তন করতে হবে।

pom.xML ফাইল

Pom.xML ফাইলটি দেখতে এমন হওয়া উচিত:


4.0.0
testing-excellence
gatling-framework
1.0-SNAPSHOT

1.8
1.8
UTF-8
2.3.0
2.2.4
1.3.2
CreateUserSimulation



io.gatling.highcharts
gatling-charts-highcharts
${gatling.version}
test


com.typesafe
config
${typesafe-config.version}






io.gatling
gatling-maven-plugin
${gatling-plugin.version}



io.devqa.simulations.${simulation}




-Denv=${env}

-Dusers=${users}

-Drampup=${rampup}

-Dduration=${duration}

-Dthroughput=${throughput}




true





অবশেষে, সিমুলেশন ক্লাসটি কার্যকর করতে, আমরা নিম্নলিখিত কমান্ডটি চালাই

mvn clean gatling:execute -Dusers=1

উপরের কমান্ডটি 1 ব্যবহারকারীর সাথে ক্রিয়েটউজারসিমুলেশন চালাবে।

আকর্ষণীয় নিবন্ধ