टिड्डी के साथ एपीआई लोड परीक्षण

टिड्डी के साथ एपीआई लोड परीक्षण

टिड्डी के साथ एपीआई लोड परीक्षण: परिचय

आप शायद पहले भी इस स्थिति में रहे हैं: आप कोड लिखते हैं जो कुछ करता है, उदाहरण के लिए एक समापन बिंदु। आप पोस्टमैन या अनिद्रा का उपयोग करके अपने समापन बिंदु का परीक्षण करते हैं, और सब कुछ ठीक काम करता है। आप क्लाइंट-साइड डेवलपर को एंडपॉइंट पास करते हैं, जो तब उपभोग करता है API और एप्लिकेशन को तैनात करता है। लेकिन तब, जब उपयोगकर्ता ऐप का उपयोग करते हैं तो एपीआई विफल हो जाती है।

यह एक अत्यधिक कष्टप्रद स्थिति हो सकती है, किसी व्यवसाय के लिए महंगी का उल्लेख नहीं करना। यही कारण है कि सॉफ्टवेयर डेवलपर्स सॉफ्टवेयर सिस्टम पर कई तरह के परीक्षण करते हैं ताकि यह सुनिश्चित हो सके कि वे अपेक्षा के अनुरूप प्रदर्शन करते हैं। एपीआई अलग नहीं हैं। परिनियोजन से पहले, आपको कम से कम प्रदर्शन परीक्षण और सुरक्षा परीक्षण करना चाहिए।

प्रदर्शन परीक्षणों को कार्यक्षमता परीक्षणों और लोड परीक्षणों में बांटा जा सकता है। कार्यक्षमता परीक्षण वे हैं जिनके लिए आप आमतौर पर पोस्टमैन या अनिद्रा का उपयोग करते हैं। वे सुनिश्चित करते हैं कि आपकी एपीआई आपकी अपेक्षा के अनुरूप काम करे। दूसरी ओर, लोड परीक्षण इस बात से अधिक चिंतित हैं कि आपका एपीआई वास्तविक दुनिया के उपयोग और पीक लोड के साथ कैसा प्रदर्शन करता है, और यही वह लेख है जिसके बारे में है। आइए लोड परीक्षणों को अधिक विस्तार से देखें।

एपीआई लोड टेस्टिंग क्या है?

एपीआई लोड परीक्षण एक प्रकार का परीक्षण है जिसका उपयोग डेवलपर्स एंडपॉइंट पर सामान्य और पीक लोड का अनुकरण करने के लिए करते हैं। इस प्रकार का परीक्षण डेवलपर्स को एपीआई के वास्तविक दुनिया के प्रदर्शन को तैनात करने से पहले मूल्यांकन करने देता है। यह उन्हें सिस्टम की अधिकतम परिचालन क्षमता, बाधाओं, यदि कोई हो, और प्रदर्शन में गिरावट की पहचान करने में मदद करता है। एपीआई लोड परीक्षण आमतौर पर आभासी उपयोगकर्ता बनाकर और फिर एपीआई की कार्यक्षमता को समवर्ती परीक्षण करने के लिए उपयोग करके किया जाता है। 

एपीआई लोड परीक्षण प्रतिक्रिया समय, समवर्ती उपयोगकर्ता, थ्रूपुट दर, संसाधन उपयोग स्तर, विफलता के बीच औसत समय (एमटीबीएफ), विफलता का औसत समय (एमटीटीएफ), और इसी तरह के मेट्रिक्स को मापते हैं। इन सभी मेट्रिक्स का उपयोग यह निर्धारित करने के लिए किया जा सकता है कि एपीआई कितना अच्छा काम कर रहा है।

भार परीक्षण के प्रकार

लोड परीक्षण के कई प्रकार हैं, जिनमें से प्रत्येक अपने उपयोग के मामलों के साथ है। आइए उनमें से कुछ पर नज़र डालें।

भार परीक्षण: यह लोड टेस्ट का मूल रूप है। इसका उपयोग सामान्य लोड और अपेक्षित पीक लोड के तहत सिस्टम (इस मामले में, एक एपीआई) के प्रदर्शन का मूल्यांकन करने के लिए किया जाता है।

तनाव परीक्षण: इसका उपयोग बहुत भारी भार के तहत सिस्टम के प्रदर्शन का मूल्यांकन करने के लिए किया जाता है। इस परीक्षण का लक्ष्य यह देखना है कि क्या कोई प्रणाली विफलता के बाद ठीक हो जाती है, और ऐसा करने में कितना समय लगता है। लोड को आमतौर पर धीरे-धीरे बढ़ाया जाता है जब तक कि यह सिस्टम की क्षमताओं से अधिक न हो जाए।

