ٹڈی کے ساتھ API لوڈ ٹیسٹنگ

ٹڈی کے ساتھ API لوڈ ٹیسٹنگ

ٹڈی کے ساتھ API لوڈ ٹیسٹنگ: تعارف

آپ شاید پہلے بھی اس صورتحال میں رہے ہوں: آپ کوڈ لکھتے ہیں جو کچھ کرتا ہے، مثال کے طور پر ایک اختتامی نقطہ۔ آپ پوسٹ مین یا بے خوابی کا استعمال کرتے ہوئے اپنے اختتامی نقطہ کی جانچ کرتے ہیں، اور سب کچھ ٹھیک کام کرتا ہے۔ آپ اینڈ پوائنٹ کو کلائنٹ سائیڈ ڈویلپر کو دیتے ہیں، جو پھر استعمال کرتا ہے۔ API اور ایپلیکیشن کو تعینات کرتا ہے۔ لیکن پھر، جب صارفین ایپ استعمال کرتے ہیں تو API ناکام ہوجاتا ہے۔

یہ ایک انتہائی پریشان کن صورتحال ہو سکتی ہے، جس میں کاروبار کے لیے مہنگا ہونے کا ذکر نہیں کیا جا سکتا۔ یہی وجہ ہے کہ سافٹ ویئر ڈویلپرز سافٹ ویئر سسٹم پر مختلف قسم کے ٹیسٹ کرواتے ہیں تاکہ یہ یقینی بنایا جا سکے کہ وہ توقع کے مطابق کارکردگی کا مظاہرہ کرتے ہیں۔ APIs مختلف نہیں ہیں۔ تعیناتی سے پہلے، آپ کو کم از کم کارکردگی کے ٹیسٹ اور سیکیورٹی ٹیسٹ کرنے چاہئیں۔

کارکردگی کے ٹیسٹوں کو فعالیت کے ٹیسٹ اور لوڈ ٹیسٹ میں گروپ کیا جا سکتا ہے۔ فنکشنلٹی ٹیسٹ وہ ہیں جن کے لیے آپ عام طور پر پوسٹ مین یا بے خوابی کا استعمال کرتے ہیں۔ وہ اس بات کو یقینی بناتے ہیں کہ آپ کی توقع کے مطابق آپ کا API کام کرتا ہے۔ دوسری طرف لوڈ ٹیسٹ، اس بات سے زیادہ فکر مند ہیں کہ آپ کا API حقیقی دنیا کے استعمال اور چوٹی کے بوجھ کے ساتھ کس طرح کارکردگی کا مظاہرہ کرتا ہے، اور یہ مضمون اسی کے بارے میں ہے۔ آئیے مزید تفصیل سے لوڈ ٹیسٹ کو دیکھیں۔

API لوڈ ٹیسٹنگ کیا ہے؟

API لوڈ ٹیسٹنگ ٹیسٹنگ کی ایک قسم ہے جسے ڈویلپرز اینڈ پوائنٹس پر نارمل اور چوٹی کے بوجھ کی نقل کرنے کے لیے استعمال کرتے ہیں۔ اس قسم کی جانچ ڈیولپرز کو API کے تعینات ہونے سے پہلے اس کی حقیقی دنیا کی کارکردگی کا جائزہ لینے دیتی ہے۔ اس سے انہیں سسٹم کی زیادہ سے زیادہ آپریٹنگ صلاحیت، اگر کوئی رکاوٹیں ہیں، اور کارکردگی میں کمی کی نشاندہی کرنے میں مدد ملتی ہے۔ API لوڈ ٹیسٹ عام طور پر ورچوئل صارفین بنا کر اور پھر API کی فعالیت کو بیک وقت جانچنے کے لیے استعمال کر کے کیے جاتے ہیں۔ 

