2008-11-23 7 views
6

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

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

उत्तर

2

के बाद से पूर्व आवश्यकताएँ हैं तो thorougly मौजूदा इकाई परीक्षणों में इनकोडिंग, ऐसा लगता है कि उन्हें के लिए बदल रहा नई आवश्यकताओं के अनुरूप आपदा को आमंत्रित किया जाएगा।

कोई विशिष्ट कारण आप ऐसा क्यों सोचेंगे? मुझे कुछ डर लगता है या यह सिर्फ 'इसे काम करते समय तोड़ना नहीं है'

परिवर्तन होता है। इस मामले में, इसका मतलब अधिक कार्य-समय-धन है। यदि व्यापार में इसके साथ कोई समस्या नहीं है, न तो आपको (जब तक अनुसूची अमानवीय नहीं है)। कल्पना बदल गया है,

  • यकीन है कि काम कर रहे संस्करण में चेक किया गया है बनाते हैं।
  • चरण 1 दोहराएं बस सुनिश्चित करने के।
  • अपने परीक्षण सूट को स्कैन करें। उन लोगों को ढूंढें जिन्हें आपको बाहर निकालना है। उन लोगों को ढूंढें जिन्हें बदलने की जरूरत है। नए परीक्षण ढूंढें जिन्हें आपको समझने की आवश्यकता है। नोट्स लेने के लिए पेपर की एक खाली शीट का उपयोग करें
  • अब एक समय में एक परीक्षण आगे बढ़ें .. जब तक आप DRY/एक बार और केवल एक बार सिद्धांत का पालन नहीं कर रहे हैं, तो आपको जो भी बदलाव करना है, उसे एक ही स्थान पर होना चाहिए। यदि नहीं, तो आप पहले पुनर्संशोधित जाना चाहिए था .. लेकिन यह बहुत देर नहीं हुई है .. परिवर्तन
  • दोहराएँ पिछले चरण बनाने तक
5

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

दूसरी तरफ: acceptance-tests आवेदन-स्तर पर आवश्यकताओं के साथ सौदा। तो मुझे लगता है कि आप स्वीकृति-परीक्षणों के बारे में बात करते हैं।

मैं नई स्वीकृति-परीक्षण के रूप में नई आवश्यकताओं को जोड़ूंगा। लेकिन पुराने लोगों के लिए आपको उन्हें देखना होगा, वे बदली गई आवश्यकताओं से कैसे अमान्य हैं।

+0

एक स्वीकृति परीक्षण परिवर्तन 'कार्यान्वयन' के कार्यान्वयन के पीछे यूनिट परीक्षण परिवर्तनों की हिमस्खलन ला सकता है। मुझे लगता है कि ओपी क्या हो रहा है। – Gishu

+0

आम तौर पर बदलती आवश्यकताओं से आप अपने मॉड्यूल को अलग-अलग उपयोग कर सकते हैं और नई कार्यक्षमता या नए मॉड्यूल जोड़ सकते हैं। – Mnementh

4

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

2

संक्षेप में इस बात की पुष्टि करता है कि कोड की आवश्यकताओं

जब मैं Mnementh के जवाब से सहमत के अनुरूप है, इस, मेरे लिए, कुंजी टिप्पणी है परीक्षण में आवश्यकताओं अनुवाद करते हैं। यदि परीक्षण आवश्यकताओं के अनुवादित संस्करण हैं, तो यदि आवश्यकताओं में बदलाव आया है, तो परीक्षणों को बदलना चाहिए।

या वे किसी ऐसे चीज़ के लिए परीक्षण कर रहे हैं जो ग्राहक की आवश्यकताओं को पूरा नहीं करता है।

जैसा कि जॉन मेनार्ड केनेस ने कहा है, "जब तथ्यों में परिवर्तन होता है, तो मैं अपनी राय बदलता हूं। आप क्या करते हैं, महोदय?"

मुझे लगता है कि यहां एक समान स्थिति है। आपके तथ्यों को आपके लिए बदल दिया गया है

0

मेरे पास आपके प्रश्न, एक दार्शनिक और अन्य सामरिक दोनों के दो जवाब हैं।

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

मेरे अनुभव में, यदि आप उस बिंदु पर पहुंच गए हैं जहां आपके यूनिट परीक्षणों को बदलने के लिए बाधा है तो यह आपके परीक्षणों में तकनीकी ऋण है।

तो मेरा सामरिक सुझाव यह है कि आप अपनी आवश्यकताओं को बदलने का प्रयास करने से पहले आप परीक्षणों को दोबारा प्रतिक्रिया देते हैं। प्रत्येक परीक्षण में पास/असफल होने का एक अनूठा कारण होना चाहिए, और उसके बाहर का व्यवहार साझा कोड में होना चाहिए। इसका मतलब यह है कि किसी भी व्यवहार में बदलाव के लिए दो स्थानों पर परीक्षण बदलना होगा:

  1. परीक्षण है कि वास्तव में है कि व्यवहार की पुष्टि करता है
  2. स्थानों है कि व्यवहार साझा स्थिरता कोड में प्रयोग किया जाता है

आपको यह आलेख उपयोगी हो सकता है: Grow Your Harness Naturally। यह वास्तव में कार्यात्मक परीक्षण के लिए एक पुन: प्रयोज्य परीक्षण दोहन के बारे में था, लेकिन मुझे अपने यूनिट परीक्षणों में विचारों को बहुत उपयोगी लगता है।

1

किया यदि आपका इकाई परीक्षण अब मैच से पहले एक ही स्थान में कोड निकालने आवश्यकताएं तो उन्हें वहां नहीं होना चाहिए - आखिरकार - वे अब आपको बताते हैं कि आपका कोड उन आवश्यकताओं के अनुरूप है जो अब मौजूद नहीं हैं!

जब भी आप आवश्यकताओं में बदलाव आप परीक्षण है कि बदली हुई आवश्यकताओं का प्रतिनिधित्व बदल और सत्यापित करें कि परीक्षण अब असफल चाहिए (wheras पहले वे सब पारित कर दिया है, है ना;))

फिर अपने स्रोत कोड इतना बदल कि पुनर्लेखन परीक्षण अब पास हो जाते हैं।

संबंधित मुद्दे