क्या कोई भाषा अज्ञेय इकाई परीक्षण ढांचे हैं? [बन्द है]


11

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

क्या किसी को पता है कि क्या कोई TDD उपकरण है जिसका उपयोग पुराने कोड को पोर्ट करने के लिए किया जा सकता है? आदर्श रूप से आप निम्नलिखित कार्य कर सकते हैं:

  1. पुराने कोड के लिए भाषा अज्ञेय इकाई परीक्षण लिखें जो पास हो (या यदि आप बग ढूंढते हैं तो विफल!)।
  2. अपने अन्य कोड आधार पर यूनिट परीक्षण चलाएं जो विफल हो जाते हैं।
  3. अपनी नई भाषा में कोड लिखें, जो पुराने कोड को देखे बिना परीक्षण पास करता है।

विकल्प यह होगा कि चरण 1 को "भाषा 1 में यूनिट परीक्षण लिखें" और "पोर्ट यूनिट टेस्ट टू लैंग्वेज 2" ​​को विभाजित किया जाए, जिससे प्रयास की आवश्यकता काफी बढ़ जाती है और यह बताना मुश्किल हो जाता है कि क्या पुराने कोड बेस के बाद इसे बनाए रखा जाना बंद हो जाएगा? पोर्ट (यानी, आपको इस कोड आधार पर निरंतर एकीकरण का लाभ नहीं मिलता है)।

संपादित करें: यह StackOverflow पर इस प्रश्न पर ध्यान देने योग्य है ।


एक शुद्ध पाठ कमांड प्रोटोकॉल प्रदान करें, और फिर expectअपने परीक्षणों को लागू करने के लिए उपयोग करें।
एसके-लॉजिक

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

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

@ SK- तर्क स्पष्ट नहीं होने के लिए क्षमा करें। मैंने कहा "विरासत" क्योंकि पोर्टिंग आम तौर पर से किया जाता legacy language xहै fancy new language y। मैं यूनिक्स के बारे में कुछ भी बताने का प्रयास नहीं कर रहा था!
ब्रिंगरहैसॉ

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

जवाबों:


6

मुझे नहीं लगता कि एक अलग भाषा में इकाई परीक्षण लिखना संभव है।

हालाँकि, आप जो कर सकते हैं वह है एकीकरण / स्वीकृति / उपयोगकर्ता इंटरफ़ेस / whaterver_you_name_it परीक्षण लिखना जो बहुत उच्च स्तर का होगा और उस भाषा से बंधा नहीं होगा जिसके साथ आपका सॉफ़्टवेयर लिखा गया है।

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

बेशक, आपके पास एक समान कवरेज नहीं होगा जैसा कि आपके पास यूनिट स्तर के परीक्षण (जब तक बहुत समय खर्च नहीं होता है) के साथ होगा, लेकिन कम से कम, आपके पास एक परीक्षण हार्नेस होगा।


स्वचालित उच्च स्तरीय परीक्षणों के लिए +1। ये निश्चित रूप से उत्पादन के प्रयास के लायक होंगे।
ब्रिंगरहैसॉ

1
"मुझे नहीं लगता कि एक अलग भाषा में इकाई परीक्षण लिखना संभव है।" : काउंटर उदाहरण: .NET में, आप Visual Basic (या किसी भी अन्य .NET-सक्षम भाषा) में C # के यूनिट परीक्षण लिख सकते हैं। कुछ साल पहले, यह माइक्रोसॉफ्ट द्वारा एक सर्वश्रेष्ठ अभ्यास के रूप में भी प्रचारित किया गया था, क्योंकि यह दोनों कोड में बनाने के जोखिम को कम करता है और भाषा से संबंधित एक ही गलती का परीक्षण करता है (और विशेष रूप से प्रोग्रामर की रिश्तेदार गलतफहमी)। सहमत थे, एक PHP कोड का परीक्षण करने के लिए फोरट्रान में इकाई परीक्षण नहीं लिखेंगे।
आर्सेनी मूरज़ेंको

2

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

संभवतः .NET CLI, जैसे C #, F #, ASP.NET et al।

वीएम / सीएलआर के बाहर, हालांकि, यह अधिक कठिन है। सिद्धांत रूप में, एक इकाई परीक्षण और / या कोड को किसी अन्य भाषा में परीक्षण के तहत संकलित कर सकता है जैसे C (जैसा था और नई भाषाओं जैसे कि प्रारंभिक C ++ इत्यादि के साथ सामान्य है), लेकिन मैंने किसी को विशेष रूप से इसके साथ प्रयास करने के बारे में नहीं सुना है इकाई परीक्षण।


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

@ जेवीएम भाषाओं की नई नस्ल के प्रस्तावकों, ब्रिंगरहैस का दावा है कि जावा की तुलना में काफी कम और क्लीनर कोड के साथ विशिष्ट समस्याओं को तेजी से हल किया जा सकता है। स्काला के साथ मेरा सीमित अनुभव अब तक इसकी पुष्टि करता है।
पेटर तोर्क

ग्रूवी सिर्फ जावा के साथ भी व्याख्या करता है।
user281377

1

ऐसा ढांचा मौजूद नहीं है, क्योंकि इसे उस कोड की भाषा में लिखा जाना चाहिए जिसका उपयोग किया जाता है।

उदाहरण के लिए, c ++ कोड के परीक्षण के लिए एक रूपरेखा को c या c ++ में लिखा जाना चाहिए। C ++ में लिखी गई रूपरेखा का उपयोग करना, लेकिन अगर यह c ++ सुविधाओं का उपयोग करता है तो यह एसी कोड का परीक्षण करने वाला नहीं है।


1

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

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

फिर भी, उन मामलों में भी, मैंने कुछ गैर-नेटवर्क भागों का परीक्षण करने के लिए वास्तविक एप्लिकेशन में कुछ हाथ से लुढ़के परीक्षणों को इंजेक्ट किया।


0

भाषा अज्ञेय परीक्षण ढांचा सामान्य परीक्षण ढांचा है जो स्वीकार्यता परीक्षण (देखने के बिंदु) के लिए अनुकूल है और उस ढांचे में वृषण का प्रबंधन QA द्वारा किया जाता है।


2
इससे पहले किए गए 4 अंकों के बारे में कुछ भी बताने की जरूरत नहीं है और पहले 4 जवाबों में समझाया गया है
gnat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.