फास्टापी तनाव परीक्षण

Dec 05 2022
टिड्डी पायथन स्केलेबिलिटी परीक्षण वेब सेवा उत्पादन तैयार करने का एक महत्वपूर्ण हिस्सा है। लोड परीक्षण के लिए बहुत सारे उपकरण हैं, जैसे गैटलिंग, अपाचे जेएमटर, द ग्राइंडर, त्सुंग और अन्य।

टिड्डी अजगर

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

जैसा कि टिड्डी वेबसाइट पर देखा गया है:

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

टिड्डे की स्थापना

प्रदर्शन परीक्षण अजगर मॉड्यूल लोकस्ट PyPI पर उपलब्ध है और इसे पाइप या easy_install के माध्यम से स्थापित किया जा सकता है।

pip install locustio or: easy_install locust

उदाहरण locustfile.py

फिर डॉक्स से उदाहरण के बाद locustfile.py बनाएं। Django प्रोजेक्ट का परीक्षण करने के लिए मुझे csrftoken समर्थन और AJAX अनुरोधों के लिए कुछ शीर्षलेख जोड़ना पड़ा। अंतिम locustfile.py कुछ इस तरह हो सकता है:

# locustfile.py
from locust import HttpLocust, TaskSet, task
class UserBehavior(TaskSet):
def on_start(self):
        self.login()
def login(self):
        # GET login page to get csrftoken from it
        response = self.client.get('/accounts/login/')
        csrftoken = response.cookies['csrftoken']
        # POST to login page with csrftoken
        self.client.post('/accounts/login/',
                         {'username': 'username', 'password': 'P455w0rd'},
                         headers={'X-CSRFToken': csrftoken})
@task(1)
    def index(self):
        self.client.get('/')
@task(2)
    def heavy_url(self):
        self.client.get('/heavy_url/')
@task(2)
    def another_heavy_ajax_url(self):
        # ajax GET
        self.client.get('/another_heavy_ajax_url/',
        headers={'X-Requested-With': 'XMLHttpRequest'})
class WebsiteUser(HttpLocust):
    task_set = UserBehavior

उपरोक्त पायथन टिड्डी फ़ाइल के साथ टिड्डे को चलाने के लिए, यदि इसे locustfile.py नाम दिया गया था , तो हम (उसी निर्देशिका में locustfile.py के रूप में ) चला सकते हैं:

locust --host=http://example.com

जब अजगर लोड परीक्षण ऐप टिड्डी शुरू हो जाए तो आपको जाना चाहिएhttp://127.0.0.1:8089/और वहां आपको हमारे Locust उदाहरण का वेब-इंटरफ़ेस मिलेगा। फिर अनुकरण करने के लिए उपयोगकर्ताओं की संख्या इनपुट करें (उदाहरण के लिए 300) और हैच दर (उपयोगकर्ता उत्पन्न/सेकंड) (उदाहरण के लिए 10) और स्टार्ट स्वीमिंग दबाएं । उसके बाद टिड्डी उपयोगकर्ताओं को "हैचिंग" करना शुरू कर देगी और आप तालिका में परिणाम देख पाएंगे।

पायथन डेटा विज़ुअलाइज़ेशन

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

पाइप का उपयोग करके PyPI से अजगर रेखांकन लाइब्रेरी बोकेह को स्थापित करना आसान है:

pip install bokeh

यहां बोकेह सर्वर चलाने का एक उदाहरण दिया गया है।

हम जाकर JSON प्रारूप में टिड्डी डेटा प्राप्त कर सकते हैंhttp://localhost:8089/stats/requests. डेटा वहाँ कुछ इस तरह होना चाहिए:

{
       "errors": [],
       "stats": [
           {
               "median_response_time": 350,
               "min_response_time": 311,
               "current_rps": 0.0,
               "name": "/",
               "num_failures": 0,
               "max_response_time": 806,
               "avg_content_length": 17611,
               "avg_response_time": 488.3333333333333,
               "method": "GET",
               "num_requests": 9
           },
           {
               "median_response_time": 350,
               "min_response_time": 311,
               "current_rps": 0.0,
               "name": "Total",
               "num_failures": 0,
               "max_response_time": 806,
               "avg_content_length": 17611,
               "avg_response_time": 488.3333333333333,
               "method": null,
               "num_requests": 9
           }
       ],
       "fail_ratio": 0.0,
       "slave_count": 2,
       "state": "stopped",
       "user_count": 0,
       "total_rps": 0.0
    }

सब साथ चल रहे हैं

तो हमारा Locust चल रहा है (यदि नहीं, तो इसके साथ शुरू करें ) locust --host=http://example.comऔर अब हमें शुरू करना चाहिए और फिर अपना प्लॉटर.py साथ चलाना चाहिए । जैसा कि हमारी स्क्रिप्ट कॉल दिखाती है , दस्तावेज़ देखने के लिए एक ब्राउज़र टैब स्वचालित रूप से सही URL तक खुल जाता है।Bokehserverbokeh servepython plotter.py

यदि टिड्डी पहले से ही परीक्षण चला रही है, तो आप परिणाम तुरंत ग्राफ पर देखेंगे। वरना पर एक नया परीक्षण शुरू करेंhttp://localhost:8089/और बोकेह टैब पर वापस लौटें और वास्तविक समय में परीक्षण के परिणाम देखें।

यही बात है। आप जीथब पर पूरा कोड पा सकते हैं । बेझिझक इसे क्लोन करें और उदाहरण चलाएं।

git clone https://github.com/steelkiwi/locust-bokeh-load-test.git
  cd locust-bokeh-load-test
  pip install -r requirements.txt
  locust --host=<place here link to your site>
  bokeh serve
  python plotter.py