सॉफ्टवेयर परीक्षण में समवर्ती परीक्षण क्या है?

⚡ स्मार्ट सारांश

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

  • 👥 यह भी कहा जाता है: बहु-उपयोगकर्ता परीक्षण, क्योंकि इसका ट्रिगर केवल भारी मात्रा में डेटा की उपलब्धता नहीं बल्कि एक साथ पहुंच है।
  • 🎯 इसका लक्ष्य क्या है: साझा डेटाबेस रिकॉर्ड, साझा मॉड्यूल और साझा एप्लिकेशन कोड तक एक से अधिक सत्रों द्वारा पहुँचा जा सकता है।
  • 🔒 यह क्या मापता है: गतिरोध, लॉकिंग, एकल-थ्रेडेड कोड और साझा संसाधनों तक सीमित पहुंच के स्तर।
  • 🧭 यह कैसे काम करता है: समवर्तीता की संभावना वाले प्रवाहों की पहचान करें, समवर्तीता लक्ष्य निर्धारित करें, वास्तविक क्रियाओं को स्क्रिप्ट करें, और फिर उपयोगकर्ताओं को धीरे-धीरे शामिल करें।
  • 🐞 दोष श्रेणियाँ: रेस कंडीशन, डेडलॉक, अपडेट का खो जाना, डेटा का खराब होना और थ्रेड स्टार्वेशन।
  • ⚠️ ईमानदार सीमाएं: अनिश्चितता, अतुल्यकालिक कॉलबैक और एक गैर-सूचनात्मक कॉल स्टैक के कारण विफलताओं को पुन: उत्पन्न करना कठिन हो जाता है।

एक साथ कई उपयोगकर्ताओं के साथ सॉफ़्टवेयर परीक्षण में समवर्तीता परीक्षण क्या है?

समवर्ती परीक्षण क्या है?

समवर्ती परीक्षण यह एक परीक्षण तकनीक है जिसका उपयोग एक एप्लिकेशन में कई उपयोगकर्ताओं के लॉग इन होने पर दोषों का पता लगाने के लिए किया जाता है। दूसरे शब्दों में, यह एक ही समय में कई उपयोगकर्ताओं द्वारा एक ही क्रिया करने पर पड़ने वाले प्रभाव की निगरानी करता है।

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

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

समवर्ती परीक्षण आरेख जो एक ही एप्लिकेशन संसाधन को एक साथ एक्सेस करने वाले कई उपयोगकर्ताओं को दर्शाता है

कॉन्करेंसी टेस्टिंग क्यों ज़रूरी है?

दो प्रश्न इस प्रयास को उचित ठहराते हैं, और दोनों ही एकल-उपयोगकर्ता कार्यात्मक परीक्षणों के लिए अदृश्य हैं।

  • यह एक ही समय में एक ही डेटाबेस रिकॉर्ड, मॉड्यूल या एप्लिकेशन कोड तक पहुंचने के प्रभावों की पहचान करता है।
  • यह डेडलॉकिंग, लॉकिंग, सिंगल-थ्रेडेड कोड के उपयोग और साझा संसाधनों तक सीमित पहुंच के स्तर की पहचान और माप करता है।

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

कॉन्करेंसी टेस्टिंग कैसे करें

समवर्ती परीक्षण एक दोहराने योग्य क्रम का पालन करता है। नीचे दिए गए चरण स्कोरिंग से आगे बढ़ते हैं।ping संकल्प के लिए।

  • चरण 1) समवर्ती प्रवाहों की पहचान करें। साझा स्थिति की तलाश करें: एक साथ लॉगिन, सीट या स्टॉक आरक्षण, बैलेंस अपडेट, एक ही टेबल में डेटा लिखने वाले बैच जॉब और पथ में कोई भी सिंगल-थ्रेडेड घटक।
  • चरण 2) एक समवर्ती लक्ष्य निर्धारित करें। वास्तविक उपयोग के चरम बिंदुओं के आधार पर यह तय करें कि कितने उपयोगकर्ताओं को एक ही समय में कार्रवाई करनी होगी, न कि किसी निश्चित संख्या के आधार पर।
  • चरण 3) टेस्ट केस डिज़ाइन करें। से प्रत्येक परीक्षण का मामला यह साझा संसाधन, प्रतिस्पर्धी क्रियाओं और अपेक्षित अंतिम स्थिति को जोड़ता है - उदाहरण के लिए, एक खाते से निकासी करने वाले दो सत्रों को एक साथ सफल नहीं होना चाहिए।
  • चरण 4) स्क्रिप्ट लिखें और टूल का चयन करें। एक लोड जनरेटर की आवश्यकता है जो कॉन्फ़िगर करने योग्य आभासी उपयोगकर्ताओं को उत्पन्न करता हो; JMeter यह आम तौर पर इस्तेमाल होने वाला ओपन-सोर्स विकल्प है, और इसकी थ्रेड-ग्रुप सेटिंग्स सीधे समवर्ती परिदृश्यों से मेल खाती हैं।
  • चरण 5) Ramp क्रमिक रूप से. एक साथ कई उपयोगकर्ताओं की संख्या बढ़ाने के लिए, चरणों में वृद्धि करें, न कि एक ही बार में।ping लक्ष्य तक, जिससे विवाद शुरू होने का स्तर स्पष्ट हो जाता है।
  • चरण 6) निगरानी और विश्लेषण करें। लॉक वेट, रिस्पॉन्स-टाइम स्प्रेड, एरर रेट और डेटाबेस ब्लॉकिंग को एक साथ देखें — एक कॉन्करेंसी डिफेक्ट अक्सर एरर के रूप में दिखने से पहले टाइमिंग एनोमली के रूप में दिखाई देता है।
  • चरण 7) समस्या का समाधान करें और पुनः चलाएँ। सिंक्रोनाइज़ेशन, इंडेक्सिंग या लॉकिंग की समस्या को ठीक करें, फिर यह पुष्टि करने के लिए उसी प्रक्रिया को दोहराएं कि व्यवहार में बदलाव हुआ है न कि वह स्थानांतरित हुआ है।

