পঙ্গপালের সাথে API লোড টেস্টিং

পঙ্গপালের সাথে API লোড টেস্টিং

পঙ্গপালের সাথে API লোড টেস্টিং: ভূমিকা

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

এটি একটি অত্যন্ত বিরক্তিকর পরিস্থিতি হতে পারে, একটি ব্যবসার জন্য ব্যয়বহুল উল্লেখ না করা। এই কারণেই সফ্টওয়্যার বিকাশকারীরা সফ্টওয়্যার সিস্টেমে বিভিন্ন পরীক্ষা করে থাকে যাতে তারা আশানুরূপ কার্য সম্পাদন করে। APIগুলি আলাদা নয়। স্থাপনার আগে, আপনার অন্তত কর্মক্ষমতা পরীক্ষা এবং নিরাপত্তা পরীক্ষা করা উচিত।

কর্মক্ষমতা পরীক্ষা কার্যকারিতা পরীক্ষা এবং লোড পরীক্ষায় গোষ্ঠীভুক্ত করা যেতে পারে। কার্যকারিতা পরীক্ষা হল যা আপনি সাধারণত পোস্টম্যান বা অনিদ্রার জন্য ব্যবহার করেন। তারা নিশ্চিত করে যে আপনার API ফাংশন আপনার প্রত্যাশা অনুযায়ী। লোড পরীক্ষা, অন্যদিকে, আপনার API বাস্তব-বিশ্বের ব্যবহার এবং সর্বোচ্চ লোডের সাথে কীভাবে পারফর্ম করে তা নিয়ে আরও বেশি উদ্বিগ্ন এবং এই নিবন্ধটি সেই বিষয়েই। আসুন আরও বিশদে লোড পরীক্ষাগুলি দেখি।

API লোড টেস্টিং কি?

API লোড টেস্টিং হল এক ধরনের টেস্টিং ডেভেলপাররা এন্ডপয়েন্টে স্বাভাবিক এবং সর্বোচ্চ লোড অনুকরণ করতে ব্যবহার করে। এই ধরনের পরীক্ষা ডেভেলপারদের একটি API এর বাস্তব-বিশ্বের কর্মক্ষমতা মূল্যায়ন করতে দেয় আগে এটি স্থাপন করা হয়। এটি তাদের একটি সিস্টেমের সর্বাধিক অপারেটিং ক্ষমতা, বাধা থাকলে এবং কর্মক্ষমতার অবনতি সনাক্ত করতে সহায়তা করে। API লোড পরীক্ষাগুলি সাধারণত ভার্চুয়াল ব্যবহারকারী তৈরি করে এবং তারপরে API এর কার্যকারিতা একই সাথে পরীক্ষা করার জন্য ব্যবহার করে করা হয়। 

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

লোড টেস্টিং এর প্রকার

বিভিন্ন ধরনের লোড টেস্টিং আছে, যার প্রতিটিরই ব্যবহার রয়েছে। চলুন তাদের কিছু কটাক্ষপাত করা যাক.

লোড পরীক্ষার: এটি একটি লোড পরীক্ষার মৌলিক ফর্ম। এটি সাধারণ লোড এবং প্রত্যাশিত সর্বোচ্চ লোডের অধীনে একটি সিস্টেমের (এই ক্ষেত্রে, একটি API) কার্যকারিতা মূল্যায়ন করতে ব্যবহৃত হয়।

চাপ পরীক্ষা: এটি একটি খুব ভারী লোডের অধীনে একটি সিস্টেমের কর্মক্ষমতা মূল্যায়ন করতে ব্যবহৃত হয়। এই পরীক্ষার লক্ষ্য হল ব্যর্থতার পরে একটি সিস্টেম পুনরুদ্ধার হয় কিনা এবং এটি করতে কতক্ষণ সময় লাগে তা দেখা। লোড সাধারণত ধীরে ধীরে বৃদ্ধি করা হয় যতক্ষণ না এটি সিস্টেমের ক্ষমতা অতিক্রম করে।

স্পাইক টেস্টিং: এটি স্ট্রেস টেস্টিং-এর সাথে কিছুটা সাদৃশ্যপূর্ণ, ব্যতীত ভারী লোড হঠাৎ প্রয়োগ করা হয়, ধীরে ধীরে এটিকে র‌্যাম্প করার বিপরীতে। আপনার গড় ব্যবহারকারী বা দর্শকের সংখ্যা হঠাৎ বেড়ে গেলে বা আপনার সিস্টেমে DDOS আক্রমণ হলে কী ঘটে তা এই ধরনের পরীক্ষা প্রতিনিধিত্ব করে।

সোক টেস্টিং: এই পরীক্ষা উপরের অন্যদের থেকে ভিন্ন। এটি আপনার সিস্টেমকে স্বাভাবিক লোডের 80% (বা এর কাছাকাছি) নিচে রাখে এবং এটিকে দীর্ঘ সময়ের জন্য চলতে দেয়, বলুন 12 থেকে 14 ঘন্টা। এই ধরনের পরীক্ষা সময়ের সাথে সাথে একটি সিস্টেম কতটা নির্ভরযোগ্য তা নির্ধারণ করে।

পঙ্গপাল দিয়ে আপনার এপিআই পরীক্ষা করা লোড

ডেভেলপারদের তাদের APIs লোড পরীক্ষার জন্য বিভিন্ন বিকল্পের অ্যাক্সেস আছে। কিছু সাধারণ লোড টেস্টিং টুল হল Gatling, JMeter এবং Locust। আমরা এই নিবন্ধে পঙ্গপালের উপর ফোকাস করব।

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

এই টিউটোরিয়ালের জন্য, আমি ফ্লাস্কের সাথে একটি সাধারণ API তৈরি করব। আপনি আমার সাথে অনুসরণ করতে পারেন বা নোডের সাথে আপনার API তৈরি করতে পারেন, বা আপনি যে ফ্রেমওয়ার্কের সাথে স্বাচ্ছন্দ্য বোধ করেন।

আবশ্যকতা

পাইথন 3

সেটআপ এবং ইনস্টলেশন

প্রথমত, আপনাকে আপনার পিসিতে একটি ভার্চুয়াল এনভায়রনমেন্ট সেট আপ করতে হবে যাতে আপনি আপনার গ্লোবাল পাইথন এনভায়রনমেন্টে বিশৃঙ্খলা না করেন। এটি করতে, নিম্নলিখিত কমান্ডগুলি চালান। মনে রাখবেন যে এই কমান্ডগুলি একটি উইন্ডোজ টার্মিনালে প্রযোজ্য।

$ mkdir প্রকল্প

$ cd /d পাথ\to\প্রজেক্ট

$ python -m venv venv

$ venv \ স্ক্রিপ্ট \ সক্রিয়

 

প্রথমত, আমরা একটি তৈরি করেছি প্রকল্প ডিরেক্টরি তারপর আমরা আমাদের বর্তমান ডিরেক্টরি পরিবর্তন প্রকল্প. তারপরে আমরা সেই ডিরেক্টরির মধ্যে পাইথনের জন্য একটি ভার্চুয়াল পরিবেশ তৈরি এবং সক্রিয় করেছি। 

এখন, আমরা ইনস্টল করার দিকে এগিয়ে যাব বোতল(আমরা লোড পরীক্ষা করার জন্য শেষ পয়েন্ট তৈরি করতে এটি ব্যবহার করব) এবং পঙ্গপাল নিজেই। 

 

ফ্লাস্ক ইনস্টল করতে, চালান। আপনি আছে নিশ্চিত করুন প্রকল্প যেখানে আপনি একটি ভার্চুয়াল পরিবেশ তৈরি করেছেন।

$ pip ইন্সটল ফ্লাস্ক

 

পঙ্গপাল ইনস্টল করতে, চালান

$ pip পঙ্গপাল ইনস্টল

 

এটি হয়ে গেলে, নিম্নলিখিত কমান্ডগুলি টাইপ করুন। আপনি আপনার মধ্যে আছে নিশ্চিত করুন প্রকল্প আপনি যখন এটি করবেন তখন ডিরেক্টরি।

$ কপি nul __init__.py

$ mkdir অ্যাপ

$ কপি nul app\app.py

$ কপি nul app\__init__.py

 

এই কমান্ডগুলি কিছু ফাইল তৈরি করে যা আমরা ফ্লাস্ক ব্যবহার করে আমাদের শেষ পয়েন্ট তৈরি করতে ব্যবহার করব। আপনি উপায় দ্বারা আপনার ফাইল এক্সপ্লোরার ব্যবহার করে এই ফাইলগুলি তৈরি করতে পারেন. কিন্তু তাতে মজা কি? আপনি এটি সম্পন্ন করার পরে, নীচের কোড অনুলিপি করুন app.py

ফ্লাস্ক আমদানি থেকে Flask, jsonify, অনুরোধ

অ্যাপ = ফ্লাস্ক (__ নাম__)

গাড়ী_মডেল = [

  { 'ব্র্যান্ড': 'টেসলা', 'মডেল': 'মডেল এস' }

]

 

প্লেন_মডেল = [

  {'ব্র্যান্ড': 'বোয়িং', 'মডেল': '747' }

]

 

@app.route('/cars')

def get_cars():

  jsonify(car_models) ফেরত দিন

@app.route('/planes')

def get_planes():

  jsonify (প্লেন_মডেল) ফেরত দিন

যদি __ নাম__ == '__ মেইন__':

    app.run(debug=True)  

 

উপরের কোডে একটি পদ্ধতি রয়েছে পান_গাড়ি গাড়ির ব্র্যান্ড এবং তাদের মডেলগুলির একটি তালিকা পেতে ব্যবহৃত হয়, এবং get_planes প্লেন ব্র্যান্ড এবং তাদের মডেলের একটি তালিকা পেতে ব্যবহৃত. এই এন্ডপয়েন্টটি পরীক্ষা করার জন্য আমাদেরকে app.py চালাতে হবে। এটি করতে নীচের কমান্ডটি চালান।

$ python path\to\app.py

একবার আপনি এটি চালালে, আপনার এরকম কিছু দেখতে হবে:

API লোড টেস্টিং 1

আপনি যদি টার্মিনাল থেকে URL টি কপি করে টাইপ করেন কার or প্লেন / এর পরে, আপনি সেখানে ডেটা দেখতে সক্ষম হবেন। যাইহোক, আমাদের লক্ষ্য হল পঙ্গপাল দিয়ে শেষ বিন্দু পরীক্ষা করা, ব্রাউজার দিয়ে নয়। তাই চলুন যে. আপনার রুটে নিম্নলিখিত কমান্ডটি চালান প্রকল্প ডিরেক্টরি.

 

$ কপি nul locust_test.py

 

এটি আপনার রুটে একটি 'locust_test.py' ফাইল তৈরি করে প্রকল্প ডিরেক্টরি একবার আপনি এটি সম্পন্ন করার পরে, ফাইলটি খুলুন এবং নীচের কোডটিতে পেস্ট করুন। আমরা শীঘ্রই এটি ব্যাখ্যা করা হবে.

 

আমদানির সময়

পঙ্গপাল আমদানি থেকে HttpUser, টাস্ক, এর মধ্যে

 

শ্রেণী ব্যবহারকারী আচরণ(HttpUser):

    অপেক্ষার_সময় = মধ্যে (5, 10)

 

    @টাস্ক

    def get_cars(self):

        self.client.get('/cars')

    

    @টাস্ক

    def get_planes(স্বয়ং):

        self.client.get('/planes')

 

এটি একটি API পরীক্ষা লোড করতে Locust ব্যবহার করার একটি মৌলিক উদাহরণ। প্রথমত, আমরা একটি ক্লাস তৈরি করি ব্যবহারকারীর আচরণ, যাকে যেকোনো উপযুক্ত নাম দেওয়া যেতে পারে তবে অবশ্যই প্রসারিত হবে HttpUser. HttpUser এমন একটি শ্রেণী যা একাধিক ভার্চুয়াল ব্যবহারকারীকে ইনস্ট্যান্টিয়েট করার যত্ন নেয় যাতে আমরা যে কাজগুলি নির্দিষ্ট করি ব্যবহারকারীর আচরণ বর্গ. 

একটি কাজ সঙ্গে একটি পদ্ধতি সজ্জিত দ্বারা নির্দিষ্ট করা হয় @টাস্ক ডেকোরেটর আমরা একটি ফাংশন নামক আছে মধ্যে() এটি আমাদের পরবর্তী কাজটি সম্পাদন করার আগে অপেক্ষা করার জন্য সেকেন্ডের একটি পরিসীমা নির্দিষ্ট করতে দেয়। আপনি দেখতে পাচ্ছেন যে আমরা আমাদের কোডে এটির জন্য 5 থেকে 10 সেকেন্ডের একটি পরিসীমা নির্ধারণ করেছি। 