API لوڈ ٹیسٹ میٹرکس کی پیمائش کرتے ہیں جیسے رسپانس ٹائم، کنکرنٹ یوزرز، تھرو پٹ ریٹس، وسائل کے استعمال کی سطح، ناکامی کے درمیان کا وقت (MTBF)، ناکامی کا اوسط وقت (MTTF)، وغیرہ۔ ان تمام میٹرکس کا استعمال اس بات کا تعین کرنے کے لیے کیا جا سکتا ہے کہ API کتنا اچھا کام کر رہا ہے۔

لوڈ ٹیسٹنگ کی اقسام

لوڈ ٹیسٹنگ کی کئی اقسام ہیں، ہر ایک اس کے استعمال کے معاملات کے ساتھ۔ آئیے ان میں سے کچھ پر ایک نظر ڈالتے ہیں۔

لوڈ ٹیسٹنگ: یہ لوڈ ٹیسٹ کی بنیادی شکل ہے۔ اس کا استعمال عام بوجھ اور متوقع چوٹی بوجھ کے تحت نظام (اس معاملے میں، ایک API) کی کارکردگی کا جائزہ لینے کے لیے کیا جاتا ہے۔

تناؤ کی جانچ: یہ ایک بہت بھاری بوجھ کے تحت ایک نظام کی کارکردگی کا اندازہ کرنے کے لئے استعمال کیا جاتا ہے. اس ٹیسٹ کا مقصد یہ دیکھنا ہے کہ آیا کوئی سسٹم ناکامی کے بعد ٹھیک ہو جاتا ہے، اور ایسا کرنے میں کتنا وقت لگتا ہے۔ بوجھ کو عام طور پر آہستہ آہستہ بڑھایا جاتا ہے جب تک کہ یہ سسٹم کی صلاحیتوں سے زیادہ نہ ہو جائے۔

سپائیک ٹیسٹنگ: یہ تناؤ کی جانچ سے تھوڑا سا مشابہت رکھتا ہے، سوائے اس کے کہ بھاری بوجھ کو اچانک لاگو کیا جاتا ہے، جیسا کہ اسے آہستہ آہستہ بڑھانا ہے۔ اس قسم کا ٹیسٹ اس بات کی نمائندگی کرتا ہے کہ جب آپ کے صارفین یا دیکھنے والوں کی اوسط تعداد میں اچانک اضافہ ہوتا ہے، یا جب آپ کے سسٹم پر DDOS حملہ ہوتا ہے۔

لینا ٹیسٹنگ: یہ ٹیسٹ مندرجہ بالا دوسروں کے برعکس ہے۔ یہ آپ کے سسٹم کو عام بوجھ کے 80% (یا اس کے قریب) سے کم رکھتا ہے اور اسے لمبے عرصے تک چلتا رہتا ہے، یوں کہیے کہ 12 سے 14 گھنٹے۔ اس قسم کا ٹیسٹ اس بات کا تعین کرتا ہے کہ وقت کے ساتھ ساتھ کوئی نظام کتنا قابل اعتماد ہے۔

ٹڈی کے ساتھ اپنے APIs کی جانچ لوڈ کریں۔

ڈویلپرز کو اپنے APIs کو لوڈ کرنے کے لیے مختلف اختیارات تک رسائی حاصل ہے۔ کچھ عام لوڈ ٹیسٹنگ ٹولز Gatling، JMeter، اور Locust ہیں۔ ہم اس مضمون میں ٹڈی دل پر توجہ مرکوز کریں گے۔

لوکسٹ ایک ازگر پر مبنی اوپن سورس لوڈ ٹیسٹنگ ٹول ہے جسے گوگل، مائیکروسافٹ، اور رائٹ گیمز جیسی اعلیٰ کمپنیاں اپنے APIs کی جانچ کے لیے استعمال کرتی ہیں۔ اس آرٹیکل میں، ہم یہ دکھائیں گے کہ ٹیسٹ API کو کیسے لوڈ کیا جائے۔ 

اس ٹیوٹوریل کے لیے، میں فلاسک کے ساتھ ایک سادہ API بناؤں گا۔ آپ میرے ساتھ ساتھ چل سکتے ہیں یا صرف نوڈ کے ساتھ اپنا API بنا سکتے ہیں، یا جو بھی فریم ورک آپ کو آرام دہ ہے۔

ضروریات

ازگر 3

سیٹ اپ اور انسٹالیشن

سب سے پہلے، آپ کو اپنے کمپیوٹر پر ایک ورچوئل ماحول قائم کرنے کی ضرورت ہے تاکہ آپ اپنے عالمی ازگر کے ماحول کو گڑبڑ نہ کریں۔ ایسا کرنے کے لیے، درج ذیل کمانڈز کو چلائیں۔ نوٹ کریں کہ یہ کمانڈ ونڈوز ٹرمینل پر لاگو ہوتے ہیں۔

$mkdir پروجیکٹ

$cd/d راستہ\to\project

$python -m venv venv

$venv\Scripts\activate

 

سب سے پہلے، ہم نے ایک بنایا منصوبے ڈائریکٹری پھر ہم نے اپنی موجودہ ڈائرکٹری کو تبدیل کر دیا۔ منصوبے. اس کے بعد ہم نے اس ڈائرکٹری کے اندر ازگر کے لیے ایک ورچوئل ماحول بنایا اور فعال کیا۔ 

اب ہم انسٹال کرنے کی طرف بڑھیں گے۔ فلاسک(ہم اسے لوڈ ٹیسٹ کرنے کے لیے اینڈ پوائنٹس بنانے کے لیے استعمال کریں گے) اور ٹڈڈی خود. 

 

فلاسک انسٹال کرنے کے لیے، چلائیں۔ یقینی بنائیں کہ آپ اس میں ہیں۔ منصوبے جہاں آپ نے ایک ورچوئل ماحول بنایا۔

$pip انسٹال فلاسک

 

Locust انسٹال کرنے کے لیے، چلائیں۔

$pip install locust

 

ایک بار یہ ہو جانے کے بعد، درج ذیل کمانڈز کو ٹائپ کریں۔ یقینی بنائیں کہ آپ اپنے میں ہیں۔ منصوبے ڈائریکٹری جب آپ یہ کرتے ہیں۔

$ کاپی nul __init__.py

$mkdir ایپ

$ کاپی nul app\app.py

$ کاپی nul app\__init__.py

 

یہ کمانڈ کچھ فائلیں بناتا ہے جسے ہم فلاسک کا استعمال کرتے ہوئے اپنے اینڈ پوائنٹس بنانے کے لیے استعمال کریں گے۔ آپ ان فائلوں کو اپنے فائل ایکسپلورر کا استعمال کرکے بھی بنا سکتے ہیں۔ لیکن اس میں کیا مزہ ہے؟ ایک بار جب آپ یہ کر لیتے ہیں، تو درج ذیل کوڈ کو اس میں کاپی کریں۔ app.py

فلاسک امپورٹ فلاسک، jsonify، درخواست سے

ایپ = فلاسک(__نام__)

کار_ماڈلز = [

  {'برانڈ': 'ٹیسلا'، 'ماڈل': 'ماڈل ایس' }

]

 

طیارہ_ماڈلز = [

  {'برانڈ': 'بوئنگ'، 'ماڈل': '747' }

]

 

@app.route('/cars')

def get_cars():

  واپس jsonify(car_models)

@app.route('/planes')

def get_planes():

  واپس jsonify(plane_models)

اگر __name__ == '__ main__':

    app.run(debug=True)  

 

مذکورہ کوڈ میں ایک طریقہ ہے۔ حاصل_کاریں کار برانڈز اور ان کے ماڈلز کی فہرست حاصل کرنے کے لیے استعمال کیا جاتا ہے، اور ہوائی جہاز ہوائی جہاز کے برانڈز اور ان کے ماڈلز کی فہرست حاصل کرنے کے لیے استعمال کیا جاتا ہے۔ اس اینڈ پوائنٹ کو ٹیسٹ لوڈ کرنے کے لیے، ہمیں app.py چلانے کی ضرورت ہے۔ ایسا کرنے کے لیے نیچے دی گئی کمانڈ کو چلائیں۔