सामान्य समवर्तीता दोष

समवर्तीता संबंधी दोष कुछ चुनिंदा श्रेणियों में आते हैं, और श्रेणी का सही नामकरण आमतौर पर समाधान की ओर सीधा संकेत करता है।

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

क्योंकि ये विफलताएँ रुक-रुक कर होती हैं, इसलिए प्रत्येक रन के लिए लॉग और टाइमस्टैम्प कैप्चर करना आवश्यक है; अन्यथा दोष को विश्वसनीय रूप से उठाया नहीं जा सकता। दोष प्रबंधन प्रक्रिया.

समवर्ती परीक्षण उदाहरण

मान लीजिए कि एक ऑनलाइन स्टोर में किसी उत्पाद की आखिरी यूनिट स्टॉक में बची है। दो ग्राहक एक ही समय पर आइटम खोलते हैं और दोनों बटन दबाते हैं। खरीदना.

  • परिदृश्य: दो सत्रों में स्टॉक = 1 पढ़ा गया, दोनों ने उपलब्धता जांच पास की, और दोनों ने स्टॉक = 0 लिखा।
  • अपेक्षित परिणाम: एक ऑर्डर की पुष्टि हो जाती है, दूसरे के लिए स्टॉक खत्म होने का संदेश मिलता है, और स्टॉक कभी भी नकारात्मक नहीं होता है।
  • दोष सूचक: दोनों ऑर्डर की पुष्टि हो जाती है, या स्टॉक -1 पर आ जाता है, जो दर्शाता है कि उपलब्धता जांच और कमी एक ही चरण में निष्पादित नहीं की जाती हैं।
  • आजमाने लायक विभिन्न विकल्प: एक ही प्रोफाइल रिकॉर्ड को संपादित करने के लिए दो सत्र, एक ही अनुरोध की दो स्वीकृतियाँ, और उपयोगकर्ता द्वारा सहेजने के दौरान तालिका को अपडेट करने वाला एक बैच जॉब।

यही पैटर्न सामान्यीकृत होता है: एक संसाधन, दो लेखक और क्रम की कोई गारंटी नहीं। परिदृश्य को चलाने के दौरान प्रणाली परीक्षणलोड जोड़ने से पहले, निदान को साफ रखता है।

समवर्ती परीक्षण के लाभ

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

समवर्ती परीक्षण के नुकसान

कॉन्करेंसी टेस्टिंग करते समय टेस्टर्स को आमतौर पर नीचे दी गई कमियों का सामना करना पड़ता है।

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

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

नहीं. लोड परीक्षण यह परीक्षण अपेक्षित मात्रा के तहत समय के साथ व्यवहार को मापता है। समवर्ती परीक्षण एक ही क्षण को लक्षित करता है, इसलिए यदि दोनों उपयोगकर्ता एक ही साझा रिकॉर्ड को छूते हैं तो केवल दो उपयोगकर्ताओं के साथ भी दोष प्रकट हो सकता है।

मल्टी-थ्रेड वाला आधा भाग थ्रेड परीक्षण यह इसके साथ ओवरलैप करता है। थ्रेड टेस्टिंग यह जांचती है कि क्या एक व्यावसायिक मार्ग एकीकरण के बाद भी बना रहता है; कॉन्करेंसी टेस्टिंग यह जांचती है कि एक बार वह मार्ग काम करने लगे तो एक साथ एक्सेस करने से क्या होता है।

संख्या को अनुमानित अधिकतम उपयोग से प्राप्त करें, न कि किसी गोल आंकड़े से। तर्क की पूर्णता साबित करने के लिए दो सत्रों से शुरुआत करें, फिर मापे गए अधिकतम उपयोग और उससे कुछ अधिक उपयोग की ओर बढ़ें।

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

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

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

साफ़ डेटा स्थिति से समान परिदृश्य को कई बार दोहराएँ, समय-चिह्नित लॉग रखें और दो परस्पर विरोधी क्रियाओं के बीच के अंतराल को कम करें। डिबगर संलग्न करने से अक्सर समय में बदलाव होने के कारण त्रुटि छिप जाती है।

हां, वॉल्यूम-संवेदनशील टकराव के लिए। छोटी टेबल डेटाबेस को सब कुछ मेमोरी में रखने और थोड़े समय के लिए लॉक करने देती हैं, इसलिए प्रोडक्शन में दिखाई देने वाली ब्लॉकिंग अदृश्य रहती है। पंक्तियों की संख्या और इंडेक्स के आकार को वातावरण के अनुसार यथासंभव सटीक रूप से मिलाएं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: