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

