परफ़ॉर्मेंस टेस्टिंग क्या है?
परफ़ॉर्मेंस टेस्टिंग मापती है कि सिस्टम निर्धारित वर्कलोड में कैसे व्यवहार करता है: रिस्पॉन्स टाइम (आमतौर पर औसत नहीं, 95वाँ पर्सेंटाइल), थ्रूपुट (रिक्वेस्ट प्रति सेकंड) और एरर रेट, साथ में CPU, मेमोरी और डेटाबेस की संतृप्ति पर नज़र। लोड टेस्टिंग अपेक्षित ट्रैफ़िक इस्तेमाल करती है, स्ट्रेस टेस्टिंग उससे आगे जाकर टूटने का बिंदु खोजती है, सोक टेस्टिंग घंटों तक लोड रखकर लीक उजागर करती है, और स्पाइक टेस्टिंग अचानक उछाल से रिकवरी जाँचती है।
गाइड पढ़ें: परफ़ॉर्मेंस टेस्टिंग क्या है?
Concurrent रिक्वेस्ट टेस्ट जनरेटर कैसे इस्तेमाल करें
- लक्षित URL डालें (कोई staging या टेस्ट एनवायरनमेंट जिस पर लोड डालने की आपको अनुमति है), साथ में method, हेडर और बॉडी।
- virtual users, अवधि, ramp-up, think time और p95/एरर-दर के threshold तय करें।
- कोई टूल चुनें (या "All five") और "Generate" दबाएँ।
- स्क्रिप्ट सही एक्सटेंशन के साथ डाउनलोड करें और छपे हुए कमांड से चलाएँ।
- CI में exit code देखें: threshold टूटने पर k6, Locust, Artillery और Node.js स्क्रिप्ट non-zero के साथ बाहर निकलती हैं; JMeter के लिए रिपोर्ट में फ़ेल हुए सैंपल देखें।
Concurrent रिक्वेस्ट टेस्ट जनरेटर की खूबियाँ
- एक ही फ़ॉर्म से k6, JMeter JMX, Locust, Artillery और Node.js स्क्रिप्ट
- virtual-user और अवधि की सीमाओं के साथ ramp-up और steady state लोड (k6 स्क्रिप्ट 5 s का ramp-down भी जोड़ती है)
- threshold पहले से शामिल: k6, Locust, Artillery और Node.js स्क्रिप्ट में p95 latency का बजट और अधिकतम एरर दर रन को फ़ेल कर देते हैं; JMeter प्लान हर सैंपल को latency बजट से अलग-अलग जाँचता है
- timeout, think time, कस्टम हेडर और JSON बॉडी
- k6, JMeter, Locust और Artillery के लिए वैकल्पिक CSV feeder की wiring
- चलाने के कमांड और कॉन्फ़िगरेशन का सारांश; लक्षित सर्वर को कुछ भी नहीं भेजा जाता
Concurrent रिक्वेस्ट टेस्ट जनरेटर का उदाहरण
orders endpoint के लिए k6 स्क्रिप्ट
इनपुट:
POST https://staging.example.com/api/orders
20 VUs · 60 s · 15 s ramp-up · p95 < 500 ms · errors < 1%आउटपुट:
export const options = {
stages: [
{ duration: '15s', target: 20 }, // ramp-up
{ duration: '45s', target: 20 }, // steady state
{ duration: '5s', target: 0 }, // ramp-down
],
thresholds: {
http_req_duration: ['p(95)<500'],
http_req_failed: ['rate<0.01'],
},
};- उदाहरण के k6 स्टेजस्क्रिप्ट में threshold:
p(95)<500औरrate<0.01- 1ramp-up 0–15 s20 वर्चुअल यूज़र्स तक
- 2steady state 15–60 s20 पर स्थिर
- 3ramp-down 60–65 s0 तक
ramp-down स्टेज JMeter, Locust, Artillery और Node.js स्क्रिप्ट में नहीं होता।
Concurrent रिक्वेस्ट टेस्ट जनरेटर के बारे में अक्सर पूछे जाने वाले सवाल
कौन-कौन से टूल सपोर्ट किए जाते हैं?
k6 (JavaScript), JMeter (thread group, HTTP sampler, header manager, assertion और timer वाला पूरा JMX टेस्ट प्लान), Locust (Python), Artillery (YAML) और बिना किसी dependency वाली Node.js स्क्रिप्ट।
इसमें कौन-से सुरक्षित डिफ़ॉल्ट पहले से हैं?
virtual users अधिकतम 500 और अवधि अधिकतम एक घंटा; हर स्क्रिप्ट में 30 s का रिक्वेस्ट timeout, ramp-up और think time होते हैं। k6, Locust, Artillery और Node.js स्क्रिप्ट में p95 तथा एरर दर के threshold भी होते हैं, जो CI में रन को फ़ेल कर देते हैं; JMeter प्लान p95 बजट से धीमे हर सैंपल को फ़ेल चिह्नित करता है, पर पूरे रन के लिए कोई threshold नहीं रखता।
क्या स्क्रिप्ट CSV feeder पढ़ सकती हैं?
हाँ। CSV फ़ाइल का नाम डालें और k6, JMeter, Locust तथा Artillery स्क्रिप्ट में loader शामिल हो जाता है; वह फ़ाइल लोड टेस्ट डेटा जनरेटर से बनाएँ।
क्या मेरा URL और हेडर कहीं भेजे जाते हैं?
नहीं। स्क्रिप्ट आपके ब्राउज़र में ही बनती हैं। commit करने से पहले हेडर देख लें — किसी स्क्रिप्ट में असली credentials कभी न रखें।
क्या किसी भी साइट पर लोड टेस्ट करना क़ानूनी है?
सिर्फ़ उन्हीं सिस्टम पर टेस्ट करें जो आपके हों या जिनके लिए आपके पास लिखित अनुमति हो। ये स्क्रिप्ट staging और pre-production एनवायरनमेंट के लिए बनी हैं।
तकनीकी नोट्स
JMX आउटपुट एक पूरा JMeter 5.6 टेस्ट प्लान होता है: user-defined variables वाला TestPlan, scheduler और ramp समय वाला ThreadGroup, पार्स किए गए host/port/path वाला HTTPSamplerProxy, एक HeaderManager, Duration और Response assertion, think time के लिए ConstantTimer तथा एक Summary Report listener। हेडर और बॉडी में आए विशेष अक्षर XML-escape कर दिए जाते हैं।
सीमाएँ (500 virtual users, एक घंटा) और production जैसे दिखने वाले होस्ट नामों पर चेतावनियाँ जान-बूझकर लगाई गई रोक हैं; इससे बड़े टेस्ट की योजना बनाकर, मंज़ूरी लेकर और वितरित जनरेटर से चलाया जाना चाहिए।
संदर्भ
- Apache JMeter User's ManualJMeter से लोड टेस्ट कैसे बनाएँ, पैरामीटराइज़ करें और चलाएँ, और उसके लिसनर व रिपोर्ट कैसे पढ़ें।
- Release It! Second Edition: Design and Deploy Production-Ready Software (Michael T. Nygard)स्थिरता पैटर्न — टाइमआउट, सर्किट ब्रेकर, बल्कहेड, बैक-प्रेशर — और वे विफलता के तरीके जिन्हें लोड टेस्टिंग खोजने के लिए है।
- Site Reliability Engineering: How Google Runs Production Systemsसर्विस लेवल ऑब्जेक्टिव, एरर बजट, "चार गोल्डन सिग्नल" की निगरानी और ओवरलोड संभालना — लचीलेपन का परिचालन पक्ष।