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


33

मैं अपने BE (CS) पर काम करने वाला छात्र हूं और मेरा प्रश्न निम्नलिखित है:

  1. क्या सॉफ्टवेयर क्षेत्र में परीक्षण की आवश्यकता है?
  2. यदि हम बहुत सावधानी से एक सॉफ्टवेयर बनाते हैं, तो हमें परीक्षण क्यों करना चाहिए?
  3. परीक्षण करने के बाद क्या हम यह सुनिश्चित कर सकते हैं कि हमने यह लक्ष्य प्राप्त कर लिया है (उत्पाद / सॉफ्टवेयर इरादा के अनुसार काम करता है) क्योंकि हमने इसके लिए परीक्षण किया है? क्या यह संभव है?

मेरा प्रश्न: क्या सॉफ्टवेयर के परीक्षण की आवश्यकता है ?


34
If we create a software with care in during its development period then why should we go for Test?- क्योंकि कोई बात नहीं, यहां तक ​​कि सबसे कुशल प्रोग्रामर भी गलतियां करता है।
सुखबीर

6
@ सैंटो अपने एक भारतीय स्कूल से अत्यधिक संभावना है? मैं इसे बुरी तरह से मतलब नहीं है, मैं सिर्फ यहाँ नीचे के साथ अपनी पृष्ठभूमि का एक विचार हो सकता है ....
944 के लिए गिदोन

7
सॉफ़्टवेयर परीक्षण केवल तभी आवश्यक है जब आप शुद्धता का औपचारिक प्रमाण देने में विफल हों :-)
rsp

13
@jwenting: आप अपने भविष्य में सीखेंगे कि बोली जाने वाली भाषा प्रोग्रामिंग कौशल के साथ अच्छी तरह से संबंध नहीं रखती है। क्योंकि एक गैर देशी अंग्रेजी बोलने वाला अंग्रेजी नहीं बोल सकता इसका मतलब यह नहीं है कि वह प्रोग्राम नहीं कर सकता। मुझे यह समुदाय के लिए अपमानजनक लगता है कि आप किसी ऐसे व्यक्ति को छुरा लेने के लिए तैयार हैं जो मार्गदर्शन की तलाश में है।
क्रिस

10
बिलकूल नही। प्रार्थना भी उतनी ही अच्छी है।
21

जवाबों:


79

हाँ। क्योंकि आप कितने भी अच्छे क्यों न हों, आप सब कुछ नहीं सोच सकते।

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

+1 आप बहुत अच्छे वास्तविक दुनिया अंक बनाते हैं !! काश मैं डबल वोट कर पाता!
गिदोन

8
+1 के लिए "आपके पास कभी भी आवश्यकताएं नहीं होंगी जो इतनी स्पष्ट हैं कि आप यह सुनिश्चित करने के लिए हर संभावना के बारे में सोच पाएंगे कि कोड नहीं टूटता है।" मेरा कार्यस्थल अधिकांश की तुलना में बहुत कम खराब है, और हमारी उत्पाद प्रबंधन टीम बहुत अच्छी आवश्यकताओं को लिखती है। मैं अभी भी अक्सर "इस मामले के बारे में क्या?" इससे पहले कि मैं एक सुविधा समाप्त हो जाए सवाल। और फिर क्यूए और कभी-कभी अंत-उपयोगकर्ता अभी भी कोने के मामलों में बग ढूंढते हैं जो किसी ने नहीं माना।
मेसन व्हीलर

1
बिंदु # 3 के लिए +1। कंपाइलर, ओएस लाइब्रेरी, तीसरे पक्ष के घटक - जब तक आप धातु पर सही नहीं लिख रहे हैं, आप हमेशा अपने नियंत्रण से परे कोड के आधार पर हवा करेंगे।
TMN

78

हाँ

उसी कारण से कि एक महाराज खाना बनाते समय उसका स्वाद चख लेता है।


7
यहां तक ​​कि स्वामी को यह नहीं मानना ​​चाहिए कि उनके काम को सुधार की आवश्यकता नहीं है।
गाब्लिन

26
पतले महाराज द्वारा पकाया गया व्यंजन कभी न खाएं
JBRWilkinson

5
@JBRWilkinson: एक पतली शेफ एक बेहतर शेफ हो सकती है अगर उसे अपने व्यंजन अधिक बार मिलते हैं और इसलिए वह अपने भोजन का स्वाद हर बार नहीं लेती, एक 'मोटे' शेफ की तुलना में जिसे हर समय अपने भोजन का स्वाद चखना पड़ता है। : पी
काइरोक्स

