क्या कभी किसी फीचर का परीक्षण नहीं करना ठीक है?


12

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

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

इसके अलावा, मान लेते हैं कि सब कुछ बैक-अप है, इसलिए, बुरी से बुरी हालत, डेटा जाने सकता है कुछ प्रयास के साथ बहाल किया।

क्या कोई इसे संबोधित करने के लिए विशिष्ट, विशेषज्ञ अनुभव का हवाला दे सकता है? कृपया उपयुक्त / संभव जहाँ संदर्भ शामिल करें।

जवाबों:


10

मैं सब कुछ मैं SQL सर्वर कह कर शुरू करना चाहता हूँ, इसलिए वे उदाहरण हैं जो मैं देता हूं। सामान्य तौर पर यह प्रणाली की परवाह किए बिना किसी भी रूप में लागू होता है।

इसे थोड़ा नीचे तोड़कर शुरू करते हैं।

उन्नयन

आपके पास एक सिस्टम है और कुछ या सभी को अपग्रेड करने वाला है। उदाहरण के लिए SQL Server 2012 से 2014 तक एक इंस्टेंस को अपग्रेड करना। इस बिंदु पर परीक्षण आवश्यक है। दुर्भाग्य से एक छोटे से अनुप्रयोग के हर हिस्से का परीक्षण करना संभव नहीं है। उस समय मैं वह करूंगा जो मैं "वर्किंग" टेस्ट कहूंगा। बुनियादी व्यवस्था काम कर रही है। अपने सामान्य कार्यों के माध्यम से समाप्त करना शुरू करें। हर विकल्प का परीक्षण न करें, बस मुख्य पथ।

SQL सर्वर अपग्रेड करते समय कुछ आवश्यक रीडिंग भी होती है । मूल रूप से आप Backward Compatibilityनए संस्करण के लिए प्रविष्टि ( यहां 2014 एक है ) पढ़ना चाहते हैं और सुनिश्चित करें कि आपके पास किसी भी सूची में कुछ भी नहीं है (परिवर्तन, व्यवहार परिवर्तन आदि को तोड़ना)।

आवेदन कोड

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

चीजों में से एक है कि वास्तव में इस के साथ मदद कर सकता है का एक सेट उत्पन्न करने के unit testsलिए आसानी से दोहराने योग्य हैं। स्टीव जोन्स अपने TSQL कोड (SQL सर्वर केवल मुझे डर है) के परीक्षण के लिए tSQLt का उपयोग करने की सिफारिश करता है । लेकिन ऐसा करने से आप परीक्षणों के निश्चित सेट के माध्यम से जल्दी से चल सकते हैं और यह वास्तव में प्रतिगमन परीक्षण (सब कुछ परीक्षण करना, अपग्रेड करने से पहले कहना) में सहायता करेगा।

सुविधाएँ / विन्यास

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

तदर्थ प्रश्न जो उपयोगकर्ता डेटा को संदर्भित / प्रभावित करते हैं

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

उदाहरण के लिए आपको हर तिमाही AdList तालिका से एक या अधिक विज्ञापन हटाने की आवश्यकता है।

DELETE FROM AdList WHERE AdName IN ('January 2015 Ads','February 2015 Ads','March 2015 Ads')

उस बिंदु पर आपने पहले ही कोड का परीक्षण कर लिया है (आप बस निश्चित स्ट्रिंग्स बदल रहे हैं) और कोड चलाने के लिए संभवतः काफी सुरक्षित हैं (यह मानते हुए कि आपके पास बस मामले में अच्छा बैकअप है)।

एक परीक्षण करने का एक आसान तरीका है DELETE, UPDATEया INSERTउन्हें एक SELECT में बदलना और उन्हें चलाना है, फिर पुष्टि करें कि आपके द्वारा अपेक्षित पंक्तियों की संख्या और प्रकार वापस आ गए हैं।

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

तदर्थ क्वेरीज़ जो सिस्टम डेटा को संदर्भित / प्रभावित करती हैं

यह संभवतः "सब कुछ परीक्षण" नियम का एक अपवाद है। आप सिस्टम डेटा पर सूचना प्रश्न चला रहे हैं। यहां महत्वपूर्ण बात यह है कि आपको अपेक्षित डेटा वापस मिल जाएगा। यदि क्वेरी कुछ सरल है (सिस्टम दृश्य को क्वेरी कर रहा है) तो आप शायद तब तक ठीक हैं जब तक आपने चेक किया है कि दृश्य / कॉलम वास्तव में क्या मतलब है। यदि क्वेरी जटिल है (कहे गए कॉलम पर गणना के साथ 3 या 4 सिस्टम व्यू मारना), तो आप यह सुनिश्चित करने के लिए कुछ परीक्षण चलाना चाह सकते हैं कि आपको वह डेटा वापस मिलने वाला है जिसकी आप अपेक्षा करते हैं।

सारांश

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

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


4

मुझे पता है कि आप क्या महसूस करते हैं, मेरे पास MySQL के साथ काम करने में 3 साल हैं, और मेरे मामले में मैं हमेशा डीएमएल प्रश्नों का परीक्षण करता हूं जो हर तालिका / डेटाबेस / दास-प्रतिकृति पर किसी भी जानकारी को संशोधित या तोड़ सकते हैं।

इसे चलाने से पहले अपनी क्वेरी का परीक्षण करना हमेशा सबसे सुरक्षित तरीका है।

यह जानने का कोई तरीका नहीं है कि आपकी क्वेरी आपकी डेटा जानकारी को जोखिम में डाल सकती है या नहीं। एकमात्र तरीका आपके डेटाबेस संरचना और कॉन्फ़िगरेशन को जान रहा है, इसलिए आप आसानी से पहचान सकते हैं कि कोई क्वेरी आपके संवेदनशील डेटा को जोखिम में डाल सकती है या नहीं।

पर DELETE, UPDATE, INSERT, आप हमेशा उपयोग करने के लिए प्रयास करना चाहिए SELECTपहले यदि आप सुनिश्चित क्या जानकारी है कि आप को बदलने के लिए जा रहे हैं नहीं कर रहे हैं। चयनों पर, हमेशा शर्तों के लिए उसी डेटा प्रकार का उपयोग करने का प्रयास करें जैसे कॉलम डेटाटाइप है, कुछ मामलों में EXPLAINअनुकूलन के लिए उपयोग किया जाता है।

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