$python path\to\app.py

ایک بار جب آپ اسے چلاتے ہیں، تو آپ کو کچھ اس طرح نظر آنا چاہئے:

API لوڈ ٹیسٹنگ 1

اگر آپ ٹرمینل سے یو آر ایل کاپی کرتے ہیں اور ٹائپ کرتے ہیں۔ کاریں or ہوائی جہاز / کے بعد، آپ کو وہاں ڈیٹا دیکھنے کے قابل ہونا چاہئے۔ تاہم، ہمارا مقصد ٹڈی کے ساتھ اختتامی نقطہ کی جانچ کرنا ہے، براؤزر کے ساتھ نہیں۔ تو آئیے ایسا کرتے ہیں۔ اپنے روٹ میں درج ذیل کمانڈ کو چلائیں۔ منصوبے ڈائریکٹری.

 

$ کاپی nul locust_test.py

 

یہ آپ کے روٹ میں ایک 'locust_test.py' فائل بناتا ہے۔ منصوبے ڈائریکٹری ایک بار جب آپ یہ کر لیں، فائل کو کھولیں اور نیچے دیئے گئے کوڈ میں پیسٹ کریں۔ ہم جلد ہی اس کی وضاحت کریں گے۔

 

درآمد کا وقت

ٹڈی درآمد HttpUser سے، کام، کے درمیان

 

کلاس User Behavior(HttpUser):

    انتظار_وقت = درمیان (5، 10)

 

    @task

    def get_cars(self):

        self.client.get('/cars')

    

    @task

    def get_planes(خود):

        self.client.get('/planes')

 

یہ ایک API ٹیسٹ لوڈ کرنے کے لیے Locust استعمال کرنے کی ایک بنیادی مثال ہے۔ سب سے پہلے، ہم ایک کلاس بناتے ہیں صارف کا برتاؤ، جسے کوئی بھی مناسب نام دیا جا سکتا ہے لیکن اسے بڑھانا ضروری ہے۔ ایچ ٹی پی یوزر۔ ایچ ٹی پی یوزر وہ کلاس ہے جو متعدد ورچوئل صارفین کو ان کاموں کو انجام دینے کے لیے انسٹیٹیوٹ کرنے کا خیال رکھتی ہے جن کی ہم نے وضاحت کی ہے صارف کا برتاؤ کلاس. 

کے ساتھ ایک طریقہ سجا کر ایک کام کی وضاحت کی جاتی ہے۔ @task ڈیکوریٹر ہمارے پاس ایک فنکشن بھی ہے جسے کہتے ہیں۔ درمیان() جو ہمیں اگلے کام کو انجام دینے سے پہلے انتظار کرنے کے لیے سیکنڈوں کی حد کی وضاحت کرنے کی اجازت دیتا ہے۔ آپ دیکھ سکتے ہیں کہ ہم نے اپنے کوڈ میں اس کے لیے 5 سے 10 سیکنڈز کی حد مقرر کی ہے۔ 

کوڈ چلانے کے لیے، یقینی بنائیں کہ آپ ابھی بھی اپنے ورچوئل ماحول میں ہیں۔ اگر آپ کا بنایا ہوا سرور API کو پیش کرنے والے استعمال کر رہا ہے، تو ایک نیا ٹرمینل کھولیں، اپنی ڈائرکٹری کو اپنے منصوبے ڈائریکٹری، اور آپ کے بنائے ہوئے ورچوئل ماحول کو چالو کریں۔ آپ اوپر ورچوئل ماحول کو چالو کرنے کے لیے کمانڈ تلاش کر سکتے ہیں۔ اب، اپنے ٹرمینل میں نیچے کی کمانڈ درج کریں۔

 

$ locust -f locust_test.py

 

تمہیں اس طرح کچھ دیکھنا چاہئے:

API لوڈ ٹیسٹنگ 2

