सॉफ्टवेयर टेस्टिंग – एक परिचय

 

सॉफ्टवेयर टेस्टिंग – एक परिचय (INTRO)

दुनिया में तकनीकी विकास के साथ-साथ और विशेष रूप से आईटी के क्षेत्र में भारत में व्यापार और रोज़गार दोनों की ही दृष्टी से बहुत विकास हुआ है| भारतीय युवाओं और व्यापार ने इस क्षेत्र में भारत को दुनिया में एक विशिष्ट पहचान दिलाई है| तेजी से विकास करती आईटी इंडस्ट्री ने बड़े स्तर पर सॉफ्टवेयर इंजीनियरों की मांग को तो बढ़ाया ही, लेकिन इसके साथ ही आईटी इंडस्ट्री ने विभिन्न विषयों/कार्यक्षेत्रों (subjects/domains) के कार्यबल (workforce) और विशेषज्ञों (experts) के लिए भी रोज़गार/ व्यापार के बेहतर अवसर उत्पन्न किये। सॉफ्टवेयर टेस्टिंग, एक ऐसा ही कार्यक्षेत्र है| अपनी शुरुआत में सॉफ्टवेयर डेवेलपमेंट के पीछे चलने वाला यह कार्यक्षेत्र अब टेस्ट-ड्रिवन-डेवेलपमेंट के रूप में विकसित हो चुका है| आईटी इंडस्ट्री के अलावा और कई क्षेत्रो में टेस्टिंग एक बहुत ही महत्वपूर्ण भूमिका निभा रही है|

NASSCOM की एक रिपोर्ट के अनुसार, दुनिया भर का सॉफ्टवेयर टेस्टिंग मार्केट जो कि वर्ष 2010 में लगभग 30 बिलियन डॉलर था, वह 2020 तक लगभग 50 बिलियन डॉलर का हो जाएगा। इस ग्रोथ से सबसे ज्यादा फायदा भारत को हो सकता है। वर्ष 2010 में भारत का सॉफ्टवेयर टेस्टिंग मार्केट जो लगभग 3.2 बिलियन डॉलर का था, उसके वर्ष 2020 तक लगभग 15 अरब डॉलर तक पहुंच जाने की उम्मीद है। इस आधार पर कहा जा सकता है कि आने वाले समय में सॉफ्टवेयर टेस्टिंग के कार्यक्षेत्र में रोज़गार/व्यापार उत्पन्न होनी की काफी संभावनाएं हैं| सॉफ्टवेयर टेस्टिंग स्वयं भी एक बहुत व्यावहारिक (practical) एवं रोज़गारोंमुखी (job-oriented) पद्धति है|

 

सॉफ्टवेयर टेस्टिंग क्या (WHAT) है?

एक सॉफ्टवेयर, कम्प्यूटर के लिए निर्देशों की एक श्रुंखला होती है, जिसे प्रोग्राम कहते हैं, जो किसी विशेष कार्य क्रियान्वित करने के लिए सॉफ्टवेयर डेवेलपर द्वारा तैयार किया जाता है| सॉफ्टवेयर दो प्रकार के हो सकते है, सिस्टम सॉफ्टवेयर (ऑपरेटिंग सिस्टम) और एल्प्लिकेशन सॉफ्टवेयर (बैकिंग सोफ्टवेयर, माइक्रोसोफ्ट वर्ड, आदि)|

