परफ़ॉर्मेंस टेस्टिंग क्या है?

परफ़ॉर्मेंस टेस्टिंग यह जाँचती है कि कोई सिस्टम किसी खास वर्कलोड में कैसा व्यवहार करता है: वह कितनी तेज़ी से जवाब देता है, कितनी रिक्वेस्ट संभाल सकता है, समय के साथ स्थिर रहता है या नहीं, और सीमा से आगे धकेलने पर क्या होता है। फ़ंक्शनल टेस्ट "क्या यह काम करता है?" का जवाब देते हैं; परफ़ॉर्मेंस टेस्ट "क्या यह लॉन्च के दिन सुबह 9 बजे दस हज़ार यूज़र के साथ भी काम करता है?" का।

यह गाइड परफ़ॉर्मेंस टेस्ट के प्रकार और हर एक कब इस्तेमाल होता है, कौन-सी मेट्रिक्स मापें और उन्हें कैसे पढ़ें, API या वेब एप्लिकेशन के पहले टेस्ट का प्रैक्टिकल प्लान, और लोड चलाने वाले टूल्स समझाती है।

परफ़ॉर्मेंस टेस्ट के प्रकार

  • लोड टेस्टिंग — अपेक्षित, रियलिस्टिक ट्रैफ़िक (औसत और पीक) यह पुष्टि करने के लिए कि सिस्टम सामान्य हालात में रिस्पॉन्स-टाइम और एरर लक्ष्य पूरे करता है।
  • स्ट्रेस टेस्टिंग — अपेक्षित पीक से आगे ट्रैफ़िक बढ़ाना जब तक कुछ टूट न जाए, ताकि सीमा पता चले और दिखे कि फ़ेलियर शालीन है (धीमा, 503) या विनाशकारी (क्रैश, डेटा करप्शन)।
  • स्पाइक टेस्टिंग — कम से बहुत ज़्यादा ट्रैफ़िक की अचानक छलाँग, जैसे मार्केटिंग कैंपेन या फ़्लैश सेल में, ऑटोस्केलिंग और क्यूइंग जाँचने के लिए।
  • सोक (एंड्योरेंस) टेस्टिंग — घंटों या दिनों तक मध्यम लोड, मेमोरी लीक, कनेक्शन पूल ख़त्म होने और डिस्क बढ़ने जैसी चीज़ें पकड़ने के लिए जो छोटे टेस्ट कभी नहीं दिखाते।
  • स्केलेबिलिटी टेस्टिंग — लोड चरणों में बढ़ाकर यह सीखना कि रिसोर्स जोड़ने पर थ्रूपुट और लेटेंसी कैसे बदलती है।
  • बेंचमार्किंग — दो वर्ज़न या दो इम्प्लीमेंटेशन की तुलना के लिए एक एंडपॉइंट का तेज़, दोहराने योग्य माप।

आज़माएँ: HTTP रिक्वेस्ट बेंचमार्क आज़माएँ: API परफ़ॉर्मेंस कंपेरेटर

अहम मेट्रिक्स

  • रिस्पॉन्स टाइम — हर रिक्वेस्ट पर मापा जाता है। औसत नहीं, परसेंटाइल रिपोर्ट करें: p50 (मीडियन), p95 और p99 बताते हैं ज़्यादातर यूज़र और सबसे बदक़िस्मत यूज़र क्या अनुभव करते हैं। औसत धीमी पूँछ छिपा देता है।
  • थ्रूपुट — प्रति सेकंड रिक्वेस्ट (या ट्रांज़ैक्शन) जो सिस्टम बनाए रखता है।
  • एरर रेट — फ़ेल होने वाली रिक्वेस्ट का प्रतिशत (5xx, टाइमआउट, कनेक्शन एरर)। लक्ष्य लोड पर यह शून्य के पास रहना चाहिए।
  • कॉन्करेंसी — एक साथ कितने वर्चुअल यूज़र या खुले कनेक्शन सक्रिय हैं।
  • रिसोर्स उपयोग — सर्वर साइड पर CPU, मेमोरी, डेटाबेस कनेक्शन, क्यू डेप्थ, लोड टाइमलाइन से जोड़कर।
  • Apdex या SLO अनुपालन — तय बजट के अंदर रिक्वेस्ट का हिस्सा (जैसे 95% 300 ms से कम)।

आज़माएँ: रिस्पॉन्स टाइम एनालाइज़र आज़माएँ: रिस्पॉन्स साइज़ एनालाइज़र

पहला परफ़ॉर्मेंस टेस्ट प्लान करना

  • लक्ष्य को नंबर के रूप में तय करें: "500 कॉन्करेंट यूज़र के साथ checkout p95 पर 800 ms से कम में पूरा हो और 0.1% से कम एरर हों"।
  • हर पेज के बजाय अहम जर्नी चुनें — लॉगिन, सर्च, कार्ट में जोड़ना, checkout, टॉप तीन API एंडपॉइंट।
  • रियलिस्टिक ट्रैफ़िक मॉडल करें: जर्नी का मिक्स, एक्शन के बीच थिंक टाइम, रैम्प-अप और स्टेडी स्टेट। प्रोडक्शन एनालिटिक्स हो तो इस्तेमाल करें।
  • बड़े पैमाने पर टेस्ट डेटा तैयार करें: हज़ारों अलग यूज़र, प्रोडक्ट और पेलोड ताकि कैश और यूनिक कंस्ट्रेंट प्रोडक्शन की तरह व्यवहार करें।
  • ऐसे एनवायरनमेंट में चलाएँ जो साइज़ में प्रोडक्शन जैसा हो, या नतीजों को सोच-समझकर स्केल करें। लैपटॉप-साइज़ डेटाबेस प्रोडक्शन वाले के बारे में कुछ नहीं बताएगा।
  • पहले एक यूज़र से बेसलाइन बनाएँ, फिर रैम्प करें। हर बाद के रन की बेसलाइन से तुलना करें।
  • रन के दौरान सर्वर साइड मॉनिटर करें; अकेले क्लाइंट-साइड नंबर नहीं बता सकते कि यह धीमा क्यों हुआ।

आज़माएँ: लोड टेस्ट डेटा जनरेटर आज़माएँ: Concurrent रिक्वेस्ट टेस्ट जनरेटर

टूल्स: JMeter, k6, Gatling और ब्राउज़र टूल्स

Apache JMeter GUI, रिकॉर्डर और CSV डेटा सेट वाला पुराना ओपन-सोर्स विकल्प है; k6 स्क्रिप्ट-आधारित (JavaScript), हल्का और CI-फ़्रेंडली है; Gatling Scala/Java-आधारित है, बेहतरीन रिपोर्ट के साथ; Locust Python-आधारित है। क्लाउड सर्विसेज़ (BlazeMeter, Grafana Cloud k6, Azure Load Testing) वही स्क्रिप्ट कई रीजन से चलाती हैं।

ब्राउज़र प्रोडक्शन-स्केल लोड नहीं बना सकता, लेकिन ब्राउज़र टूल्स लोड टेस्ट के आसपास के स्टेप के लिए आदर्श हैं: एक एंडपॉइंट के रिस्पॉन्स टाइम डिस्ट्रीब्यूशन को मापना, दो एंडपॉइंट की तुलना, पेलोड साइज़ और कम्प्रेशन जाँचना, और रनर के लिए CSV और JSON डेटा फ़ाइलें बनाना।

आज़माएँ: JMeter टेस्ट डेटा जनरेटर आज़माएँ: JMeter CSV जनरेटर आज़माएँ: HTTP रिक्वेस्ट बेंचमार्क

नतीजे पढ़ना

  • थ्रूपुट के सपाट होते हुए लेटेंसी बढ़ना मतलब बॉटलनेक आ गया — CPU, डेटाबेस, कनेक्शन पूल या डाउनस्ट्रीम API।
  • लेटेंसी से पहले एरर रेट का बढ़ना अक्सर सुस्ती नहीं, कोई सीमा (max connections, रेट लिमिट) होती है।
  • p99 का p95 से बहुत ऊपर होना गार्बेज कलेक्शन पॉज़, लॉक कंटेंशन या कुछ रिक्वेस्ट पर पड़ने वाली धीमी डिपेंडेंसी की ओर इशारा करता है।
  • सोक टेस्ट में धीमी गिरावट लीक है: मेमोरी, फ़ाइल हैंडल या कनेक्शन।
  • दूसरे रन में रिप्रोड्यूस न होने वाला नतीजा शोर है; कोड ट्यून करने से पहले एनवायरनमेंट ठीक करें।

आज़माएँ: API परफ़ॉर्मेंस कंपेरेटर आज़माएँ: कैश हेडर एनालाइज़र

आम गलतियाँ

  • एक यूज़र id या एक प्रोडक्ट से टेस्ट करना — सब कुछ कैश से आता है और नंबर कल्पना होते हैं।
  • तुरंत फ़ुल लोड पर रैम्प करना, फिर ऐसे स्पाइक के लिए सिस्टम को दोष देना जिसके लिए वह बना ही नहीं था।
  • औसत रिपोर्ट करना। हमेशा एरर रेट के साथ p95 और p99 रिपोर्ट करें।
  • लोड जनरेटर को उसी मशीन पर चलाना जिस पर टेस्ट होने वाला सिस्टम है।
  • पेलोड साइज़ नज़रअंदाज़ करना: 2 MB का JSON रिस्पॉन्स धीमा है चाहे सर्वर कितना भी तेज़ हो।
  • लॉन्च से पहले एक बार टेस्ट करना और फिर कभी नहीं। परफ़ॉर्मेंस एक-एक कमिट में गिरती है।

आज़माएँ: रिस्पॉन्स साइज़ एनालाइज़र आज़माएँ: लोड टेस्ट डेटा जनरेटर

