फॉल्ट इंजेक्शन

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

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

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

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

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

सॉफ्टवेयर कार्यान्वित फॉल्ट इंजेक्शन
सॉफ़्टवेयर फॉल्ट इंजेक्शन के लिए एसडब्ल्यूआईएफआई (SWIFI) तकनीकों को दो प्रकारों में वर्गीकृत किया जा सकता है- संकलन-समय इंजेक्शन और कार्यावधि इंजेक्शन।

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

कोड उत्परिवर्तन उन फॉल्टों को उत्पन्न करता है जो प्रोग्रामरों द्वारा अनजाने में जोड़े गए फॉल्टों के समान हैं।

कोड उत्परिवर्तन का परिशोधन कोड सम्मिलन फॉल्ट इंजेक्शन है जो मौजूदा कोड को संशोधित करने के स्थान पर कोड जोड़ता है। यह प्रायः अस्तव्यस्तता फलनों के उपयोग के माध्यम से किया जाता है जो सरल फलन होते हैं जो उपस्थित मान लेते हैं और इसे कुछ तर्क के माध्यम से दूसरे मान में अस्तव्यस्त करते हैं, उदाहरण के लिए int pFunc(int value) { return value + 20; }  int main(int argc, char * argv[]) { int a = pFunc(aFunction(atoi(argv[1]))); if (a > 20) { /* do something */ } else { /* do something else */ }  } इस मामले में, pFunc अस्तव्यस्तता फलन है और इसे फलन के पुनरावृत्ति मान पर कार्यान्वित किया जाता है जिसे प्रणाली में फॉल्ट प्रारम्भ करने के लिए कहा जाता है।

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

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

ये तकनीकें प्रायः कंप्यूटर प्रोसेसर आर्किटेक्चर द्वारा प्रदान की गई दोषमार्जन (डिबगिंग) सुविधाओं के आसपास आधारित होती हैं।

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

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

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

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


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

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