सॉफ्टवेयर टेस्टिंग किसी प्रणाली (system) या उसके घटकों (components) का मूल्यांकन (evaluation) करने की प्रक्रिया है| इसका क्रियान्वयन यह जांच करने के उद्देश्य से किया जाता है कि सॉफ्टवेयर तय की गयी और बताई गयी आवश्यकताओं (requirements) के अनुसार है और उन्हें पूरा करता है या नहीं| इस प्रक्रिया के परिणामस्वरूप अपेक्षित, वास्तविक और इन दोनों में अंतर की जानकारी प्राप्त होती है| सॉफ्टवेयर टेस्टिंग को दूसरे अर्थों में समझें तो यह सॉफ्टवेयर डेवेलपमेंट के लिए बताई गयी विभिन्न आवश्यकताओं के सन्दर्भ में अपेक्षित (expected) और वास्तविक (actual) की बीच का अंतर, त्रुटियाँ (bug), आवश्यकताएं जिन्हें पूरा नहीं किया गया है, आदि की पहचान करने की एक क्रियान्वयन प्रक्रिया (Executing Process) है| सॉफ्टवेयर टेस्टिंग की प्रक्रिया के क्रियान्वयन से सॉफ्टवेयर को लगभग त्रुटी रहित (bug free) और तय आवश्यकताओं के अनुसार तैयार करने में सहायता मिलती है|

बग (त्रुटि)

सॉफ्टवेयर टेस्टिंग के दौरान पाया जाने वाले 1) अपेक्षित और वास्तविक आवश्यकताओं/परिणामों के बीच का अंतर, 2) सॉफ्टवेयर में गलतियाँ जिन्हें नहीं होना चाहिए था और 3) वे तय आवश्यकताएं जो सॉफ्टवेयर में नहीं पायी गईं, आदि सभी बग कहलाते हैं| एक सॉफ्टवेयर बग तब उत्पन्न होता है जब सॉफ्टवेयर अपेक्षित व्यवहार या कार्य नहीं करता है या सॉफ्टवेयर का व्यवहार या कार्य आवश्यकतानुसार नहीं होता है|

सॉफ्टवेयर बग के अनेक कारण हो सकते हैं, जैसे, डेवेलपर द्वारा लिखे गए सॉफ्टवेयर कोड का ठीक नहीं होना, आवश्यकताओं (requirements), विनिर्देश (specifications), प्रारूप (design) में त्रुटी या उसकी समझ में कमी या अन्य कारण| सॉफ्टवेयर डेवलपमेंट के शुरूआती चरणों में ही इस प्रकार के बग की पहचान करना और उन्हें ठीक करना किसी भी सोफ्टवेयर डेवेलपमेंट प्रोजेक्ट के लिए बहुत ही महत्वपूर्ण होता है| सॉफ्टवेयर टेस्टिंग के महत्त्व और सॉफ्टवेयर टेस्टर की बढ़ती हुई मांग का यह एक मुख्य कारण है|

 

सॉफ्टवेयर टेस्टिंग क्यों (WHY) की जाए?

सॉफ्टवेयर टेस्टिंग क्यों आवश्यक है इसे हम अपने दैनिक जीवन से समझाने का प्रयास करते हैं| हम सभी रोज़ कोई ना कोई गलती करते ही हैं या कुछ अवश्य भूल जाते हैं| हमारा यह व्यवहार हमारे कार्य के दौरान भी असर डालता और उसे प्रभावित करता है| हमारे द्वारा की गयी कुछ गलतियाँ/भूलें कम महत्वपूर्ण जबकी कुछ ज्यादा महत्वपूर्ण हो सकती हैं| कुछ का कोई नुकसान नहीं होता तो कुछ का अधिक नुकसान और कुछ किसी ना किसी रूप में बहुत घातक/नुकसानदायक भी हो सकती हैं| यही बात पूरी तरह से सॉफ्टवेयर डेवेलपमेंट के ऊपर भी लागू होती है| और जैसा कि हमने देखा है सॉफ्टवेयर में बग आने के अनेक कारण हो सकते हैं| इसलिए सॉफ्टवेयर टेस्टिंग आवश्यक हो जाती है| सॉफ्टवेयर टेस्टिंग कार्य की महत्ता और उपयोगिता के कुछ प्रमुख कारण हैं:

  • सॉफ्टवेयर प्रोजेक्ट में बग की पहचान करके प्रोजेक्ट उत्पाद (product) के बाज़ार में आने/क्लाईंट के पास जाने के पहले ही इन पहचाने गए बग्स को दूर करना|
  • सॉफ्टवेयर उत्पाद की गुणवत्ता (quality) को सुनिश्चित करना|
  • तय/निर्धारित/परिवर्तिती आवश्यकताओं के अनुसार सॉफ्टवेयर उत्पाद को सुनिश्चित कर ग्राहकों के विश्वास और उनकी संतुष्टी की संभावना को बढ़ाना|
  • सॉफ्टवेयर के अपेक्षित तकनीकी और कार्यात्मक (expected technical & functional) कार्य-सम्पादन (performance) को सुनिश्चित करना|
  • यह उपयोगकर्ता द्वारा सॉफ्टवेयर का आसानी से उपयोग किये जा सकने के लिए भी आवश्यक होती है|

 