8
@ गैब्लिन - आप कह सकते हैं कि स्वामी जानते हैं कि उनके काम में सुधार की आवश्यकता है।
दान रे

18

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

अभाव की उचित परीक्षण मारता है

इसलिए जब तक आप GOD या कुछ पूर्ण संस्करण के सभी संस्करण नहीं जानते हैं (अब मैं इसे देखना चाहता हूं) या जब तक आप सक्रिय रूप से बहुत तेजी से निकाल नहीं चाहते हैं मैं दृढ़ता से आपको परीक्षण शुरू करने का सुझाव देता हूं।


थेरैक -25 वास्तव में एक अच्छा उदाहरण नहीं है क्योंकि परीक्षण में इसे उजागर करने के लिए भयानक रूप से कठिन था।
लोरेन Pechtel

4
यहां तक ​​कि "ईश्वर" कुछ परीक्षकों का इस्तेमाल कर सकता था (हालांकि मुझे लगता है कि वह "डिजाइन द्वारा" के रूप में सभी बगों को हल करता है): P
Tester101

1
@Newtoplan, माना जाता है कि आपके बॉस?

2
@ थोरबॉर्न: मैंने उसे बताया था लेकिन वे (सामान्य रूप से प्रबंधन) को भी सही स्थिति का एहसास नहीं है। वास्तव में वे उसे प्रोग्रामिंग के भगवान के रूप में मानते हैं और टीम के बाकी सदस्यों को दोष देते हैं और बग को ठीक नहीं करते हैं जैसे कि उन्हें करने के लिए काम पर रखा गया था। परिवर्तनों को 2 साल तक लग सकते हैं, फिर से प्रबंधन को लगता है कि यह 750k लोक कोड बेस के साथ सामान्य है (वास्तव में वे इसे 1.5 मी पर मापते हैं लेकिन इसका आधा हिस्सा टिप्पणी है) (क्षमा करें मुझे नहीं पता कि स्लैश ओ को ठीक से कैसे प्राप्त किया जाए :-( )
न्यूटोपियन २२'११

1
एरियन -5 और लंदन एम्बुलेंस सेवा कंप्यूटर एडेड डिस्पैच का उल्लेख नहीं करना है: lond.ambulance.freeuk.com/cad.html
StuperUser

9

सॉफ्टवेयर लोगों द्वारा लिखे गए हैं।

लोग अपूर्ण हैं और गलतियाँ करते हैं।

जैसा कि किसी उपक्रम की जटिलता बढ़ती है, गलतियों, ओवरसाइट्स, या भूल गई चीजों की संभावित संख्या (और प्रभाव) ऊपर जाती है - आमतौर पर घातीय रूप से।

तो हाँ, परीक्षण की आवश्यकता है। यह संतुलन और परिप्रेक्ष्य लाता है।


6

क्या आप एक ऐसी उड़ान भरेंगे, जो आपके द्वारा अपने लैपटॉप पर उपयोग किए गए OS को चलाए और आपको आपके पसंदीदा रंग में मौत की स्क्रीन दे दे? इसके बारे में सोचो।

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

Google पर सबसे प्रसिद्ध सॉफ़्टवेयर बग्स पर एक खोज करें, यह जानने के लिए कि मेरा क्या मतलब है।

और कॉलेज स्तर पर, परीक्षण-संचालित विकास, इकाई परीक्षण और चुस्त प्रथाओं पर कुछ पढ़ने के लिए जानें, जहां चीजें अभी हैं।


धन्यवाद। जैसा कि आपने उल्लेख किया है, क्या आप मुझे इकाई परीक्षण, चुस्त अभ्यास सीखने के लिए कुछ संसाधन कह सकते हैं!
चींटी

1
मैं निश्चित रूप से "सही नहीं" की सदस्यता लेता हूं, मुझे C ++ का बहुत ही उचित ज्ञान है और इसके कई रहस्यमय नियम हैं ... और फिर भी मैं बूलियन स्थितियों को उलट कर फिर से गड़बड़ करता हूं: / परीक्षण आवश्यक है , सोचा क्योंकि कुछ परीक्षण करता है इसका मतलब यह नहीं है (सब पर) कि यह काम करता है;)
मथ्यू एम।

4

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

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


4

एरेरे ह्यूमनम एस्ट

बग-फ्री सॉफ्टवेयर जैसी कोई चीज नहीं है।

सबसे कुशल डेवलपर बग के साथ कोड लिखता है। यहां तक ​​कि अगर एक पूर्ण डेवलपर मौजूद था, तब भी बीच की विसंगतियों के कारण कीड़े होंगे:

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