अनुसंधान उपकरण
कई एसडब्ल्यूआईएफआई (SWIFI) उपकरण विकसित किए गए हैं और इन उपकरणों का चयन यहां दिया गया है। छह प्रायः उपयोग किए जाने वाले फाल्ट इंजेक्शन उपकरण हैं फेरारी, एफटीएपीई (FTAPI), डीओसीटीओआर (DOCTOR), ऑर्केस्ट्रा, एक्ससेप्शन और ग्रिड-फिट।


 * एमओडीआईएफआई (MODIFI) (मॉडल-कार्यान्वित फॉल्ट इंजेक्शन) सिमुलिंक व्यवहार मॉडल की दृढ़ता के मूल्यांकन के लिए फॉल्ट इंजेक्शन उपकरण है। यह डोमेन-विशिष्ट फॉल्ट मॉडल के कार्यान्वयन के लिए एक्सएमएल (XML) में फॉल्ट मॉडलिंग का समर्थन करता है।
 * फरारी (फॉल्ट और त्रुटि या स्वचालित वास्तविक समय इंजेक्शन) सॉफ्टवेयर जाल पर आधारित है जो प्रणाली में त्रुटि अंतःक्षेप करता है। जाल या तो विशिष्ट मेमोरी स्थान या मध्यांतर पर कॉल करके सक्रिय होते हैं। जब किसी जाल को कॉल किया जाता है तो प्रबंधकर्ता प्रणाली में फॉल्ट अंतःक्षेप करता है। फॉल्ट क्षणिक या स्थायी हो सकते हैं। फेरारी के साथ किए गए शोध से पता चलता है कि त्रुटि का पता लगाना फॉल्ट के प्रकार पर निर्भर करता है और जहां फॉल्ट अन्तर्निविष्ट किया जाता है।
 * एफटीएपीई (FTAPE) (फॉल्ट सहिष्णुता और प्रदर्शन मूल्यांकनकर्ता) न केवल मेमोरी और रजिस्टरों में, बल्कि डिस्क अभिगम में भी फॉल्ट को अंतःक्षेप कर सकता है। यह प्रणाली में एक विशेष डिस्क ड्राइवर डालने से प्राप्त किया जाता है जो डिस्क इकाई से भेजे और प्राप्त किए गए डेटा में फॉल्ट अंतःक्षेप कर सकता है। एफटीएपीई (FTAPE) में सिंथेटिक भार इकाई भी है जो दृढ़ता परीक्षण उद्देश्यों के लिए भार की विशिष्ट मात्रा का अनुकरण कर सकती है।
 * डीओसीटीओआर (DOCTOR) (पर्यावरण में एकीकृत सॉफ्टवेयर फॉल्ट इंजेक्शन) मेमोरी के इंजेक्शन की अनुमति देता है और फॉल्टों को पंजीकृत करता है, साथ ही नेटवर्क संचार फॉल्टों को भी दर्ज करता है। यह मध्यांतर, जाल और कोड संशोधन के संयोजन का उपयोग करता है। मध्यांतर प्रेरक क्षणिक मेमोरी फॉल्टों को अंतःक्षेप करता है और जाल अंतःक्षेप अनुकरणीय हार्डवेयर विफलताओं, जैसे रजिस्टर अवमिश्रण।
 * आर्केस्ट्रा एक स्क्रिप्ट-चालित फॉल्ट इंजेक्टर है जो नेटवर्क स्तर फॉल्ट इंजेक्शन के निकट आधारित है। इसका प्राथमिक उपयोग वितरित प्रोटोकॉल के दोष-सहिष्णुता और समय की विशेषताओं का मूल्यांकन और सत्यापन है। आर्केस्ट्रा को प्रारम्भ में मैक ऑपरेटिंग सिस्टम के लिए विकसित किया गया था और फॉल्ट इंजेक्टर द्वारा प्रारम्भ की गई विलंबता की क्षतिपूर्ति के लिए इस प्लेटफॉर्म की कुछ विशेषताओं का उपयोग करता है। इसे अन्य ऑपरेटिंग सिस्टम में भी सफलतापूर्वक पोर्ट किया गया है।
 * एक्ससेप्शन को कई आधुनिक प्रोसेसरों पर उपलब्ध उन्नत दोषमार्जन सुविधाओं का लाभ उठाने के लिए डिज़ाइन किया गया है। यह लिखा गया है कि प्रणाली स्रोत में कोई संशोधन की आवश्यकता नहीं है और न ही सॉफ्टवेयर जाल को सम्मिलित करने की आवश्यकता है, क्योंकि प्रोसेसर की अपवाद से प्रबंधन की क्षमता फॉल्ट इंजेक्शन को प्रेरित करती है। ये प्रेरक विशिष्ट मेमोरी स्थानों तक अभिगम पर आधारित होते हैं। इस तरह का अभिगम या तो डेटा या निर्देशों को प्राप्त करने के लिए हो सकता है। इसलिए परीक्षण चालन को सटीक रूप से पुन: उत्पन्न करना संभव है क्योंकि प्रेरक को मध्यांतर के स्थान पर विशिष्ट घटनाओं से जोड़ा जा सकता है।
 * ग्रिड-फिट (ग्रिड - फॉल्ट इंजेक्शन टेक्नोलॉजी) फॉल्ट इंजेक्शन द्वारा ग्रिड सेवाओं का आकलन करने के लिए निर्भरता मूल्यांकन पद्धति और उपकरण है। ग्रिड-फिट पहले के फॉल्ट इंजेक्टर डब्ल्यूएस-फिट (WS-FIT) से लिया गया है, जिसे अपाचे एक्सिस ट्रांसपोर्ट का उपयोग करके कार्यान्वित जावा वेब सेवाओं की ओर लक्षित किया गया था। ग्रिड-फिट एक नए फॉल्ट इंजेक्शन क्रियाविधि का उपयोग करता है जो नेटवर्क-स्तर फॉल्ट इंजेक्शन को कोड अंतर्वेशन फॉल्ट इंजेक्शन के समान नियंत्रण का स्तर देने के लिए उपयोग करने की अनुमति देता है, जबकि कम आक्रामक होता है।
 * एलएफआई (LFI) (लाइब्रेरी-स्तर फॉल्ट इंजेक्टर) स्वचालित परीक्षण उपकरण अनुगामी है, जिसका उपयोग नियंत्रित परीक्षण परिवेश में अनुकरण करने के लिए किया जाता है, असाधारण स्थितियाँ जिन्हें प्रोग्राम को कार्यावधि पर संभालने की आवश्यकता होती है, लेकिन केवल इनपुट परीक्षण के माध्यम से जांचना आसान नहीं होता है। एलएफआई (LFI) स्वचालित रूप से साझा लाइब्रेरियों द्वारा अनावृत की गई त्रुटियों की पहचान करता है, प्रोग्राम बाइनरी में संभावित त्रुटि पुनर्प्राप्ति कोड पाता है और साझा लाइब्रेरियों और अनुप्रयोगों के बीच सीमा पर वांछित दोषों को अंतःक्षेप करता है।
 * एफआईब्लॉक (FIBlock) (फॉल्ट इंजेक्शन ब्लॉक), मॉडल-आधारित फॉल्ट इंजेक्शन विधि है जिसे अत्यधिक अनुकूलन योग्य सिमुलिंक ब्लॉक के रूप में कार्यान्वित किया जाता है। यह एमएटीएलएबी (MATLAB) सिमुलिंक मॉडल में इंजेक्शन का समर्थन करता है जो साइबर-भौतिक प्रणालियों जैसे सेंसर, कंप्यूटिंग हार्डवेयर और नेटवर्क के आवश्यक विषम घटकों के विशिष्ट फॉल्ट हैं। अतिरिक्त प्रेरक इनपुट और ब्लॉक के आउटपुट सशर्त फॉल्टों के मॉडलिंग को सक्षम करते हैं। इसके अलावा, प्रेरक संकेत से जुड़े दो या अधिक एफआईब्लॉक (FIBlocks) तथाकथित श्रृंखलित त्रुटियों को मॉडल कर सकते हैं।