सॉफ्टवेयर टेस्टिंग किसके (WHO) द्वारा की जाती है?

अब सवाल यह उठता है की इतने महत्वपूर्ण कार्य को किया किसके द्वारा जाता है|

किसी भी सॉफ्टवेयर की टेस्टिंग उस सॉफ्टवेयर प्रोजेक्ट से सम्बंधित स्टेकहोल्डर्स, प्रोजेक्ट का क्रियान्वयन करने वाले संगठन की प्रक्रियाओं के अनुरूप या परियोजना की विशिष्ट आवश्यकताओं के अनुसार किया जाता है| कई संगठनों में, विशेषकर बड़े/मझौले संगठनो में सॉफ्टवेयर टेस्टिंग कार्य के लिए पृथक विभाग या दल होते हैं| कई संगठनों का बिजनेस मॉडल ही सॉफ्टवेयर टेस्टिंग पर आधारित होता है|

सॉफ्टवेयर डेवेलपर भी अपने स्तर पर उनके द्वारा डेवेलप किये जाने वाले सॉफ्टवेयर की टेस्टिंग करते हैं| लेकिन यह उतना प्रभावी और सही नहीं होता है क्योंकि स्वयं के कार्य में गलतियां निकाल पाना उतना आसान नहीं होता है या खुद की समझ उसे सही ही मानती है| इसलिए सामान्य तौर पर सॉफ्टवेयर टेस्टिंग की टीम सॉफ्टवेयर डेवेलपमेंट टीम से अलग रहती है|  अलग-अलग संगठनों में उनकी संगठनात्मक संरचना और नीतियों के अनुसार सॉफ्टवेयर टेस्टर्स के भिन्न पद-नाम (designation) हो सकते हैं| आमतौर पर अपनी योग्यता, काबिलियत और अनुभव के आधार पर सॉफ्टवेयर टेस्टिंग कार्य के विभिन्न स्तरों पर निम्न सॉफ्टवेयर टेस्टिंग में शामिल रहते हैं:

  • सॉफ्टवेयर डेवेलपर,
  • सॉफ्टवेयर टेस्टर,
  • प्रोजेक्ट लीड/प्रोजेक्ट मेनेजर, और
  • एंड यूज़र (उपयोगकर्ता)

 

सॉफ्टवेयर टेस्टिंग के प्रकार (TYPES)

सॉफ्टवेर टेस्टिंग मुख्य रूप से दो प्रकार की होती है, मैनुअल टेस्टिंग और ऑटोमेटेड टेस्टिंग|

मैनुअल टेस्टिंग

मैनुअल टेस्टिंग के अंतर्गत, सॉफ्टवेर टेस्टर द्वारा टेस्ट केसेज़ को बिना किसी सॉफ्टवेर ऑटोमेशन के निष्पादित (execute) किया जाता है| यह बहुत मौलिक (primitive) प्रकार की टेस्टिंग होती है जिसमें सॉफ्टवेयर टेस्टर एक उपयोगकर्ता (end user) की भूमिका में, उसकी सोच और उसकी नज़रिए से टेस्टिंग करता है| सॉफ्टवेर में बग एवं अनपेक्षित कार्य/व्यवहार की पहचान करता है और उन्हें सूचित करता है| इसका अर्थ यह हुआ कि मैनुअल टेस्टिंग के लिए किसी भी प्रकार के सॉफ्टवेर टेस्टिंग टूल की आवश्यकता नहीं होती है|