संपूर्ण विकासकर्ता संपूर्ण चीज़ का एक हिस्सा है। और सही डेवलपर्स मौजूद नहीं है।


आप एक अच्छा ज्ञान दिखाते हैं कि सॉफ्टवेयर कैसे विफल हो जाता है। लेकिन सॉफ्टवेयर विफल होने का अंतिम कारण मानव गलतियां नहीं है। बल्कि यह है क्योंकि त्रुटि-मुक्त सॉफ़्टवेयर सिस्टम बनाने के लिए कोई सिद्ध पद्धति मौजूद नहीं है। इस बारे में बाद में लिखूंगा।
CuongHuyTo 8'14

@CuongHuyTo - क्या आपके पास औपचारिक तरीके हैं?
मौविइल

3

वास्तविक जीवन के अधिकांश कार्यक्रम:

a) कोड की सैकड़ों लाइनें या अधिक, कई फाइलों में बिखरी हुई हैं;
बी) एक से अधिक प्रोग्रामर द्वारा विकसित किए जाते हैं;
c) उन वातावरणों में उपयोग किया जाता है जो डेवलपर के वातावरण से भिन्न होते हैं

इस प्रकार यदि आप यह जाँच नहीं करेंगे कि कार्यक्रम वास्तविक जीवन की स्थिति में कैसे काम करता है, तो यह मौका कि यह बिल्कुल भी काम नहीं करेगा 100% के करीब होगा।


3

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


3

हाँ।

यहाँ एक और थोड़ा सूक्ष्म परिप्रेक्ष्य है जिसे अभी तक कवर नहीं किया गया है:

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

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

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


2

क्या अभी तक छुआ नहीं गया है: भले ही आपका कोड एकदम सही हो, फिर भी आप सुरक्षित नहीं हैं। संकलक में बग होते हैं जो संकलन के बाद भी गलत व्यवहार करने के लिए सही कोड का कारण बन सकते हैं। ऑपरेटिंग सिस्टम में बग होते हैं जो एक सही बाइनरी का कारण बन सकते हैं जब गलत तरीके से चलाया जाता है। हार्डवेयर में बग होते हैं जो समस्याएं पैदा कर सकते हैं।

यही कारण है कि एक मशीन पर परीक्षण वाणिज्यिक उत्पादों के लिए पर्याप्त नहीं है। उन्हें हार्डवेयर और सॉफ्टवेयर के कई संभावित संयोजनों के तहत परीक्षण करने की आवश्यकता होती है, जो संभव है कि वे जंगली में मुठभेड़ कर सकें।


2

अंतरिक्ष शटल के लिए सॉफ्टवेयर लिखने वाली टीम के नेता ने हर लॉन्च से पहले यह संकेत देने के लिए उड़ान भरी कि सॉफ्टवेयर शटल को नुकसान नहीं पहुंचाएगा।

आपको क्या लगता है कि उसने ऐसा करने का आत्मविश्वास दिया है?


1

आप लगातार संकलन करके और उसका उपयोग करके कोड का परीक्षण कर रहे हैं। कुछ IDE में आपको टाइप करते हुए ही संन्यास की जाँच हो रही है। जब तक आप वास्तव में अपना कोड नहीं चलाते हैं, आप परीक्षण कर रहे हैं।

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


1

एक होमवर्क प्रश्न की तरह खुशबू आ रही है।

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

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

यदि हम बहुत सावधानी से एक सॉफ्टवेयर बनाते हैं, तो हमें परीक्षण क्यों करना चाहिए?

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

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

परीक्षण करने के बाद क्या हम यह सुनिश्चित कर सकते हैं कि हमने यह लक्ष्य प्राप्त कर लिया है (उत्पाद / सॉफ्टवेयर इरादा के अनुसार काम करता है) क्योंकि हमने इसके लिए परीक्षण किया है? क्या यह संभव है?

नहीं, 100% तक नहीं। हम किसी भी लेकिन सरलतम कोड में इनपुट या निष्पादन के रास्तों के हर बोधगम्य संयोजन का परीक्षण नहीं कर सकते हैं। हम सभी पर्यावरणीय कारकों का हिसाब नहीं दे सकते। हम सभी संभावित विफलता मोड की कल्पना नहीं कर सकते।

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