वाणिज्यिक उपकरण

 * सुरक्षा से परे तूफान एक वाणिज्यिक सॉफ्टवेयर परीक्षण है # परीक्षण दृष्टिकोण सॉफ्टवेयर सुरक्षा विश्लेषण उपकरण। इसका उपयोग अक्सर मूल उपकरण निर्माताओं द्वारा विकास के दौरान किया जाता है, लेकिन कार्यान्वयन से पहले उत्पादों के परीक्षण के लिए भी इसका उपयोग किया जाता है, विशेष रूप से एयरोस्पेस, बैंकिंग और रक्षा में। beSTORM की परीक्षण प्रक्रिया सबसे संभावित हमले परिदृश्यों से शुरू होती है, फिर संपूर्ण पीढ़ी आधारित फ़ज़ परीक्षण का सहारा लेती है। beSTORM म्यूटेशन-आधारित हमलों सहित सामान्य प्रोटोकॉल और 'ऑटो लर्न' नए या मालिकाना प्रोटोकॉल के लिए मॉड्यूल प्रदान करता है। हाइलाइट्स: बाइनरी और टेक्स्टुअल एनालिसिस, कस्टम प्रोटोकॉल टेस्टिंग, डिबगिंग और स्टैक ट्रेसिंग, डेवलपमेंट लैंग्वेज इंडिपेंडेंट, सीवीई कंप्लेंट।
 * ExhaustiF एक व्यावसायिक सॉफ्टवेयर टूल है जिसका उपयोग सॉफ्टवेयर-इंटेंसिव सिस्टम की विश्वसनीयता में सुधार के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन (SWIFI) पर आधारित ग्रे बॉक्स परीक्षण के लिए किया जाता है। उपकरण का उपयोग किसी भी सॉफ़्टवेयर विकास जीवनचक्र के सिस्टम एकीकरण और सिस्टम परीक्षण चरणों के दौरान किया जा सकता है, साथ ही साथ अन्य परीक्षण उपकरणों का पूरक भी हो सकता है। ExhaustiF सॉफ्टवेयर और हार्डवेयर दोनों में दोषों को इंजेक्ट करने में सक्षम है। सॉफ़्टवेयर में सिम्युलेटेड दोषों को इंजेक्ट करते समय, ExhaustiF निम्न प्रकार के दोष प्रदान करता है: चर भ्रष्टाचार और प्रक्रिया भ्रष्टाचार। हार्डवेयर फॉल्ट इंजेक्शन के लिए कैटलॉग में मेमोरी (I/O, RAM) और CPU (इंटीजर यूनिट, फ्लोटिंग यूनिट) में दोष शामिल हैं। आरटीईएमएस/ईआरसी32, आरटीईएमएस/पेंटियम, लिनक्स/पेंटियम और एमएस-विंडोज/पेंटियम के लिए अलग-अलग संस्करण उपलब्ध हैं।
 * होलोडेक सिक्योरिटी इनोवेशन द्वारा विकसित एक परीक्षण उपकरण है जो विंडोज अनुप्रयोगों और सेवाओं के लिए वास्तविक दुनिया के अनुप्रयोग और सिस्टम त्रुटियों का अनुकरण करने के लिए दोष इंजेक्शन का उपयोग करता है। होलोडेक के ग्राहकों में माइक्रोसॉफ्ट, सिमेंटेक, ईएमसी और एडोब सहित कई प्रमुख व्यावसायिक सॉफ्टवेयर विकास कंपनियां शामिल हैं। यह एक नियंत्रित, दोहराने योग्य वातावरण प्रदान करता है जिसमें नाजुकता और सुरक्षा परीक्षण के लिए एरर-हैंडलिंग कोड और एप्लिकेशन अटैक सतहों का विश्लेषण और डिबग किया जाता है। यह फ़ाइल और नेटवर्क फ़ज़िंग दोषों के साथ-साथ अन्य संसाधनों, सिस्टम और कस्टम-परिभाषित दोषों की एक विस्तृत श्रृंखला का अनुकरण करता है। यह कोड का विश्लेषण करता है और परीक्षण योजनाओं की सिफारिश करता है और फ़ंक्शन कॉल लॉगिंग, एपीआई इंटरसेप्शन, तनाव परीक्षण, कोड कवरेज विश्लेषण और कई अन्य एप्लिकेशन सुरक्षा आश्वासन कार्य भी करता है।
 * प्रूफडॉक के कैओस इंजीनियरिंग प्लेटफॉर्म का फोकस माइक्रोसॉफ्ट एज़्योर क्लाउड प्लेटफॉर्म पर है। यह इंफ्रास्ट्रक्चर स्तर, प्लेटफॉर्म स्तर और एप्लिकेशन स्तर पर विफलताओं को इंजेक्ट करता है।
 * ग्रेमलिन एक फेल्योर-एज-ए-सर्विस प्लेटफॉर्म है जो कैओस इंजीनियरिंग के अभ्यास के माध्यम से कंपनियों को अधिक लचीलापन (नेटवर्क) सिस्टम बनाने में मदद करता है। ग्रेमलिन तीन श्रेणियों में सबसे आम विफलताओं को फिर से बनाता है - कम्प्यूटेशनल संसाधन, दूरसंचार नेटवर्क, और राज्य (कंप्यूटर विज्ञान) - अज्ञात दोषों को सक्रिय रूप से पहचानने और ठीक करने के लिए सिस्टम में विफलता को सुरक्षित रूप से इंजेक्ट करता है।
 * कोडनोमिकॉन डिफेंसिक्स एक ब्लैक-बॉक्स टेस्ट ऑटोमेशन फ्रेमवर्क है जो नेटवर्क प्रोटोकॉल, एपीआई इंटरफेस, फाइलों और एक्सएमएल संरचनाओं सहित 150 से अधिक विभिन्न इंटरफेस में गलती इंजेक्शन करता है। सॉफ्टवेयर फॉल्ट इंजेक्शन के क्षेत्र में औलू विश्वविद्यालय में पांच साल के शोध के बाद वाणिज्यिक उत्पाद 2001 में लॉन्च किया गया था। उपयोग किए गए फ़ज़िंग सिद्धांतों की व्याख्या करने वाला एक शोध कार्य VTT द्वारा प्रकाशित किया गया था, जो PROTOS संघ के सदस्यों में से एक है। * म्यू सेवा विश्लेषक गतिकी में द्वारा विकसित एक वाणिज्यिक सेवा परीक्षण उपकरण है। म्यू सर्विस एनालाइज़र सॉफ्टवेयर टेस्टिंग#टेस्टिंग अप्रोच और सॉफ्टवेयर टेस्टिंग#टेस्टिंग अप्रोच टेस्टिंग करता है सेवाओं का उनके एक्सपोज्ड सॉफ्टवेयर इंटरफेस के आधार पर, डिनायल-ऑफ-सर्विस सिमुलेशन, सर्विस-लेवल ट्रैफिक वेरिएशन (अमान्य इनपुट उत्पन्न करने के लिए) और ज्ञात के रिप्ले का उपयोग करके भेद्यता ट्रिगर। ये सभी तकनीकें इनपुट सत्यापन और त्रुटि से निपटने का अभ्यास करती हैं और सॉफ्टवेयर सिस्टम पर परीक्षण यातायात के प्रभावों को चिह्नित करने के लिए वैध प्रोटोकॉल मॉनिटर और एसएनएमपी के साथ संयोजन में उपयोग की जाती हैं। म्यू सर्विस एनालाइज़र उपयोगकर्ताओं को किसी भी उजागर प्रोटोकॉल कार्यान्वयन के लिए सिस्टम-स्तरीय विश्वसनीयता, उपलब्धता और सुरक्षा मेट्रिक्स को स्थापित करने और ट्रैक करने की अनुमति देता है। यह उपकरण 2005 से उत्तरी अमेरिका, एशिया और यूरोप के ग्राहकों द्वारा विशेष रूप से नेटवर्क ऑपरेटरों (और उनके विक्रेताओं) और औद्योगिक नियंत्रण प्रणालियों (नाजूक आधारभूत श्रंचना सहित) के महत्वपूर्ण बाजारों में उपलब्ध है।
 * अपवाद क्रिटिकल सॉफ्टवेयर एसए द्वारा विकसित एक व्यावसायिक सॉफ्टवेयर टूल है सॉफ्टवेयर टेस्टिंग # टेस्टिंग अप्रोच और सॉफ्टवेयर टेस्टिंग # टेस्टिंग एप्रोच टेस्टिंग ऑन सॉफ्टवेयर फॉल्ट इंजेक्शन (SWIFI) और स्कैन चेन फॉल्ट इंजेक्शन (SCIFI) के लिए इस्तेमाल किया जाता है। एक्ससेप्शन उपयोगकर्ताओं को अपने सिस्टम की मजबूती या उनके सिर्फ एक हिस्से का परीक्षण करने की अनुमति देता है, जिससे आर्किटेक्चर के एक विशिष्ट सेट के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन और हार्डवेयर फॉल्ट इंजेक्शन दोनों की अनुमति मिलती है। उपकरण का उपयोग 1999 से बाजार में किया गया है और इसके ग्राहक अमेरिकी, एशियाई और यूरोपीय बाजारों में हैं, विशेष रूप से एयरोस्पेस और दूरसंचार बाजार के महत्वपूर्ण बाजार में। पूर्ण एक्ससेप्शन उत्पाद परिवार में शामिल हैं: ए) मुख्य एक्ससेप्शन टूल, सॉफ्टवेयर इम्प्लीमेंटेड फॉल्ट इंजेक्शन (एसडब्ल्यूआईएफआई) तकनीक में अत्याधुनिक लीडर; बी) ईज़ी फॉल्ट डेफिनिशन (ईएफडी) और एक्सट्रैक्ट (एक्सेप्शन एनालिसिस टूल) ऐड-ऑन टूल्स; c) स्कैन चेन और पिन-लेवल फोर्सिंग के लिए फॉल्ट इंजेक्शन एक्सटेंशन के साथ एक्सटेंडेड एक्ससेप्शन टूल (एक्ससेप्शन)।