मैनुअल टेस्टिंग का उद्देश्य बग्स की शीघ्रता से पहचान कर, उन्हें सूचित कर उनमें सुधार द्वारा लगभग त्रुटि-मुक्त (bug-free) सॉफ्टवेर सुनिश्चित करना होता है| इसके लिए टेस्ट-फेज़ के दौरान सॉफ्टवेयर की आवश्यकताओं के अनुसार टेस्ट प्लान, टेस्ट सिनारिओज़ और टेस्ट केसेज़ आदि तैयार किये जाते हैं ताकि 100% टेस्ट कवरेज द्वारा टेस्टिंग की पूर्णता को सुनिश्चित किया जा सके| इसमें पहचाने एवं सूचित किये गए बग्स के सुधार (fix) के पश्चात इनकी री-टेस्टिंग (पुन:-परिक्षण) की जाती है, ताकि यह टेस्ट किया जा सके कि बग्स में सही सुधार किया गया है और इन सुधारों के परिणामस्वरूप कोई अन्य बग उत्पन्न नहीं हुआ है|

आमतौर पर किसी भी नई सॉफ्टवेर एप्लीकेशन की शुरुआत में मैनुअल टेस्टिंग ही की जाती है| मैनुअल टेस्टिंग के मौलिक व साधारण रूप में होने के कारण इसे सॉफ्टवेर डेवेलपमेंट की शुरुआत के साथ-साथ ही आरम्भ करना आसान होता है और इसके साथ ही यह ऑटोमेशन फिजिबिलिटी (व्यवहार्यता) को समझाने, उसकी जांच करने के लिए भी आवश्यक होती है|

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

ऑटोमेटेड टेस्टिंग

इसे ऑटोमेशन टेस्टिंग या टेस्ट ऑटोमेशन भी कहा जाता है| इसमें टेस्ट कसेज़ टेस्ट ऑटोमेशन टूल्स द्वारा निष्पादित (execute) किये जाते हैं| टेस्ट किये जा रहे सॉफ्टवेयर से सम्बंधित टेस्ट डाटा भी इन ऑटोमेशन टूल्स द्वारा टेस्टिंग के लिए प्रयोग किया जा सकता है| ये टूल्स अपेक्षित और वास्तविक (expected & actual) परिणामों की तुलना कर एक विस्तृत रिपोर्ट भी उपलब्ध कराते हैं|

टेस्ट ऑटोमेशन का उद्देश्यों में मैनुअल टेस्टिंग के टेस्ट केसेज़ की संख्या को कम कर टेस्टिंग की गति को बढ़ाना, टेस्ट डाटा के उपयोग से संभावित मानवीय भूल की संभावना को कम करना भी होता है| हालांकि, ऑटोमेटेड टेस्टिंग द्वारा मैनुअल टेस्टिंग की आवश्यकता को समाप्त नहीं किया जा सकता है, यह टेस्टिंग का एक महत्वपूर्ण अंग है|

विभिन्न प्रकार के और विशिष्ट कार्य के अनुरूप ओपन-सोर्स और अन्य सॉफ्टवेर टेस्टिंग टूल्स उपलब्ध हैं और उपयोग किये जा रहे हैं|

 

सॉफ्टवेयर परीक्षक (TESTER)

सॉफ्टवेयर टेस्टर वे होते हैं जिनके द्वारा सॉफ्टवेयर प्रोग्राम का परिक्षण (test) किया जाता है|

सॉफ्टवेयर टेस्टर के कार्य:

सॉफ्टवेयर टेस्टर का एक मुख्य कार्य शीघ्रातिशीघ्र सॉफ्टवेयर में बग ढूँढना और उसे सूचित करना होता है| इसके अतिरिक्त भी सॉफ्टवेयर टेस्टर के कई कार्य होते हैं, जैसे, टेस्टिंग प्लान, टेस्टिंग रणनीति (strategy), टेस्टिंग सिनारियो (scenario), टेस्टिंग केस (case), टेस्टिंग विधि (procedure), टेस्टिंग डाटा (data) और टेस्टिंग स्क्रिप्ट (script), आदि तैयार करना| सॉफ्टवेयर टेस्टर क्रियान्वित किये जाने वाले प्रोजेक्ट में अपनी भूमिका (role) और जिम्मेदारियों (responsibilities) के अनुसार इन्हें तैयार करते हैं| साथ ही सॉफ्टवेयर टेस्टर टेस्ट केस, टेस्ट विधियों और टेस्ट स्क्रिप्ट को निष्पादित (execute) कर उनसे प्राप्त होने वाले परिणामों (वास्तविक परिणाम) को अपेक्षित परिणामों के साथ जांच करते हैं और उसके वास्तविक परिणाम, अपेक्षित परिणाम के अनुरूप ना होने पर इसे बग के रूप में तुरंत सूचित करते हैं|

सॉफ्टवेयर टेस्टर की उपयोगिता:

  • सॉफ्टवेयर टेस्टर की बहुत उपयोगिता होती है और सॉफ्टवेयर प्रोजेक्ट से जुड़े विभिन्न प्रकार के जोखिमों (risks) के बढ़ने के साथ ही सॉफ्टवेयर टेस्टर का महत्त्व काफी बढ़ता गया है| सॉफ्टवेयर टेस्टर की कुछ प्रमुख उपयोगिताएँ निम्नानुसार हैं:
  • सॉफ्टवेयर टेस्टर प्रोजेक्ट के शुरूआती चरणों में बग की पहचान करके प्रोजेक्ट की गति को बढाने में सहायक होते हैं| बग्स की शुरूआती चरणों में ही पहचान होने से प्रोजेक्ट कॉस्ट और प्रोजेक्ट टाईम दोनों में ही कमी लाई जा सकती है या यह प्रोजेक्ट को समय पर पूरा करने में सहायक होता है|
  • ये सॉफ्टवेयर की गुणवत्ता (quality) को सुनिश्चित कर सॉफ्टवेयर उपयोगिता को बढाते हैं|
  • प्रोजेक्ट को समयबद्ध पूरा करने और प्रोजेक्ट उत्पाद (product) को समयानुसार बाज़ार में उतारने में सहायक होते हैं|
  • संगठन के आर्थिक और अन्य न्यायिक जोखिमों (risks) को कम करते हैं|
  • सतत सुधार/विकास (continuous development) को बढ़ावा मिलता है|

 

(http://istqb.in/)

ITB_Logo

“इंडियन टेस्टिंग बोर्ड (ITB)” सॉफ्टवेयर टेस्टिंग की अंतर्राष्ट्रीय संस्था “इंटरनेशनल सॉफ्टवेयर टेस्टिंग क्वालिफिकेशन बोर्ड” (International Software Testing Qualifications Board (ISTQB)) द्वारा स्वीकृत भारत का राष्ट्रीय बोर्ड है| इंडियन टेस्टिंग बोर्ड (ITB) भारत में “ISTQB-प्रमाणित-टेस्टर” प्रमाणन (“ISTQB-Certified-Tester” Certification) के लिए उत्तरदाई है|

इंडियन टेस्टिंग बोर्ड (ITB) का गठन फरवरी 2004 में किया गया था| अभी तक इंडियन टेस्टिंग बोर्ड (ITB) द्वारा 60000 से अधिक प्रमाण-पत्र जारी किये हैं|