वास्तविक दुनिया का परिदृश्य - मैं एक बैक-एंड सिस्टम पर काम कर रहा था जो कभी-कभी स्क्रीन पर एक तालिका में प्रदर्शन के लिए GUI सेवा को अपडेट भेजता है। प्रोजेक्ट के दौरान, फ़िल्टरिंग को डिस्प्ले में जोड़ने के लिए एक आवश्यकता जोड़ी गई थी (उदाहरण के लिए, ऑपरेटर तालिका में प्रविष्टियों का सबसेट प्रदर्शित कर सकता है)। डिजाइन गलती # 1 - फ़िल्टरिंग जीयूआई सेवा द्वारा किया जाना चाहिए था (मेरे पास यह विचित्र, पुरातन धारणा है कि प्रदर्शन प्रबंधन कार्य प्रदर्शन प्रबंधन सॉफ्टवेयर की जिम्मेदारी होनी चाहिए), लेकिन राजनीति और मेरी असमर्थता के कारण समस्याओं को पहचानने से पहले समस्याओं , कि आवश्यकता बैक-एंड सेवा पर रखी गई थी। खैर, ठीक है, कोई बात नहीं, मैं ऐसा कर सकता हूं। फ़िल्टर स्थिति में परिवर्तन होता है, मुझे एक संदेश मिलता है, और फिर मैं एक संदेश बनाता हूं या हटाता हूंतालिका में प्रत्येक पंक्ति , क्योंकि यह है कि इंटरफ़ेस कैसे काम करता है (डिजाइन गलती # 2 - एक संदेश में कई पंक्तियों में अपडेट भेजने का कोई तरीका नहीं है; हम एक "स्पष्ट" या "हटाएं" संदेश भी साफ नहीं कर सकते हैं पूरी मेज)।

खैर, विकास के दौरान कुछ भी ठीक काम करता है; यूनिट, सिस्टम और इंटीग्रेशन टेस्टिंग से पता चलता है कि मैं सही जानकारी भेजता हूँ और फ़िल्टर परिवर्तनों को सही ढंग से संभालता हूँ। तब हमें प्रयोज्य परीक्षण करने के लिए मिलता है, और पूरी चीज मुश्किल से गिरती है , क्योंकि डेटा की मात्रा भारी थी। मेरी बैकएंड सेवा और GUI के बीच नेटवर्क विलंबता .15 से .25 सेकंड के आदेश पर थी। बुरा नहीं यदि आपको केवल एक दर्जन पंक्तियों के लिए अपडेट भेजना है। घातक जब आपको कई सौ के लिए अपडेट भेजना होता है। हमें बग रिपोर्टें मिलनी शुरू हो गईं कि फ़िल्टर राज्य बदलने के बाद GUI फ्रीज हो गया; अच्छा, नहीं, जो हो रहा था वह कई मिनटों के क्रम पर हो रहा था प्रदर्शन को अद्यतन करने के लिए क्योंकि हड्डी-आधारित अपडेट-वन-रो-ए-इन-टाइम संदेश प्रोटोकॉल वास्तविक-विश्व परिदृश्य को संभाल नहीं सका।

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

जो हमें परीक्षण करने के लिए अंतिम कारण के लिए लाता है - CYA। वास्तविक दुनिया की परियोजनाएं कई कारणों से विफल होती हैं, उनमें से कई राजनीतिक हैं, और हर कोई अच्छे विश्वास में काम नहीं करता है जब चीजें गलत हो जाती हैं। उंगलियां उठाई जाती हैं, आरोप लगाए जाते हैं, और दिन के अंत में आपको एक रिकॉर्ड दिखाने में सक्षम होने की आवश्यकता होती है जो यह दर्शाता है कि कम से कम आपका सामान काम करता है जैसा कि यह माना जाता था।


0

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


0

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

1.) डिजाइन और उचित कार्यान्वयन के माध्यम से कई संभावित विफलताओं को समाप्त करें।) डिजाइन चरण से अप्रत्याशित विफलताओं को समाप्त करें और परीक्षण (इकाई, एकीकरण, यादृच्छिक) के विभिन्न रूपों के माध्यम से गलत कार्यान्वयन 3.) अतिरेक के माध्यम से किसी भी बचे हुए विफलताओं से निपटें ( लौकिक => पुनर्मिलन, पुनः प्रयास या स्थानिक => प्रतियाँ, समता रखें)

यदि आप परीक्षण चरण को समाप्त करते हैं, तो आप विफलताओं को संबोधित करने के लिए केवल डिजाइन और अतिरेक चरणों के साथ खुद को छोड़ देते हैं।

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


0

सभी कार्यक्रमों में बग होते हैं, कम से कम शुरू करने के लिए।

कुछ अध्ययन हुए हैं, जो बिना किसी कोड के प्रत्येक पांच लाइनों के बारे में 1 बग पर एकाग्र होते हैं।

एक इतिहास सबक:

1960 के दशक में वापस आईबीएम को एक "एनओपी" कार्यक्रम की आवश्यकता थी ताकि वे वास्तव में एक कार्यक्रम चलाने के बिना जेसीएल में कुछ कार्यक्षमता का निष्पादन कर सकें। डेवलपर्स एक लाइन कोडांतरक कार्यक्रम के साथ आए थे जिसमें पूरा कोड इसके नाम "IEFBR14" के भीतर निहित था, जो वास्तविक कोड है:

       BR 14 * brach to return address in register 14

अपने लंबे जीवनकाल के दौरान यह एक लाइन कार्यक्रम 2 बग रिपोर्ट और पांच संशोधनों के अधीन रहा है।


-1

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

जब आप TDD (परीक्षण संचालित विकास) के साथ विकास कर रहे होते हैं तो आपके पास अनावश्यक गेटटर / सेटर आदि नहीं होते हैं।


-1

आपके प्रश्न का # 3 उत्तर देने के लिए:

एक प्रोग्रामर और एक सॉफ्टवेयर टेस्टर रहा है, हाँ, आप यह सुनिश्चित कर सकते हैं कि आप परीक्षण के दौरान सॉफ़्टवेयर की आवश्यकताओं को पूरा कर रहे हैं।

{QA हैट लगाना}

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

{क्यूए टोपी बंद}

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


-1

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

लेकिन यह मामला नहीं है। +++++++++

गलतियाँ अक्सर होती हैं, उनमें से कुछ परियोजना के संचालन के लिए महत्वपूर्ण होती हैं। क्रॉस-ब्राउज़र टेस्टिंग भी है (जिसका अर्थ है अलग-अलग मौजूदा ब्राउज़रों जैसे SAFARI, FIREFOX, CHROME और इंटरनेट एक्सप्लोरर पर परीक्षण) और मैंने उस प्रोजेक्ट पर काम किया है जहाँ एक सर्वे विंडो पर YES और NO जैसे सरल इंटरफ़ेस बटन हैं जहाँ केवल सभी ब्राउज़र में काम नहीं किया जा रहा है उनमे से कुछ।

मैंने इंटरनेट पेज टेस्टिंग पर काम किया, और सरल पाठ चैनल का परीक्षण कर रहा था और अपने आप को लगा कि पृथ्वी पर इस सरल कार्य पर कोई भी दोष नहीं हो सकता है, लेकिन ऐसा नहीं होता है।

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


-3

हाँ

कल्पना करें कि आपका सॉफ़्टवेयर केवल एक तार्किक फ़ंक्शन है (b1, b2) जहां b1 और b2 केवल बिट्स हैं। इसके साथ ही आपको यह सुनिश्चित करने के लिए 4 परीक्षण मामलों की आवश्यकता है कि आपका सॉफ़्टवेयर त्रुटि मुक्त है, यदि आपका आसपास का वातावरण ठीक वैसा ही वितरित करता है जैसा वे निर्दिष्ट करते थे।

अब आपका सिस्टम बहुत सारे कार्यों से बना है जिसका सरलतम तरीका उस तार्किक कार्य की तुलना में अधिक जटिल है। आप यह कैसे सुनिश्चित करेंगे कि यह त्रुटि मुक्त है?

(करने के लिए जारी)


AND और विनिर्देश के अन्य भागों के कार्यान्वयन के आधार पर, आपको चार से अधिक परीक्षण मामलों की आवश्यकता हो सकती है: पर्यावरण के खिलाफ तनाव परीक्षण (तापमान, विकिरण ...), प्रदर्शन परीक्षण (जैसे, b1 और b2 की अधिकतम आवृत्ति) ... तार्किक डोमेन में भी, आप यह साबित करना चाह सकते हैं कि फ़ंक्शन हमेशा बी 1 और बी 2 के अनुक्रमों को सही परिणाम देता है (जैसे कि एक पीछे के दरवाजे की कल्पना करें जहां बी 1 पर एक विशिष्ट अनुक्रम और एक्सओआर में बदल जाता है)
म्यूविसिल

इस से पहले 21 जवाब पर पर्याप्त प्रस्ताव कुछ भी दिखाई नहीं देता है
कुटकी

@Moviciel: आप फिर से कुछ बहुत अच्छा बिंदु बनाते हैं, लेकिन यदि हार्डवेयर जिस पर आपका सॉफ़्टवेयर सिस्टम ठीक उसी तरह से चलता है, जो इसके लिए निर्दिष्ट किया गया था, तो आपको इस छोटे और () फ़ंक्शन के लिए तनाव परीक्षण करने की आवश्यकता नहीं है। मैं बाद में आपके प्रदर्शन परीक्षण की टिप्पणी पर लौटूंगा।
CuongHuyTo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.