अक्सर पूछे जाने वाले सवाल

लोड टेस्टिंग और स्ट्रेस टेस्टिंग में क्या फ़र्क़ है?

लोड टेस्टिंग अपेक्षित ट्रैफ़िक लगाकर पुष्टि करती है कि लक्ष्य पूरे हुए; स्ट्रेस टेस्टिंग अपेक्षित पीक से आगे ट्रैफ़िक बढ़ाती रहती है ताकि ब्रेकिंग पॉइंट मिले और दिखे कि सिस्टम कैसे फ़ेल होता है।

अच्छा API रिस्पॉन्स टाइम क्या है?

इस्तेमाल पर निर्भर है, लेकिन आम बजट हैं: कैश्ड रीड के लिए 100 ms से कम, सामान्य API कॉल के लिए 300 ms से कम और भारी ऑपरेशन के लिए 1 s से कम — औसत नहीं, p95 पर मापा हुआ।

औसत रिस्पॉन्स टाइम की जगह p95 क्यों?

औसत धीमी पूँछ छिपाता है। p95 कहता है कि 95% रिक्वेस्ट कम से कम इतनी तेज़ थीं, जो यूज़र नोटिस करते हैं; p99 सबसे ख़राब रियलिस्टिक केस दिखाता है।

कितने वर्चुअल यूज़र चाहिए?

असली ट्रैफ़िक से निकालें: पीक रिक्वेस्ट प्रति सेकंड को औसत रिक्वेस्ट अवधि से गुणा करें, यही वह कॉन्करेंसी है जो बनाए रखनी है। ग्रोथ के लिए 20–50% हेडरूम जोड़ें।

क्या ब्राउज़र से परफ़ॉर्मेंस टेस्ट कर सकते हैं?

आप अलग-अलग एंडपॉइंट माप और बेंचमार्क कर सकते हैं और दो की तुलना कर सकते हैं, जो डेवलपमेंट के दौरान उपयोगी है। प्रोडक्शन-स्केल लोड के लिए अलग मशीनों पर JMeter, k6 या Gatling जैसा डेडिकेटेड टूल चाहिए।

JMeter या k6, कौन बेहतर है?

JMeter में GUI, रिकॉर्डर और सबसे बड़ा इकोसिस्टम है; k6 कोड-फ़र्स्ट, हल्का और CI से स्वाभाविक रूप से जुड़ता है। JavaScript में सहज टीमें अक्सर k6 चुनती हैं; मौजूदा JMeter प्लान वाली टीमें JMeter रखती हैं।

इस गाइड में बताए गए टूल्स

और गाइड

और गाइड →
JSON और डेटा

JSON क्या है?

JSON आसान भाषा में: यह क्या है, छह वैल्यू टाइप, वे सिंटैक्स नियम जिनमें लोग अटकते हैं, इसे फ़ॉर्मेट और वैलिडेट कैसे करें, और XML व YAML से इसकी तुलना।

5 मिनट पढ़ने का समय
API टेस्टिंग

API टेस्टिंग क्या है? REST API कैसे टेस्ट करें

API टेस्टिंग समझें: यह क्या है, हर रिक्वेस्ट और रिस्पॉन्स में क्या जाँचें, REST API टेस्ट करने का स्टेप-बाय-स्टेप तरीका, आम गलतियाँ और मुफ़्त टूल्स।

7 मिनट पढ़ने का समय
टेस्ट डिज़ाइन

टेस्ट केस कैसे लिखें

भरोसेमंद टेस्ट केस कैसे लिखें: हर केस के ज़रूरी फ़ील्ड, कॉपी-रेडी टेम्पलेट, लॉगिन का उदाहरण, और वे तकनीकें जो असली बग पकड़ती हैं।

5 मिनट पढ़ने का समय
सुरक्षा

JWT क्या है? JSON Web Token समझें

JWT आसान भाषा में: JSON Web Token के तीन हिस्से, exp और sub जैसे क्लेम, डिकोड और वेरिफ़ाई कैसे करें, डिकोड करना वेरिफ़ाई क्यों नहीं, और सिक्योरिटी।

5 मिनट पढ़ने का समय
एन्कोडिंग

Base64 क्या है? एन्कोडिंग समझें

Base64 समझें: यह क्या है और क्या नहीं, एन्कोडिंग कैसे काम करती है, आउटपुट एक-तिहाई क्यों बढ़ता है, Base64 बनाम Base64URL, = पैडिंग, और एन्कोड-डिकोड।

4 मिनट पढ़ने का समय
यूटिलिटीज़

UUID क्या है? v4 बनाम v7, UUID बनाम GUID और ULID

UUID समझें: 128-बिट फ़ॉर्मेट, v4 बनाम v7, डेटाबेस key के लिए v7 बेहतर क्यों, UUID बनाम GUID बनाम ULID, कॉलिज़न की संभावना, और जनरेट-वैलिडेट कैसे करें।

5 मिनट पढ़ने का समय