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

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

थ्रेड टेस्टिंग एक एकीकृत सिस्टम के माध्यम से आगे बढ़ते समय एक ही व्यावसायिक कार्य की प्रमुख कार्यात्मक क्षमता को सत्यापित करती है, और यह प्रत्येक घटक के पूरा होने के बाद के बजाय एकीकरण परीक्षण में शुरुआत में ही चलती है।

  • 🧵 मूल विचार: एक थ्रेड एक संपूर्ण व्यावसायिक लेनदेन होता है, और परीक्षण एकीकृत मॉड्यूल में उस पथ का अनुसरण करता है।
  • जब यह चलता है: एकीकरण परीक्षण के प्रारंभिक चरण में, एक क्रमिक प्रणाली एकीकरण रणनीति के रूप में।
  • 🔀 दो फ्लेवर: सिंगल थ्रेड टेस्टिंग एक समय में एक ही ट्रांजैक्शन पर काम करती है, जबकि मल्टी-थ्रेड टेस्टिंग कई ट्रांजैक्शन को एक साथ चलाती है।
  • 🐞 यह क्या पकड़ता है: रेस कंडीशन, डेडलॉक, साझा-संसाधन संघर्ष और डेटा भ्रष्टाचार जैसी समस्याएं, जिन्हें सिंगल-पाथ टेस्टिंग नहीं पकड़ पाती है।
  • 🧰 इसे कैसे चलाएं: विभिन्न प्रकार के अनुप्रयोगों, कई उदाहरणों, अलग-अलग हार्डवेयर और कोड निरीक्षण के साथ बार-बार परीक्षण करें।
  • 📉 ईमानदार सीमा: मल्टीथ्रेडेड कोड के लिए प्रतिलिपि योग्य यूनिट परीक्षण करना अभी भी मुश्किल है, इसलिए समय संबंधी दोष रुक-रुक कर हो सकते हैं।

सिंगल और मल्टी-थ्रेड प्रकारों के साथ सॉफ्टवेयर टेस्टिंग में थ्रेड टेस्टिंग क्या है?

थ्रेड परीक्षण क्या है?

थ्रेड परीक्षण यह एक प्रकार का सॉफ्टवेयर परीक्षण है जो किसी विशिष्ट कार्य (जिसे थ्रेड कहा जाता है) की प्रमुख कार्यात्मक क्षमता को सत्यापित करता है। यह आमतौर पर परीक्षण के प्रारंभिक चरण में किया जाता है। एकीकरण जांच चरण। थ्रेड-आधारित परीक्षण सिस्टम एकीकरण परीक्षण के दौरान अपनाई जाने वाली वृद्धिशील रणनीतियों में से एक है। इसी कारण से, थ्रेड परीक्षण को अधिक सटीक रूप से एक के रूप में वर्णित किया जाता है। थ्रेड इंटरैक्शन परीक्षण.

यहां थ्रेड का मतलब केवल ऑपरेटिंग सिस्टम थ्रेड नहीं है। सॉफ्टवेयर इंजीनियरिंग शब्दों में कहें तो, एक थ्रेड एक संपूर्ण व्यावसायिक लेनदेन है — उदाहरण के लिए, "ग्राहक ऑर्डर देता है" — tracयह प्रत्येक मॉड्यूल से होकर गुजरता है। थ्रेड टेस्टिंग यह जांच करती है कि मॉड्यूल को आपस में जोड़ने के बाद भी वह एकल पथ सही ढंग से काम करता है या नहीं।

नीचे दिया गया आरेख दर्शाता है कि संपूर्ण प्रणाली को संयोजित करने से पहले व्यक्तिगत धागों को एक उपप्रणाली के रूप में कैसे एकीकृत और उपयोग में लाया जाता है।

थ्रेड टेस्टिंग आरेख, जिसमें थ्रेड्स को धीरे-धीरे एक सबसिस्टम और फिर एक पूर्ण सिस्टम में एकीकृत किया गया है।

थ्रेड परीक्षण के प्रकार

थ्रेड-आधारित परीक्षण को दो श्रेणियों में वर्गीकृत किया गया है, और यह अंतर परीक्षण डेटा और उन दोषों को निर्धारित करता है जिन्हें आप खोजने की संभावना रखते हैं।

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

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

थ्रेड परीक्षण कैसे करें

थ्रेड प्रक्रिया संपूर्ण विकास चक्र के बजाय एकीकरण गतिविधियों पर केंद्रित होती है। व्यवहार में, यह दृष्टिकोण इस प्रकार कार्य करता है।

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

क्योंकि कार्य की इकाई एक घटक के बजाय एक व्यावसायिक पथ है, इसलिए थ्रेड परीक्षण स्वाभाविक रूप से बीच में आता है। मॉड्यूल परीक्षण और पूर्ण प्रणाली परीक्षण.

मल्टीथ्रेड परीक्षण के लिए सुझाव

मल्टीथ्रेडेड दोष समय पर निर्भर करते हैं, इसलिए एक बार बिना किसी समस्या के चलने से इनका पता लगाना बहुत मुश्किल होता है। नीचे दिए गए सुझाव इन्हें पहचानने की संभावना को बढ़ाते हैं।

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

थ्रेड टेस्टिंग के दौरान पाए जाने वाले सामान्य दोष

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

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

इनमें से प्रत्येक के लिए लॉग में असफल रन को कैप्चर करना आवश्यक है, क्योंकि पचास प्रयासों में एक बार उत्पन्न होने वाले दोष को अन्यथा उठाना असंभव है। दोष प्रबंधन प्रक्रिया.

थ्रेड टेस्टिंग बनाम कॉन्करेंसी टेस्टिंग बनाम इंटीग्रेशन टेस्टिंग

ये तीनों शब्द एक दूसरे से मिलते-जुलते हैं और अक्सर परीक्षण योजनाओं में इन्हें आपस में मिला दिया जाता है। तालिका इन्हें उद्देश्य के आधार पर अलग करती है।

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

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

थ्रेड टेस्टिंग के लाभ

कई व्यावहारिक कारणों से यह तकनीक एकीकरण योजना में अपना स्थान अर्जित करती है।

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

थ्रेड परीक्षण के नुकसान

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

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

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

यह व्यावसायिक पथ, पार किए गए मॉड्यूल, उनके बीच आदान-प्रदान किए गए डेटा और अपेक्षित अंतिम स्थिति को रिकॉर्ड करता है। एक घटक के विपरीत परीक्षण का मामलापास होने की शर्त पूरे लेनदेन के अंत में आती है।

कॉन्फ़िगर करने योग्य वर्चुअल उपयोगकर्ताओं को उत्पन्न करने वाले लोड जनरेटर आमतौर पर पसंदीदा विकल्प होते हैं। JMeter यह एक सामान्य ओपन-सोर्स विकल्प है। थ्रेड काउंट, रैंप-अप और लूप सेटिंग्स सीधे मल्टी-थ्रेड परिदृश्यों पर लागू होती हैं।

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

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

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

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

हाँ— थ्रेड मॉड्यूल के बजाय सेवाओं के बीच एक अनुरोध पथ बन जाता है। वितरित tracing स्थानीय कॉल स्टैक को प्रतिस्थापित करता है, और वही प्रश्न लागू होता है: क्या एक व्यावसायिक लेनदेन प्रत्येक हॉप में अक्षुण्ण बना रहता है?

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