پہلے سے طے شدہ طور پر، ٹڈی کا ویب انٹرفیس http://localhost/8089 پر واقع ہے۔ اگر آپ ویب سائٹ پر جاتے ہیں، تو آپ کو اس طرح کا انٹرفیس نظر آنا چاہیے:

API لوڈ ٹیسٹنگ 3

انٹرفیس سے، ہم صارفین کی تعداد، سپون ریٹ (صارفین فی سیکنڈ تخلیق) اور میزبان بتا سکتے ہیں۔ آپ ٹرمینل کو چیک کر کے اپنے میزبان کا پتہ حاصل کر سکتے ہیں جہاں سرور چل رہا ہے۔ ہمارے معاملے میں، یہ پورٹ 5000 پر ہے۔ جب آپ کلک کرتے ہیں۔ بھیڑنا شروع کرو، آپ کو ذیل میں انٹرفیس کے ساتھ پیش کیا جائے گا۔

API لوڈ ٹیسٹنگ 4

یہ آپ کو مختلف مفید میٹرکس دکھاتا ہے جیسے کہ ناکام درخواستوں کی تعداد، درخواست کے لیے اوسط وقت، درخواست کے لیے کم از کم وقت، درخواستیں فی سیکنڈ وغیرہ۔ جو کچھ آپ دیکھتے ہیں اس سے مطمئن ہونے کے بعد، آپ سٹاپ بٹن پر کلک کر سکتے ہیں۔ 


اس کے علاوہ اعداد و شمار ٹیب، وہاں ایک ہے چارٹس ٹیب جو مزید دکھاتا ہے۔ معلومات نیچے کی تصویر کی طرح گراف کی شکل میں۔

ایک ہے کل درخواستیں فی سیکنڈ گراف, جوابی وقت کا گراف، اور صارفین کی تعداد کا گراف، سب وقت کے خلاف سازش کی گئی۔ گرافس کا استعمال کرتے ہوئے، آپ اس بات کا تعین کر سکتے ہیں کہ ایک مقررہ جوابی وقت کے لیے کتنے صارفین قابل قبول ہیں، یا آپ صارفین کی بڑھتی ہوئی تعداد، اور اس جیسی دیگر بصیرتوں کے باوجود اپنے چارٹ کو مستقل جوابی وقت کے لیے دیکھ سکتے ہیں۔ اگر آپ ان کو شیئر کرنا چاہتے ہیں۔ اعدادوشمار کسی اور کے ساتھ، آپ سے ایک رپورٹ ڈاؤن لوڈ کر سکتے ہیں۔ ڈیٹا ڈاؤن لوڈ کریں۔ ٹیب.

نتیجہ اخذ کرنا...

آپ کے API کو لوڈ کرنا آپ کے ترقیاتی عمل میں ایک اہم سرگرمی ہے، لہذا یقینی بنائیں کہ یہ آپ کے ڈیزائن سائیکل میں شامل ہے۔ ویسے، آپ صارفین کی تعداد اور سپون ریٹ کی قدروں کو مختلف کر کے لوڈ ٹیسٹ کی دیگر اقسام کو بھی انجام دے سکتے ہیں۔ 

اگر آپ اسپائک ٹیسٹ کرنا چاہتے ہیں تو، صارفین کی تعداد کے لیے ایک بڑی قدر (کہیں 2000) اور پھر آپ کے سپون ریٹ کے لیے اتنی ہی بڑی قدر (مثال کے طور پر 500) کی وضاحت کریں۔ اس کا مطلب ہے کہ 4 سیکنڈ میں، آپ کے پاس تمام 2000 صارفین بن جائیں گے اور آپ کے اختتامی مقامات تک رسائی حاصل کر لیں گے۔ تناؤ کا ٹیسٹ یکساں ہوگا، لیکن اسپن کی شرح کے لیے بہت کم قیمت کے ساتھ۔ یہ جاننے کے لیے کہ آپ کیا کر سکتے ہیں، ٹڈی کو دیکھیں دستاویزات