स्पाइक परीक्षण: यह तनाव परीक्षण के समान ही है, सिवाय इसके कि भारी भार अचानक लगाया जाता है, इसे धीरे-धीरे रैंप करने के विपरीत। इस प्रकार का परीक्षण दर्शाता है कि क्या होता है जब आपके उपयोगकर्ताओं या आगंतुकों की औसत संख्या में अचानक वृद्धि होती है, या जब आपके सिस्टम पर डीडीओएस हमला होता है।

सोख परीक्षण: यह परीक्षण उपरोक्त अन्य परीक्षणों के विपरीत है। यह आपके सिस्टम को सामान्य भार के 80% (या उसके आसपास) के नीचे रखता है और इसे 12 से 14 घंटे तक लंबी अवधि के लिए चालू रखता है। इस तरह का परीक्षण यह निर्धारित करता है कि समय के साथ सिस्टम कितना विश्वसनीय है।

टिड्डी के साथ अपने एपीआई का लोड परीक्षण

डेवलपर्स के पास अपने एपीआई लोड परीक्षण के लिए कई प्रकार के विकल्प हैं। कुछ सामान्य लोड परीक्षण उपकरण गैटलिंग, जेएमटर और टिड्डी हैं। हम इस लेख में टिड्डी पर ध्यान केंद्रित करेंगे।

टिड्डी एक अजगर-आधारित ओपन-सोर्स लोड टेस्टिंग टूल है, जिसका उपयोग Google, Microsoft और Riot Games जैसी शीर्ष कंपनियां अपने एपीआई का परीक्षण करने के लिए करती हैं। इस लेख में, हम प्रदर्शित करेंगे कि एपीआई का परीक्षण कैसे लोड किया जाए। 

इस ट्यूटोरियल के लिए, मैं फ्लास्क के साथ एक साधारण एपीआई बनाऊंगा। आप मेरे साथ चल सकते हैं या बस नोड के साथ अपना एपीआई बना सकते हैं, या जो भी ढांचा आप सहज महसूस करते हैं।

आवश्यकताएँ

अजगर 3

सेटअप और स्थापना

सबसे पहले, आपको अपने पीसी पर वर्चुअल वातावरण स्थापित करने की आवश्यकता है ताकि आप अपने वैश्विक पायथन पर्यावरण को खराब न करें। ऐसा करने के लिए, निम्न आदेश चलाएँ। ध्यान दें कि ये आदेश विंडोज टर्मिनल पर लागू होते हैं।

$ एमकेडीआईआर परियोजना

$ सीडी/डी पथ \ to \ project

$ पायथन -एम वेनव वेनव

$ venv\Scripts\active

 

सबसे पहले, हमने एक बनाया परियोजना निर्देशिका। फिर हमने अपनी वर्तमान निर्देशिका को बदल दिया परियोजना. हमने उस निर्देशिका के अंदर पायथन के लिए एक आभासी वातावरण बनाया और सक्रिय किया। 

अब, हम स्थापित करने के लिए आगे बढ़ेंगे कुप्पी(हम लोड परीक्षण के लिए अंतिम बिंदु बनाने के लिए इसका उपयोग करेंगे) और टिड्डी ही. 

 

फ्लास्क को स्थापित करने के लिए, दौड़ें। सुनिश्चित करें कि आप में हैं परियोजना जहाँ आपने एक आभासी वातावरण बनाया।

$ पाइप स्थापित फ्लास्क

 

Locust को स्थापित करने के लिए, दौड़ें

$ पिप टिड्डी स्थापित करें

 

एक बार जब यह हो जाता है, तो निम्न कमांड टाइप करें। सुनिश्चित करें कि आप अपने में हैं परियोजना निर्देशिका जब आप ऐसा करते हैं।

$ कॉपी नूल __init__.py

$ एमकेडीआईआर ऐप

$ कॉपी nul app\app.py

$ कॉपी नूल एप\__init__.py

 

यह आदेश कुछ फ़ाइलें बनाता है जिनका उपयोग हम फ्लास्क का उपयोग करके अपने समापन बिंदु बनाने के लिए करेंगे। आप इन फ़ाइलों को अपने फ़ाइल एक्सप्लोरर का उपयोग करके भी बना सकते हैं। लेकिन इसमें मज़ा क्या है? एक बार जब आप ऐसा कर लेते हैं, तो नीचे दिए गए कोड को कॉपी करें ऐप.पी.ई

फ्लास्क आयात फ्लास्क से, jsonify, request

ऐप = फ्लास्क (__ name__)

कार_मॉडल = [

  {'ब्रांड': 'टेस्ला', 'मॉडल': 'मॉडल एस'}

]

 

विमान मॉडल = [

  {'ब्रांड': 'बोइंग', 'मॉडल': '747'}

]

 

@app.route('/कारें')

डीईएफ़ get_cars ():

  वापसी jsonify (car_models)

@app.route('/planes')

डीईएफ़ get_planes ():

  वापसी jsonify(plane_models)

अगर __name__ == '__main__':

    app.run (डीबग = सच)  

 

उपरोक्त कोड में एक विधि है get_cars कार ब्रांड और उनके मॉडल की सूची प्राप्त करने के लिए उपयोग किया जाता है, और विमान प्राप्त करें हवाई जहाज के ब्रांड और उनके मॉडल की सूची प्राप्त करने के लिए उपयोग किया जाता है। हमारे लिए इस समापन बिंदु का परीक्षण लोड करने के लिए, हमें app.py चलाने की आवश्यकता है। ऐसा करने के लिए नीचे कमांड चलाएँ।

$ अजगर पथ\to\app.py

एक बार जब आप इसे चलाते हैं, तो आपको ऐसा कुछ देखना चाहिए:

एपीआई लोड टेस्टिंग 1

यदि आप URL को टर्मिनल से कॉपी करते हैं और टाइप करते हैं कारों or विमानों / के बाद, आपको वहां डेटा देखने में सक्षम होना चाहिए। हालाँकि, हमारा लक्ष्य ब्राउज़र के साथ नहीं, बल्कि टिड्डे के साथ समापन बिंदु का परीक्षण करना है। तो चलिए ऐसा करते हैं। अपने रूट में निम्न कमांड चलाएँ परियोजना निर्देशिका.

 

$ प्रति locust_test.py कॉपी करें

 

यह आपकी रूट में 'locust_test.py' फ़ाइल बनाता है परियोजना निर्देशिका। एक बार जब आप ऐसा कर लेते हैं, तो फ़ाइल खोलें और नीचे दिए गए कोड में पेस्ट करें। हम शीघ्र ही इसकी व्याख्या करेंगे।

 

आयात समय

टिड्डी आयात से HttpUser, कार्य, के बीच

 

वर्ग उपयोगकर्ता व्यवहार (HttpUser):

    प्रतीक्षा_समय = बीच (5, 10)

 

    @काम

    def get_cars (स्वयं):

        सेल्फ.क्लाइंट.गेट ('/ कार')

    

    @काम

    def get_planes (स्वयं):

        Self.client.get('/planes')

 

यह एक एपीआई का परीक्षण लोड करने के लिए टिड्डे का उपयोग करने का एक मूल उदाहरण है। सबसे पहले, हम एक वर्ग बनाते हैं उपयोगकर्ता व्यवहार, जिसे कोई भी उपयुक्त नाम दिया जा सकता है लेकिन उसका विस्तार होना चाहिए Httpउपयोगकर्ता। Httpउपयोगकर्ता वह वर्ग है जो हमारे द्वारा निर्दिष्ट कार्यों को पूरा करने के लिए कई आभासी उपयोगकर्ताओं को तत्काल करने का ख्याल रखता है उपयोगकर्ता व्यवहार वर्ग. 

के साथ एक विधि को सजाकर एक कार्य निर्दिष्ट किया जाता है @काम डेकोरेटर। हमारे पास एक फ़ंक्शन भी है जिसे कहा जाता है के बीच() जो हमें अगले कार्य को निष्पादित करने से पहले प्रतीक्षा करने के लिए कुछ सेकंड निर्दिष्ट करने की अनुमति देता है। आप देख सकते हैं कि हमने अपने कोड में उसके लिए 5 से 10 सेकंड की सीमा निर्धारित की है। 

कोड चलाने के लिए, सुनिश्चित करें कि आप अभी भी अपने आभासी वातावरण में हैं। यदि आपके द्वारा बनाया गया एपीआई सर्वर द्वारा उपयोग किया जा रहा है, तो एक नया टर्मिनल खोलें, अपनी निर्देशिका को अपने परियोजना निर्देशिका, और आपके द्वारा बनाए गए आभासी वातावरण को सक्रिय करें। आप ऊपर वर्चुअल वातावरण को सक्रिय करने के लिए कमांड पा सकते हैं। अब, अपने टर्मिनल में नीचे दी गई कमांड दर्ज करें।

 

$ टिड्ड -f locust_test.py

 

आपको ऐसा कुछ देखना चाहिए:

एपीआई लोड टेस्टिंग 2

डिफ़ॉल्ट रूप से, टिड्डे का वेब इंटरफ़ेस http://localhost/8089 पर स्थित है। यदि आप वेबसाइट पर जाते हैं, तो आपको इस तरह का इंटरफ़ेस देखना चाहिए:

एपीआई लोड टेस्टिंग 3

इंटरफ़ेस से, हम उपयोगकर्ताओं की संख्या, स्पॉन दर (प्रति सेकंड बनाए गए उपयोगकर्ता), और होस्ट निर्दिष्ट कर सकते हैं। जहां सर्वर चल रहा है उस टर्मिनल की जांच करके आप अपने मेजबान का पता प्राप्त कर सकते हैं। हमारे मामले में, यह पोर्ट 5000 पर है। जब आप क्लिक करते हैं रेंगना शुरू करो, आपको नीचे इंटरफ़ेस के साथ प्रस्तुत किया जाएगा।

एपीआई लोड टेस्टिंग 4

यह आपको विभिन्न उपयोगी मेट्रिक्स दिखाता है जैसे असफल अनुरोधों की संख्या, अनुरोध के लिए औसत समय, अनुरोध के लिए न्यूनतम समय, अनुरोध प्रति सेकंड, और इसी तरह। आप जो देखते हैं उससे संतुष्ट होने के बाद, आप स्टॉप बटन पर क्लिक कर सकते हैं। 


के अतिरिक्त सांख्यिकी (स्टेटिस्टिक्स) टैब, एक है चार्ट टैब जो अधिक दिखाता है करें- एक ग्राफ के रूप में, नीचे दी गई छवि की तरह।

प्रत्येक श्रेणी के लिए अलग प्रति सेकंड ग्राफ में कुल अनुरोध, प्रतिक्रिया समय ग्राफ, और उपयोगकर्ता ग्राफ की संख्या, सभी ने समय के खिलाफ साजिश रची। ग्राफ़ का उपयोग करके, आप यह निर्धारित कर सकते हैं कि एक निश्चित प्रतिक्रिया समय के लिए कितने उपयोगकर्ता स्वीकार्य हैं, या आप उपयोगकर्ताओं की बढ़ती संख्या और इस तरह की अन्य जानकारियों के बावजूद निरंतर प्रतिक्रिया समय के लिए अपने चार्ट का निरीक्षण कर सकते हैं। अगर आप इन्हें शेयर करना चाहते हैं आँकड़े किसी और के साथ, आप से एक रिपोर्ट डाउनलोड कर सकते हैं डेटा डाउनलोड करें टैब.

समाप्त करने के लिए...

आपके एपीआई का लोड परीक्षण आपकी विकास प्रक्रिया में एक महत्वपूर्ण गतिविधि है, इसलिए सुनिश्चित करें कि यह आपके डिजाइन चक्र में शामिल है। वैसे, आप उपयोगकर्ताओं की संख्या और स्पॉन दर के मूल्यों को अलग-अलग करके अन्य लोड टेस्ट प्रकार भी कर सकते हैं। 

यदि आप एक स्पाइक टेस्ट करना चाहते हैं, तो उपयोगकर्ताओं की संख्या के लिए एक बड़ा मान (2000 कहें) निर्दिष्ट करें, और फिर आपकी स्पॉन दर (उदाहरण के लिए 500) के लिए समान रूप से बड़ा मान निर्दिष्ट करें। इसका मतलब है कि 4 सेकंड में, आपके पास सभी 2000 उपयोगकर्ता होंगे और आपके एंडपॉइंट तक पहुंचेंगे। एक तनाव परीक्षण समान होगा, लेकिन स्पॉन दर के लिए बहुत कम मूल्य के साथ। यह जानने के लिए कि आप क्या कर सकते हैं, टिड्डे को देखें दस्तावेज़ीकरण

टीओआर सेंसरशिप को दरकिनार करना

टीओआर के साथ इंटरनेट सेंसरशिप को दरकिनार करना

टीओआर परिचय के साथ इंटरनेट सेंसरशिप को दरकिनार करना ऐसी दुनिया में जहां सूचना तक पहुंच तेजी से विनियमित हो रही है, टोर नेटवर्क जैसे उपकरण महत्वपूर्ण हो गए हैं

और पढ़ें »
कोबोल्ड लेटर्स: HTML-आधारित ईमेल फ़िशिंग हमले

कोबोल्ड लेटर्स: HTML-आधारित ईमेल फ़िशिंग हमले

कोबोल्ड लेटर्स: HTML-आधारित ईमेल फ़िशिंग हमले 31 मार्च 2024 को, लुटा सिक्योरिटी ने एक नए परिष्कृत फ़िशिंग वेक्टर, कोबोल्ड लेटर्स पर प्रकाश डालते हुए एक लेख जारी किया।

और पढ़ें »