पुस्तकालय

 * libfiu (यूजरस्पेस में दोष इंजेक्शन), सी लाइब्रेरी स्रोत कोड को संशोधित किए बिना POSIX रूटीन में दोषों का अनुकरण करने के लिए। कार्यक्रम के किसी भी बिंदु पर रन-टाइम पर मनमाना दोषों का अनुकरण करने के लिए एक एपीआई शामिल है।
 * TestApi एक साझा-स्रोत एपीआई लाइब्रेरी है, जो फॉल्ट इंजेक्शन परीक्षण के साथ-साथ .NET अनुप्रयोगों के लिए अन्य परीक्षण प्रकारों, डेटा-संरचनाओं और एल्गोरिदम के लिए सुविधाएं प्रदान करती है।
 * Fuzzino एक ओपन सोर्स लाइब्रेरी है, जो एक प्रकार के विनिर्देश और/या मान्य मानों से उत्पन्न होने वाले फ़ज़िंग ह्यूरिस्टिक्स का एक समृद्ध सेट प्रदान करता है।
 * krf एक खुला स्रोत लिनक्स कर्नेल मॉड्यूल है जो सिस्टम कॉल के लिए संभावित रूप से विफलता मान वापस करने के लिए एक विन्यास योग्य सुविधा प्रदान करता है। आगे ब्लॉग पोस्ट में समझाया गया है।
 * nlfaultinjection को एक सरल, पोर्टेबल फॉल्ट इंजेक्शन फ्रेमवर्क प्रदान करने के लिए डिज़ाइन किया गया है, जो लगभग किसी भी सिस्टम पर चलने में सक्षम है, चाहे वह कितना भी सीमित क्यों न हो और केवल C मानक लाइब्रेरी पर निर्भर करता है।

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

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

<वाक्यविन्यास प्रकाश लैंग = सी> त्रुटि = तैयारफॉरकॉमिट ; अगर (त्रुटि == सफलता) { त्रुटि = प्रतिबद्ध ; मुखर (त्रुटि == सफलता); } 

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

यह भी देखें

 * Bebugging
 * उत्परिवर्तन परीक्षण
 * अराजकता इंजीनियरिंग

बाहरी संबंध

 * Certitude Software from Certess Inc.
 * How DoorDash utilizes fault injection testing to improve reliability