কোড চালানোর জন্য, নিশ্চিত করুন যে আপনি এখনও আপনার ভার্চুয়াল পরিবেশে আছেন। আপনি যেটি তৈরি করেছেন তা যদি API পরিবেশনকারী সার্ভার দ্বারা ব্যবহার করা হয়, একটি নতুন টার্মিনাল খুলুন, আপনার ডিরেক্টরিটি আপনার প্রকল্প ডিরেক্টরি, এবং আপনার তৈরি ভার্চুয়াল পরিবেশ সক্রিয় করুন। আপনি উপরে একটি ভার্চুয়াল পরিবেশ সক্রিয় করার জন্য কমান্ড খুঁজে পেতে পারেন. এখন, আপনার টার্মিনালে নীচের কমান্ডটি প্রবেশ করান।

 

$ locust -f locust_test.py

 

আপনি এই মত কিছু দেখতে হবে:

API লোড টেস্টিং 2

ডিফল্টরূপে, পঙ্গপালের ওয়েব ইন্টারফেসটি http://localhost/8089 এ অবস্থিত। আপনি ওয়েবসাইট পরিদর্শন করলে, আপনি এই মত একটি ইন্টারফেস দেখতে হবে:

API লোড টেস্টিং 3

ইন্টারফেস থেকে, আমরা ব্যবহারকারীর সংখ্যা, স্পন রেট (প্রতি সেকেন্ডে তৈরি ব্যবহারকারী) এবং হোস্ট নির্দিষ্ট করতে পারি। সার্ভারটি কোথায় চলছে তা পরীক্ষা করে আপনি আপনার হোস্টের ঠিকানা পেতে পারেন। আমাদের ক্ষেত্রে, এটি পোর্ট 5000 এ থাকে। আপনি যখন ক্লিক করেন ঝাঁক শুরু কর, আপনাকে নীচের ইন্টারফেসের সাথে উপস্থাপন করা হবে।

API লোড টেস্টিং 4

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


ব্যতীত পরিসংখ্যান ট্যাব, একটি আছে চার্ট ট্যাব যা আরও দেখায় তথ্য একটি গ্রাফ আকারে, নীচের ছবির মত.

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

শেষ করা...

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

আপনি যদি একটি স্পাইক পরীক্ষা করতে চান, ব্যবহারকারীর সংখ্যার জন্য একটি বড় মান (বলুন 2000) নির্দিষ্ট করুন এবং তারপরে আপনার স্পন হারের জন্য একটি সমান বড় মান (উদাহরণস্বরূপ 500)। এর মানে হল যে 4 সেকেন্ডের মধ্যে, আপনি সমস্ত 2000 ব্যবহারকারী তৈরি করবেন এবং আপনার শেষ পয়েন্টগুলি অ্যাক্সেস করতে পারবেন। একটি স্ট্রেস পরীক্ষা অনুরূপ হবে, কিন্তু স্পন হারের জন্য অনেক কম মান সহ। আপনি যা করতে পারেন তা খুঁজে বের করতে, পঙ্গপাল দেখুন ডকুমেন্টেশন

TOR সেন্সরশিপ বাইপাস করা

TOR দিয়ে ইন্টারনেট সেন্সরশিপ বাইপাস করা

TOR ভূমিকার সাথে ইন্টারনেট সেন্সরশিপ বাইপাস করা এমন একটি বিশ্বে যেখানে তথ্যের অ্যাক্সেস ক্রমবর্ধমানভাবে নিয়ন্ত্রিত হচ্ছে, টর নেটওয়ার্কের মতো সরঞ্জামগুলি গুরুত্বপূর্ণ হয়ে উঠেছে

আরো পড়ুন »
Kobold Letters: HTML-ভিত্তিক ইমেল ফিশিং আক্রমণ

Kobold Letters: HTML-ভিত্তিক ইমেল ফিশিং আক্রমণ

Kobold Letters: HTML-ভিত্তিক ইমেল ফিশিং আক্রমণ 31শে মার্চ 2024-এ, লুটা সিকিউরিটি একটি নতুন পরিশীলিত ফিশিং ভেক্টর, Kobold Letters-এর উপর আলোকপাত করে একটি নিবন্ধ প্রকাশ করেছে৷

আরো পড়ুন »