फॉल्ट इंजेक्शन: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(12 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Short description|Testing how computer systems behave under unusual stresses}}
{{Short description|Testing how computer systems behave under unusual stresses}}
[[कंप्यूटर विज्ञान]] में, फॉल्ट इंजेक्शन यह समझने के लिए एक परीक्षण तकनीक है कि कंप्यूटिंग प्रणालियाँ कैसे व्यवहार करती है जब असामान्य तरीके से बल दिया जाता है। यह भौतिक या सॉफ़्टवेयर-आधारित साधनों का उपयोग करके या संकर दृष्टिकोण का उपयोग करके प्राप्त किया जा सकता है।<ref>{{Cite journal|last1=Moradi|first1=Mehrdad|last2=Van Acker|first2=Bert|last3=Vanherpen|first3=Ken|last4=Denil|first4=Joachim|date=2019|editor-last=Chamberlain|editor-first=Roger|editor2-last=Taha|editor2-first=Walid|editor3-last=Törngren|editor3-first=Martin|title=Model-Implemented Hybrid Fault Injection for Simulink (Tool Demonstrations)|journal=Cyber Physical Systems. Model-Based Design|volume=11615|series=Lecture Notes in Computer Science|language=en|publisher=Springer International Publishing|pages=71–90|doi=10.1007/978-3-030-23703-5_4|isbn=9783030237035|s2cid=195769468 }}</ref> व्यापक रूप से अध्ययन किए गए भौतिक फॉल्ट इंजेक्शन में उच्च वोल्टेज, अत्यधिक तापमान और इलेक्ट्रॉनिक घटकों, जैसे कंप्यूटर [[स्मृति|मेमोरी]] और केंद्रीय प्रसंस्करण इकाइयों पर [[विद्युत चुम्बकीय दालों|विद्युत चुम्बकीय स्पंदों]] का अनुप्रयोग सम्मिलित है।<ref name="shepherd.cose">{{cite journal|last1=Shepherd|first1=Carlton|last2=Markantonakis|first2=Konstantinos|last3=Van Heijningen|first3=Nico|last4=Aboulkassimi|first4=Driss|last5=Gaine|first5=Clement|last6=Heckmann|first6=Thibaut|last7=Naccache|first7=David |date=2021|title=Physical fault injection and side-channel attacks on mobile devices: A comprehensive analysis|arxiv=2105.04454|url=https://arxiv.org/pdf/2105.04454.pdf|journal=Computers & Security|publisher=Elsevier|volume=111|issue=102471|page=102471 |doi=10.1016/j.cose.2021.102471|s2cid=236957400 }}</ref><ref name="bar-el.sorcerers">{{cite journal|last1=Bar-El|first1=Hagai|last2=Choukri|first2=Hamid|last3=Naccache|first3=David|last4=Tunstall|first4=Michael|last5=Whelan|first5=Claire|date=2004|title=The sorcerer's apprentice guide to fault attacks|url=https://ieeexplore.ieee.org/document/1580506|journal=Proceedings of the IEEE|publisher=IEEE|volume=94|issue=2|pages=370–382 |doi=10.1109/JPROC.2005.862424 |s2cid=2397174 }}</ref> घटकों को उनकी इच्छित परिचालन सीमाओं से परे स्थितियों में उजागर करके, कंप्यूटिंग प्रणाली को गलत निष्पादन निर्देशों और महत्वपूर्ण डेटा को दूषित करने के लिए बाध्य किया जा सकता है।
[[कंप्यूटर विज्ञान]] में, '''फॉल्ट इंजेक्शन''' यह समझने के लिए एक परीक्षण तकनीक है कि कंप्यूटिंग प्रणालियाँ कैसे व्यवहार करती है जब असामान्य तरीके से बल दिया जाता है। यह भौतिक या सॉफ़्टवेयर-आधारित साधनों का उपयोग करके या संकर दृष्टिकोण का उपयोग करके प्राप्त किया जा सकता है।<ref>{{Cite journal|last1=Moradi|first1=Mehrdad|last2=Van Acker|first2=Bert|last3=Vanherpen|first3=Ken|last4=Denil|first4=Joachim|date=2019|editor-last=Chamberlain|editor-first=Roger|editor2-last=Taha|editor2-first=Walid|editor3-last=Törngren|editor3-first=Martin|title=Model-Implemented Hybrid Fault Injection for Simulink (Tool Demonstrations)|journal=Cyber Physical Systems. Model-Based Design|volume=11615|series=Lecture Notes in Computer Science|language=en|publisher=Springer International Publishing|pages=71–90|doi=10.1007/978-3-030-23703-5_4|isbn=9783030237035|s2cid=195769468 }}</ref> व्यापक रूप से अध्ययन किए गए भौतिक फॉल्ट इंजेक्शन में उच्च वोल्टेज, अत्यधिक तापमान और इलेक्ट्रॉनिक घटकों, जैसे कंप्यूटर [[स्मृति|मेमोरी]] और केंद्रीय प्रसंस्करण इकाइयों पर [[विद्युत चुम्बकीय दालों|विद्युत चुम्बकीय स्पंदों]] का अनुप्रयोग सम्मिलित है।<ref name="shepherd.cose">{{cite journal|last1=Shepherd|first1=Carlton|last2=Markantonakis|first2=Konstantinos|last3=Van Heijningen|first3=Nico|last4=Aboulkassimi|first4=Driss|last5=Gaine|first5=Clement|last6=Heckmann|first6=Thibaut|last7=Naccache|first7=David |date=2021|title=Physical fault injection and side-channel attacks on mobile devices: A comprehensive analysis|arxiv=2105.04454|url=https://arxiv.org/pdf/2105.04454.pdf|journal=Computers & Security|publisher=Elsevier|volume=111|issue=102471|page=102471 |doi=10.1016/j.cose.2021.102471|s2cid=236957400 }}</ref><ref name="bar-el.sorcerers">{{cite journal|last1=Bar-El|first1=Hagai|last2=Choukri|first2=Hamid|last3=Naccache|first3=David|last4=Tunstall|first4=Michael|last5=Whelan|first5=Claire|date=2004|title=The sorcerer's apprentice guide to fault attacks|url=https://ieeexplore.ieee.org/document/1580506|journal=Proceedings of the IEEE|publisher=IEEE|volume=94|issue=2|pages=370–382 |doi=10.1109/JPROC.2005.862424 |s2cid=2397174 }}</ref> घटकों को उनकी इच्छित परिचालन सीमाओं से परे स्थितियों में उजागर करके, कंप्यूटिंग प्रणाली को गलत निष्पादन निर्देशों और महत्वपूर्ण डेटा को दूषित करने के लिए बाध्य किया जा सकता है।


सॉफ़्टवेयर परीक्षण में, फॉल्ट इंजेक्शन परीक्षण के [[कोड कवरेज़|क्षेत्र]] में सुधार के लिए एक तकनीक है, जो विशेष रूप से [[त्रुटि प्रबंधन]] कोड पथों में कोड पथों का परीक्षण करने के लिए फॉल्टों का परिचय देती है, जो कि संभवतया ही कभी पालन किया जा सकता है। यह प्रायः [[तनाव परीक्षण]] के साथ प्रयोग किया जाता है और व्यापक रूप से सुदृढ़ सॉफ्टवेयर विकसित करने का एक महत्वपूर्ण हिस्सा माना जाता है।<ref>J. Voas, "Fault Injection for the Masses," Computer, vol. 30, pp. 129–130, 1997.</ref> [[मजबूती परीक्षण|दृढ़ता परीक्षण]]<ref name="vtt.fi">[http://www.vtt.fi/inf/pdf/publications/2001/P448.pdf Kaksonen, Rauli. A Functional Method for Assessing Protocol Implementation Security. 2001.]</ref> (सिंटैक्स परीक्षण, [[फज़िंग|अस्पष्टता]] या [[फ़ज़ परीक्षण|अस्पष्टता परीक्षण]] के रूप में भी जाना जाता है) एक प्रकार का फॉल्ट इंजेक्शन है जो प्रायः संचार इंटरफेस जैसे प्रोटोकॉल, कमांड लाइन पैरामीटर या एपीआई (APIs) में कमजोरियों के परीक्षण के लिए उपयोग किया जाता है।  
सॉफ़्टवेयर परीक्षण में, फॉल्ट इंजेक्शन परीक्षण के [[कोड कवरेज़|क्षेत्र]] में सुधार के लिए एक तकनीक है, जो विशेष रूप से [[त्रुटि प्रबंधन]] कोड पथों में कोड पथों का परीक्षण करने के लिए फॉल्टों का परिचय देती है, जो कि संभवतया ही कभी पालन किया जा सकता है। यह प्रायः [[तनाव परीक्षण]] के साथ प्रयोग किया जाता है और व्यापक रूप से सुदृढ़ सॉफ्टवेयर विकसित करने का एक महत्वपूर्ण हिस्सा माना जाता है।<ref>J. Voas, "Fault Injection for the Masses," Computer, vol. 30, pp. 129–130, 1997.</ref> [[मजबूती परीक्षण|दृढ़ता परीक्षण]]<ref name="vtt.fi">[http://www.vtt.fi/inf/pdf/publications/2001/P448.pdf Kaksonen, Rauli. A Functional Method for Assessing Protocol Implementation Security. 2001.]</ref> (सिंटैक्स परीक्षण, [[फज़िंग|अस्पष्टता]] या [[फ़ज़ परीक्षण|अस्पष्टता परीक्षण]] के रूप में भी जाना जाता है) एक प्रकार का फॉल्ट इंजेक्शन है जो प्रायः संचार इंटरफेस जैसे प्रोटोकॉल, कमांड लाइन पैरामीटर या एपीआई (APIs) में कमजोरियों के परीक्षण के लिए उपयोग किया जाता है।  
Line 13: Line 13:


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


कंपाइल-टाइम इंजेक्शन एक इंजेक्शन तकनीक है जहां सिस्टम में सिम्युलेटेड दोषों को इंजेक्ट करने के लिए स्रोत कोड को संशोधित किया जाता है। एक विधि को [[उत्परिवर्तन परीक्षण]] कहा जाता है जो कोड की मौजूदा पंक्तियों को बदल देता है ताकि उनमें दोष हों। इस तकनीक का एक सरल उदाहरण बदल सकता है <code>a = a + 1</code> को <code>a = a – 1</code>
'''संकलन-समय इंजेक्शन''' एक इंजेक्शन तकनीक है जहां प्रणाली में अनुरूप फॉल्टों को अन्तःक्षेप करने के लिए स्रोत कोड को संशोधित किया जाता है। विधि को [[उत्परिवर्तन परीक्षण]] कहा जाता है जो कोड की मौजूदा पंक्तियों को बदल देता है ताकि उनमें फॉल्ट हों। इस तकनीक का एक सरल उदाहरण <code>a = a + 1</code> को <code>a = a – 1</code> में परिवर्तित करना हो सकता है  
कोड म्यूटेशन उन दोषों को उत्पन्न करता है जो प्रोग्रामर्स द्वारा अनजाने में जोड़े गए दोषों के समान हैं।


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


<वाक्यविन्यास प्रकाश लैंग = सी>
कोड उत्परिवर्तन का परिशोधन कोड सम्मिलन फॉल्ट इंजेक्शन है जो मौजूदा कोड को संशोधित करने के स्थान पर कोड जोड़ता है। यह प्रायः अस्तव्यस्तता फलनों के उपयोग के माध्यम से किया जाता है जो सरल फलन होते हैं जो उपस्थित मान लेते हैं और इसे कुछ तर्क के माध्यम से दूसरे मान में अस्तव्यस्त करते हैं, उदाहरण के लिए
  इंट pFunc (इंट वैल्यू) {
  int pFunc(int value) {
    वापसी मूल्य + 20;
    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 अस्तव्यस्तता फलन है और इसे फलन के पुनरावृत्ति मान पर कार्यान्वित किया जाता है जिसे प्रणाली में फॉल्ट प्रारम्भ करने के लिए कहा जाता है।


  इंट मेन (इंट एआरजीसी, चार * एआरजीवी []) {
'''कार्यावधि इंजेक्शन''' तकनीक चल रहे सॉफ़्टवेयर प्रणाली में फॉल्ट को अंतःक्षेप करने के लिए सॉफ़्टवेयर प्रेरक का उपयोग करती है। फॉल्टों को कई भौतिक विधियों के माध्यम से अंतःक्षेप किया जा सकता है और प्रेरकों को कई तरीकों से कार्यान्वित किया जा सकता है, जैसे- समय आधारित प्रेरक (जब टाइमर एक निर्दिष्ट समय तक पहुंचता है तो एक बाधा उत्पन्न होती है और टाइमर से जुड़ा व्यवधान प्रबंधकर्ता फॉल्ट को अंतःक्षेप कर सकता है।) व्यवधान आधारित प्रेरक (हार्डवेयर अपवाद और सॉफ्टवेयर जाल क्रियाविधियों का उपयोग प्रणाली कोड में किसी विशिष्ट स्थान पर या प्रणाली के भीतर किसी विशेष घटना पर, उदाहरण के लिए, किसी विशिष्ट मेमोरी स्थान तक पहुंच) उत्पन्न करने के लिए किया जाता है।
    int a = pFunc(aFunction(atoi(argv[1])));
    अगर (ए> 20) {
      /* कुछ करो */
    } अन्य {
      /* कुछ और करें */
    }
  }
</वाक्यविन्यास हाइलाइट>


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


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


रनटाइम इंजेक्शन तकनीक एक ट्रिगर के माध्यम से सिस्टम में दोष डालने के लिए कई अलग-अलग तकनीकों का उपयोग कर सकती है।
=== प्रोटोकॉल सॉफ़्टवेयर फॉल्ट इंजेक्शन ===


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


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


=== प्रोटोकॉल सॉफ्टवेयर गलती इंजेक्शन ===
== फॉल्ट इंजेक्शन की विशेषताएं ==
फॉल्टों के तीन मुख्य मापदंड होते हैं।<ref>{{Cite book|url=https://www.springer.com/gp/book/9781402075896|title=Fault Injection Techniques and Tools for Embedded Systems Reliability Evaluation|date=2003|publisher=Springer US|isbn=978-1-4020-7589-6|editor-last=Benso|editor-first=Alfredo|series=Frontiers in Electronic Testing|language=en|editor-last2=Prinetto|editor-first2=Paolo}}</ref>
* प्रकार- किस प्रकार का फॉल्ट इंजेक्ट किया जाना चाहिए? उदाहरण के लिए अटके हुए मान, विलंब, कुछ फलनों की अनदेखी, कुछ मापदंडों / चर, यादृच्छिक फॉल्ट, पूर्वाग्रह फॉल्ट, ध्वनि आदि को अनदेखा करना। प्रत्येक दोष का आयाम भी महत्वपूर्ण है।
* समय- कब सक्रिय किया जाना चाहिए? उदाहरण के लिए फॉल्ट का सक्रियण समय या फॉल्ट की सक्रियता की स्थिति।
*स्थान- प्रणाली में कहाँ होना चाहिए? उदाहरण के लिए प्रणाली के बीच लिंक/संपर्क में फॉल्ट, प्रणाली/उपप्रणालियाँ/फलन आदि के भीतर फॉल्ट।


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


== हार्डवेयर कार्यान्वित दोष इंजेक्शन ==
* संवेदनशीलता विश्लेषण-<ref>{{Cite web|title=Optimizing fault injection in FMI co-simulation through sensitivity partitioning {{!}} Proceedings of the 2019 Summer Simulation Conference|url=https://dl.acm.org/doi/abs/10.5555/3374138.3374170|access-date=2020-06-14|website=dl.acm.org|language=EN}}</ref> इस पद्धति में, संवेदनशीलता विश्लेषण का उपयोग उन सबसे महत्वपूर्ण संकेतों की पहचान करने के लिए किया गया है जिनका प्रणालाी के विनिर्देशन पर अधिक प्रभाव पड़ता है। उन महत्वपूर्ण संकेतों या मापदंडों की पहचान करके, फॉल्ट इंजेक्शन उपकरण प्रणाली में सभी संकेतों पर ध्यान केंद्रित करने के स्थान पर उन प्रभावी संकेतों पर ध्यान केंद्रित करेगा।
यह तकनीक एक हार्डवेयर प्रोटोटाइप पर लागू की गई थी। परीक्षक सर्किट में कुछ हिस्सों के वोल्टेज को बदलकर, तापमान को बढ़ाकर या घटाकर, उच्च ऊर्जा विकिरण द्वारा बोर्ड पर बमबारी आदि करके गलती को इंजेक्ट करते हैं।
* सुदृढ़ीकरण अधिगम-<ref>Moradi, M., Oakes, B.J., Saraoglu, M., Morozov, A., Janschek, K. and Denil, J., 2020. EXPLORING FAULT PARAMETER SPACE USING REINFORCEMENT LEARNING-BASED FAULT INJECTION.</ref> इस पद्धति में, सुदृढ़ीकरण अधिगमग एल्गोरिद्म का उपयोग फॉल्ट स्थान का कुशलतापूर्वक पता लगाने और गंभीर फॉल्ट खोजने के लिए किया गया है।


== गलती इंजेक्शन के लक्षण ==
== फॉल्ट इंजेक्शन उपकरण ==
दोषों के तीन मुख्य पैरामीटर हैं।<ref>{{Cite book|url=https://www.springer.com/gp/book/9781402075896|title=Fault Injection Techniques and Tools for Embedded Systems Reliability Evaluation|date=2003|publisher=Springer US|isbn=978-1-4020-7589-6|editor-last=Benso|editor-first=Alfredo|series=Frontiers in Electronic Testing|language=en|editor-last2=Prinetto|editor-first2=Paolo}}</ref> * प्रकार: किस प्रकार का दोष इंजेक्ट किया जाना चाहिए? उदाहरण के लिए अटके हुए मूल्य, देरी, कुछ कार्यों की अनदेखी, कुछ मापदंडों / चर, यादृच्छिक दोष, पूर्वाग्रह दोष, शोर आदि की अनदेखी करना। प्रत्येक दोष का आयाम भी महत्वपूर्ण है।
* समय: कब सक्रिय किया जाना चाहिए? उदाहरण के लिए गलती का सक्रियण समय या गलती की सक्रियता की स्थिति।
* स्थान: व्यवस्था में कहाँ होना चाहिए? उदाहरण के लिए सिस्टम के बीच लिंक/कनेक्शन में दोष, सिस्टम/सबसिस्टम/फंक्शन आदि के भीतर दोष।


ये पैरामीटर फॉल्ट स्पेस क्षेत्र बनाते हैं। सिस्टम की जटिलता बढ़ने से फॉल्ट स्पेस दायरे में तेजी से वृद्धि होगी। इसलिए, पारंपरिक गलती इंजेक्शन विधि आधुनिक साइबर-भौतिक प्रणालियों में उपयोग के लिए लागू नहीं होगी, क्योंकि वे इतने धीमे होंगे, और उन्हें कम संख्या में दोष (कम दोष कवरेज) मिलेंगे। इसलिए, परीक्षकों को महत्वपूर्ण दोषों का चयन करने के लिए एक कुशल एल्गोरिदम की आवश्यकता होती है जो सिस्टम व्यवहार पर अधिक प्रभाव डालते हैं। इस प्रकार, मुख्य शोध प्रश्न यह है कि फॉल्ट स्पेस दायरे में महत्वपूर्ण दोषों का पता कैसे लगाया जाए, जिनका सिस्टम व्यवहार पर विनाशकारी प्रभाव पड़ता है। यहां कुछ तरीके दिए गए हैं जो कम अनुकार समय में उच्च दोष कवरेज तक पहुंचने के लिए दोष स्थान का कुशलतापूर्वक पता लगाने के लिए गलती इंजेक्शन की सहायता कर सकते हैं।
यद्यपि इस प्रकार के दोषों को हाथ से अंतःक्षेप किया जा सकता है, एक अनपेक्षित दोष को पेश करने की संभावना अधिक होती है, इसलिए प्रोग्राम को स्वचालित रूप से पदव्याख्या करने और फाल्टों को सम्मिलित करने के लिए उपकरण उपस्थित हैं।
 
* संवेदनशीलता का विश्लेषण:<ref>{{Cite web|title=Optimizing fault injection in FMI co-simulation through sensitivity partitioning {{!}} Proceedings of the 2019 Summer Simulation Conference|url=https://dl.acm.org/doi/abs/10.5555/3374138.3374170|access-date=2020-06-14|website=dl.acm.org|language=EN}}</ref> इस पद्धति में, संवेदनशीलता विश्लेषण का उपयोग उन सबसे महत्वपूर्ण संकेतों की पहचान करने के लिए किया गया है जिनका सिस्टम के विनिर्देशन पर अधिक प्रभाव पड़ता है। उन महत्वपूर्ण संकेतों या मापदंडों की पहचान करके, दोष इंजेक्शन उपकरण सिस्टम में सभी संकेतों पर ध्यान केंद्रित करने के बजाय उन प्रभावी संकेतों पर ध्यान केंद्रित करेगा।
* सुदृढीकरण सीखना:<ref>Moradi, M., Oakes, B.J., Saraoglu, M., Morozov, A., Janschek, K. and Denil, J., 2020. EXPLORING FAULT PARAMETER SPACE USING REINFORCEMENT LEARNING-BASED FAULT INJECTION.</ref> इस पद्धति में, सुदृढीकरण सीखने के एल्गोरिथ्म का उपयोग गलती स्थान का कुशलतापूर्वक पता लगाने और महत्वपूर्ण दोषों को खोजने के लिए किया गया है।
 
== दोष इंजेक्शन उपकरण ==
 
यद्यपि इस प्रकार के दोषों को हाथ से इंजेक्ट किया जा सकता है, एक अनपेक्षित दोष को पेश करने की संभावना अधिक होती है, इसलिए प्रोग्राम को स्वचालित रूप से पार्स करने और दोषों को सम्मिलित करने के लिए उपकरण मौजूद हैं।


=== अनुसंधान उपकरण ===
=== अनुसंधान उपकरण ===


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


* MODIFI (MODel-Implemented Fault Injection) सिमुलिंक व्यवहार मॉडल की मजबूती के मूल्यांकन के लिए एक दोष इंजेक्शन उपकरण है। यह डोमेन-विशिष्ट दोष मॉडल के कार्यान्वयन के लिए XML में दोष मॉडलिंग का समर्थन करता है।<ref>Rickard Svenningsson, Jonny Vinter, Henrik Eriksson and Martin Torngren, "MODIFI: A MODel-Implemented Fault Injection Tool,", Lecture Notes in Computer Science, 2010, Volume 6351/2010, 210-222.</ref>
* एमओडीआईएफआई (MODIFI) (मॉडल-कार्यान्वित फॉल्ट इंजेक्शन) सिमुलिंक व्यवहार मॉडल की दृढ़ता के मूल्यांकन के लिए फॉल्ट इंजेक्शन उपकरण है। यह डोमेन-विशिष्ट फॉल्ट मॉडल के कार्यान्वयन के लिए एक्सएमएल (XML) में फॉल्ट मॉडलिंग का समर्थन करता है।<ref>Rickard Svenningsson, Jonny Vinter, Henrik Eriksson and Martin Torngren, "MODIFI: A MODel-Implemented Fault Injection Tool,", Lecture Notes in Computer Science, 2010, Volume 6351/2010, 210-222.</ref>
* फरारी (फॉल्ट और एरर या स्वचालित रीयल-टाइम इंजेक्शन) सॉफ्टवेयर ट्रैप पर आधारित है जो सिस्टम में त्रुटियों को इंजेक्ट करता है। जाल या तो एक विशिष्ट मेमोरी स्थान या टाइमआउट पर कॉल करके सक्रिय होते हैं। जब किसी ट्रैप को कॉल किया जाता है तो हैंडलर सिस्टम में एक फॉल्ट डाल देता है। दोष या तो क्षणिक या स्थायी हो सकते हैं। फेरारी के साथ किए गए शोध से पता चलता है कि त्रुटि का पता लगाना गलती के प्रकार और जहां गलती डाली गई है, पर निर्भर है।<ref>G. A. Kanawati, N. A. Kanawati, and J. A. Abraham, "FERRARI: A Flexible Software-Based Fault and Error Injection System," IEEE Transactions on Computers, vol. 44, pp. 248, 1995.</ref>
* फरारी (फॉल्ट और त्रुटि या स्वचालित वास्तविक समय इंजेक्शन) सॉफ्टवेयर जाल पर आधारित है जो प्रणाली में त्रुटि अंतःक्षेप करता है। जाल या तो विशिष्ट मेमोरी स्थान या मध्यांतर पर कॉल करके सक्रिय होते हैं। जब किसी जाल को कॉल किया जाता है तो प्रबंधकर्ता प्रणाली में फॉल्ट अंतःक्षेप करता है। फॉल्ट क्षणिक या स्थायी हो सकते हैं। फेरारी के साथ किए गए शोध से पता चलता है कि त्रुटि का पता लगाना फॉल्ट के प्रकार पर निर्भर करता है और जहां फॉल्ट अन्तर्निविष्ट किया जाता है।<ref>G. A. Kanawati, N. A. Kanawati, and J. A. Abraham, "FERRARI: A Flexible Software-Based Fault and Error Injection System," IEEE Transactions on Computers, vol. 44, pp. 248, 1995.</ref>
* FTAPE (फॉल्ट टॉलरेंस एंड परफॉर्मेंस इवैल्यूएटर) न केवल मेमोरी और रजिस्टरों में, बल्कि डिस्क एक्सेस में भी खराबी को इंजेक्ट कर सकता है। यह सिस्टम में एक विशेष डिस्क ड्राइवर डालने से प्राप्त होता है जो डिस्क यूनिट से भेजे और प्राप्त किए गए डेटा में दोषों को इंजेक्ट कर सकता है। FTAPE में एक सिंथेटिक लोड यूनिट भी है जो मजबूती परीक्षण उद्देश्यों के लिए लोड की विशिष्ट मात्रा का अनुकरण कर सकती है।<ref>T. Tsai and R. Iyer, "FTAPE: A Fault Injection Tool to Measure Fault Tolerance," presented at Computing in aerospace, San Antonio; TX, 1995.</ref>
* एफटीएपीई (FTAPE) (फॉल्ट सहिष्णुता और प्रदर्शन मूल्यांकनकर्ता) न केवल मेमोरी और रजिस्टरों में, बल्कि डिस्क अभिगम में भी फॉल्ट को अंतःक्षेप कर सकता है। यह प्रणाली में एक विशेष डिस्क ड्राइवर डालने से प्राप्त किया जाता है जो डिस्क इकाई से भेजे और प्राप्त किए गए डेटा में फॉल्ट अंतःक्षेप कर सकता है। एफटीएपीई (FTAPE) में सिंथेटिक भार इकाई भी है जो दृढ़ता परीक्षण उद्देश्यों के लिए भार की विशिष्ट मात्रा का अनुकरण कर सकती है।<ref>T. Tsai and R. Iyer, "FTAPE: A Fault Injection Tool to Measure Fault Tolerance," presented at Computing in aerospace, San Antonio; TX, 1995.</ref>
* डॉक्टर (इंटीग्रेटेड सॉफ्टवेयर फॉल्ट इंजेक्शन एनवायरनमेंट) मेमोरी के इंजेक्शन की अनुमति देता है और दोषों को पंजीकृत करता है, साथ ही साथ नेटवर्क संचार दोष भी। यह टाइम-आउट, ट्रैप और कोड संशोधन के संयोजन का उपयोग करता है। टाइम-आउट ट्रिगर क्षणिक मेमोरी दोषों को इंजेक्ट करता है और ट्रैप इंजेक्षन ट्रांसिएंट एमुलेटेड हार्डवेयर विफलताओं, जैसे रजिस्टर भ्रष्टाचार। कोड संशोधन का उपयोग स्थायी दोषों को इंजेक्ट करने के लिए किया जाता है।<ref>S. Han, K. G. Shin, and H. A. Rosenberg, "DOCTOR: An IntegrateD SOftware Fault InjeCTiOn EnviRonment for Distributed Real-time Systems," presented at International Computer Performance and Dependability Symposium, Erlangen; Germany, 1995.</ref>
* डीओसीटीओआर (DOCTOR) (पर्यावरण में एकीकृत सॉफ्टवेयर फॉल्ट इंजेक्शन) मेमोरी के इंजेक्शन की अनुमति देता है और फॉल्टों को पंजीकृत करता है, साथ ही नेटवर्क संचार फॉल्टों को भी दर्ज करता है। यह मध्यांतर, जाल और कोड संशोधन के संयोजन का उपयोग करता है। मध्यांतर प्रेरक क्षणिक मेमोरी फॉल्टों को अंतःक्षेप करता है और जाल अंतःक्षेप अनुकरणीय हार्डवेयर विफलताओं, जैसे रजिस्टर अवमिश्रण।<ref>S. Han, K. G. Shin, and H. A. Rosenberg, "DOCTOR: An IntegrateD SOftware Fault InjeCTiOn EnviRonment for Distributed Real-time Systems," presented at International Computer Performance and Dependability Symposium, Erlangen; Germany, 1995.</ref>
* ऑर्केस्ट्रा एक स्क्रिप्ट-चालित फॉल्ट इंजेक्टर है जो नेटवर्क लेवल फॉल्ट इंजेक्शन के आसपास आधारित है। इसका प्राथमिक उपयोग वितरित प्रोटोकॉल की दोष-सहिष्णुता और समय विशेषताओं का मूल्यांकन और सत्यापन है। आर्केस्ट्रा को शुरू में मैक ऑपरेटिंग सिस्टम के लिए विकसित किया गया था और गलती इंजेक्टर द्वारा शुरू की गई विलंबता की भरपाई के लिए इस प्लेटफॉर्म की कुछ विशेषताओं का उपयोग करता है। इसे अन्य ऑपरेटिंग सिस्टम में भी सफलतापूर्वक पोर्ट किया गया है।<ref>S. Dawson, F. Jahanian, and T. Mitton, "ORCHESTRA: A Probing and Fault Injection Environment for Testing Protocol Implementations," presented at International Computer Performance and Dependability Symposium, Urbana-Champaign, USA, 1996.</ref>
* आर्केस्ट्रा एक स्क्रिप्ट-चालित फॉल्ट इंजेक्टर है जो नेटवर्क स्तर फॉल्ट इंजेक्शन के निकट आधारित है। इसका प्राथमिक उपयोग वितरित प्रोटोकॉल के दोष-सहिष्णुता और समय की विशेषताओं का मूल्यांकन और सत्यापन है। आर्केस्ट्रा को प्रारम्भ में मैक ऑपरेटिंग सिस्टम के लिए विकसित किया गया था और फॉल्ट इंजेक्टर द्वारा प्रारम्भ की गई विलंबता की क्षतिपूर्ति के लिए इस प्लेटफॉर्म की कुछ विशेषताओं का उपयोग करता है। इसे अन्य ऑपरेटिंग सिस्टम में भी सफलतापूर्वक पोर्ट किया गया है।<ref>S. Dawson, F. Jahanian, and T. Mitton, "ORCHESTRA: A Probing and Fault Injection Environment for Testing Protocol Implementations," presented at International Computer Performance and Dependability Symposium, Urbana-Champaign, USA, 1996.</ref>
* एक्ससेप्शन को कई आधुनिक प्रोसेसरों पर उपलब्ध उन्नत डिबगिंग सुविधाओं का लाभ उठाने के लिए डिज़ाइन किया गया है। यह लिखा गया है कि सिस्टम स्रोत में कोई संशोधन की आवश्यकता नहीं है और न ही सॉफ्टवेयर ट्रैप को सम्मिलित करने की आवश्यकता है, क्योंकि प्रोसेसर की अपवाद हैंडलिंग क्षमताएं फॉल्ट इंजेक्शन को ट्रिगर करती हैं। ये ट्रिगर विशिष्ट मेमोरी स्थानों तक पहुंच पर आधारित होते हैं। इस तरह की पहुंच या तो डेटा या निर्देशों को प्राप्त करने के लिए हो सकती है। इसलिए टेस्ट रन को सटीक रूप से पुन: पेश करना संभव है क्योंकि ट्रिगर्स को टाइमआउट के बजाय विशिष्ट घटनाओं से जोड़ा जा सकता है।<ref name="V. Carreira, D. Costa pp. 50"/>* ग्रिड-फिट (ग्रिड - फॉल्ट इंजेक्शन टेक्नोलॉजी)<ref>[http://wiki.grid-fit.org/ Grid-FIT Web-site] {{webarchive |url=https://web.archive.org/web/20080202042029/http://wiki.grid-fit.org/ |date=2 February 2008 }}</ref> फॉल्ट इंजेक्शन द्वारा ग्रिड सेवाओं का आकलन करने के लिए एक निर्भरता मूल्यांकन पद्धति और उपकरण है। ग्रिड-फिट को पहले के फॉल्ट इंजेक्टर WS-FIT से लिया गया है<ref>N. Looker, B. Gwynne, J. Xu, and M. Munro, "An Ontology-Based Approach for Determining the Dependability of Service-Oriented Architectures," in the proceedings of the 10th IEEE International Workshop on Object-oriented Real-time Dependable Systems, USA, 2005.</ref> जिसे अपाचे एक्सिस ट्रांसपोर्ट का उपयोग करके लागू की गई जावा वेब सेवाओं की ओर लक्षित किया गया था। ग्रिड-फिट एक नए फॉल्ट इंजेक्शन मैकेनिज्म का उपयोग करता है जो नेटवर्क-लेवल फॉल्ट इंजेक्शन को कोड इंसर्शन फॉल्ट इंजेक्शन के समान नियंत्रण का स्तर देने के लिए उपयोग करने की अनुमति देता है, जबकि कम इनवेसिव होता है।<ref>N. Looker, M. Munro, and J. Xu, "A Comparison of Network Level Fault Injection with Code Insertion," in the proceedings of the 29th IEEE International Computer Software and Applications Conference, Scotland, 2005.</ref>
* एक्ससेप्शन को कई आधुनिक प्रोसेसरों पर उपलब्ध उन्नत दोषमार्जन सुविधाओं का लाभ उठाने के लिए डिज़ाइन किया गया है। यह लिखा गया है कि प्रणाली स्रोत में कोई संशोधन की आवश्यकता नहीं है और न ही सॉफ्टवेयर जाल को सम्मिलित करने की आवश्यकता है, क्योंकि प्रोसेसर की अपवाद से प्रबंधन की क्षमता फॉल्ट इंजेक्शन को प्रेरित करती है। ये प्रेरक विशिष्ट मेमोरी स्थानों तक अभिगम पर आधारित होते हैं। इस तरह का अभिगम या तो डेटा या निर्देशों को प्राप्त करने के लिए हो सकता है। इसलिए परीक्षण चालन को सटीक रूप से पुन: उत्पन्न करना संभव है क्योंकि प्रेरक को मध्यांतर के स्थान पर विशिष्ट घटनाओं से जोड़ा जा सकता है।<ref name="V. Carreira, D. Costa pp. 50"/>
* LFI (लाइब्रेरी-लेवल फॉल्ट इंजेक्टर)<ref>[http://lfi.epfl.ch/ LFI Website]</ref> एक स्वचालित परीक्षण उपकरण सूट है, जिसका उपयोग नियंत्रित परीक्षण वातावरण में अनुकरण करने के लिए किया जाता है, असाधारण परिस्थितियाँ जिन्हें प्रोग्राम को रनटाइम पर संभालने की आवश्यकता होती है, लेकिन केवल इनपुट परीक्षण के माध्यम से जांचना आसान नहीं होता है। LFI स्वचालित रूप से साझा पुस्तकालयों द्वारा उजागर की गई त्रुटियों की पहचान करता है, प्रोग्राम बायनेरिज़ में संभावित त्रुटि पुनर्प्राप्ति कोड पाता है और साझा पुस्तकालयों और अनुप्रयोगों के बीच सीमा पर वांछित दोषों को इंजेक्ट करता है।
*ग्रिड-फिट (ग्रिड - फॉल्ट इंजेक्शन टेक्नोलॉजी)<ref>[http://wiki.grid-fit.org/ Grid-FIT Web-site] {{webarchive |url=https://web.archive.org/web/20080202042029/http://wiki.grid-fit.org/ |date=2 February 2008 }}</ref> फॉल्ट इंजेक्शन द्वारा ग्रिड सेवाओं का आकलन करने के लिए निर्भरता मूल्यांकन पद्धति और उपकरण है। ग्रिड-फिट पहले के फॉल्ट इंजेक्टर डब्ल्यूएस-फिट (WS-FIT) से लिया गया है,<ref>N. Looker, B. Gwynne, J. Xu, and M. Munro, "An Ontology-Based Approach for Determining the Dependability of Service-Oriented Architectures," in the proceedings of the 10th IEEE International Workshop on Object-oriented Real-time Dependable Systems, USA, 2005.</ref> जिसे अपाचे एक्सिस ट्रांसपोर्ट का उपयोग करके कार्यान्वित जावा वेब सेवाओं की ओर लक्षित किया गया था। ग्रिड-फिट एक नए फॉल्ट इंजेक्शन क्रियाविधि का उपयोग करता है जो नेटवर्क-स्तर फॉल्ट इंजेक्शन को कोड अंतर्वेशन फॉल्ट इंजेक्शन के समान नियंत्रण का स्तर देने के लिए उपयोग करने की अनुमति देता है, जबकि कम आक्रामक होता है।<ref>N. Looker, M. Munro, and J. Xu, "A Comparison of Network Level Fault Injection with Code Insertion," in the proceedings of the 29th IEEE International Computer Software and Applications Conference, Scotland, 2005.</ref>
*FIBlock (दोष इंजेक्शन ब्लॉक),<ref>{{Citation|last=Flatag|title=Flatag/FIBlock|date=2020-05-16|url=https://github.com/Flatag/FIBlock|access-date=2020-05-16}}</ref> एक उच्च-अनुकूलन योग्य सिमुलिंक ब्लॉक के रूप में कार्यान्वित एक मॉडल-आधारित गलती इंजेक्शन विधि। यह MATLAB सिमुलिंक मॉडल में इंजेक्शन का समर्थन करता है जो साइबर-भौतिक प्रणालियों जैसे सेंसर, कंप्यूटिंग हार्डवेयर और नेटवर्क के आवश्यक विषम घटकों के विशिष्ट दोष हैं। अतिरिक्त ट्रिगर इनपुट और ब्लॉक के आउटपुट सशर्त दोषों के मॉडलिंग को सक्षम करते हैं। इसके अलावा, ट्रिगर सिग्नल से जुड़े दो या अधिक FIBlocks तथाकथित श्रृंखलित त्रुटियों को मॉडल कर सकते हैं।
* एलएफआई (LFI) (लाइब्रेरी-स्तर फॉल्ट इंजेक्टर)<ref>[http://lfi.epfl.ch/ LFI Website]</ref> स्वचालित परीक्षण उपकरण अनुगामी है, जिसका उपयोग नियंत्रित परीक्षण परिवेश में अनुकरण करने के लिए किया जाता है, असाधारण स्थितियाँ जिन्हें प्रोग्राम को कार्यावधि पर संभालने की आवश्यकता होती है, लेकिन केवल इनपुट परीक्षण के माध्यम से जांचना आसान नहीं होता है। एलएफआई (LFI) स्वचालित रूप से साझा लाइब्रेरियों द्वारा अनावृत की गई त्रुटियों की पहचान करता है, प्रोग्राम बाइनरी में संभावित त्रुटि पुनर्प्राप्ति कोड पाता है और साझा लाइब्रेरियों और अनुप्रयोगों के बीच सीमा पर वांछित दोषों को अंतःक्षेप करता है।
*एफआईब्लॉक (FIBlock) (फॉल्ट इंजेक्शन ब्लॉक),<ref>{{Citation|last=Flatag|title=Flatag/FIBlock|date=2020-05-16|url=https://github.com/Flatag/FIBlock|access-date=2020-05-16}}</ref> मॉडल-आधारित फॉल्ट इंजेक्शन विधि है जिसे अत्यधिक अनुकूलन योग्य सिमुलिंक ब्लॉक के रूप में कार्यान्वित किया जाता है। यह एमएटीएलएबी (MATLAB) सिमुलिंक मॉडल में इंजेक्शन का समर्थन करता है जो साइबर-भौतिक प्रणालियों जैसे सेंसर, कंप्यूटिंग हार्डवेयर और नेटवर्क के आवश्यक विषम घटकों के विशिष्ट फॉल्ट हैं। अतिरिक्त प्रेरक इनपुट और ब्लॉक के आउटपुट सशर्त फॉल्टों के मॉडलिंग को सक्षम करते हैं। इसके अलावा, प्रेरक संकेत से जुड़े दो या अधिक एफआईब्लॉक (FIBlocks) तथाकथित श्रृंखलित त्रुटियों को मॉडल कर सकते हैं।


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


* सुरक्षा से परे तूफान<ref>[http://www.beyondsecurity.com/black-box-testing.html beSTORM product information]</ref> एक वाणिज्यिक सॉफ्टवेयर परीक्षण है # परीक्षण दृष्टिकोण सॉफ्टवेयर सुरक्षा विश्लेषण उपकरण। इसका उपयोग अक्सर मूल उपकरण निर्माताओं द्वारा विकास के दौरान किया जाता है, लेकिन कार्यान्वयन से पहले उत्पादों के परीक्षण के लिए भी इसका उपयोग किया जाता है, विशेष रूप से एयरोस्पेस, बैंकिंग और रक्षा में। beSTORM की परीक्षण प्रक्रिया सबसे संभावित हमले परिदृश्यों से शुरू होती है, फिर संपूर्ण पीढ़ी आधारित फ़ज़ परीक्षण का सहारा लेती है। beSTORM म्यूटेशन-आधारित हमलों सहित सामान्य प्रोटोकॉल और 'ऑटो लर्न' नए या मालिकाना प्रोटोकॉल के लिए मॉड्यूल प्रदान करता है। हाइलाइट्स: बाइनरी और टेक्स्टुअल एनालिसिस, कस्टम प्रोटोकॉल टेस्टिंग, डिबगिंग और स्टैक ट्रेसिंग, डेवलपमेंट लैंग्वेज इंडिपेंडेंट, सीवीई कंप्लेंट।
* बियॉन्ड सिक्योरिटी बीस्टॉर्म (beSTORM)<ref>[http://www.beyondsecurity.com/black-box-testing.html beSTORM product information]</ref> एक वाणिज्यिक ब्लैक बॉक्स सॉफ्टवेयर सुरक्षा विश्लेषण उपकरण है। इसका उपयोग प्रायः मूल उपकरण निर्माताओं द्वारा विकास के दौरान किया जाता है, लेकिन कार्यान्वयन से पहले उत्पादों के परीक्षण के लिए भी इसका उपयोग किया जाता है, विशेष रूप से एयरोस्पेस, बैंकिंग और रक्षा में। बीस्टॉर्म (beSTORM) की परीक्षण प्रक्रिया सबसे संभावित आक्रमण परिदृश्यों के साथ प्रारम्भ होती है, फिर संपूर्ण पीढ़ी आधारित अस्पष्टता का सहारा लेती है। बीस्टॉर्म (beSTORM) उत्परिवर्तन-आधारित आक्रमणों सहित सामान्य प्रोटोकॉल और 'स्वतः सीखना' नए या स्वामित्व प्रोटोकॉल के लिए मॉड्यूल प्रदान करता है। प्रमुखताएँ- बाइनरी और शाब्दिक विश्लेषण, कस्टम प्रोटोकॉल परीक्षण, दोषमार्जन और स्टैक अनुरेखण, विकास भाषा स्वतंत्र, सीवीई (CVE) अनुवर्ती।
* ExhaustiF एक व्यावसायिक सॉफ्टवेयर टूल है जिसका उपयोग सॉफ्टवेयर-इंटेंसिव सिस्टम की विश्वसनीयता में सुधार के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन (SWIFI) पर आधारित [[ग्रे बॉक्स परीक्षण]] के लिए किया जाता है। उपकरण का उपयोग किसी भी सॉफ़्टवेयर विकास जीवनचक्र के सिस्टम एकीकरण और सिस्टम परीक्षण चरणों के दौरान किया जा सकता है, साथ ही साथ अन्य परीक्षण उपकरणों का पूरक भी हो सकता है। ExhaustiF सॉफ्टवेयर और हार्डवेयर दोनों में दोषों को इंजेक्ट करने में सक्षम है। सॉफ़्टवेयर में सिम्युलेटेड दोषों को इंजेक्ट करते समय, ExhaustiF निम्न प्रकार के दोष प्रदान करता है: चर भ्रष्टाचार और प्रक्रिया भ्रष्टाचार। हार्डवेयर फॉल्ट इंजेक्शन के लिए कैटलॉग में मेमोरी (I/O, RAM) और CPU (इंटीजर यूनिट, फ्लोटिंग यूनिट) में दोष शामिल हैं। आरटीईएमएस/ईआरसी32, आरटीईएमएस/पेंटियम, लिनक्स/पेंटियम और एमएस-विंडोज/पेंटियम के लिए अलग-अलग संस्करण उपलब्ध हैं।<ref>[http://www.exhaustif.es ExhaustiF SWIFI Tool Site]</ref>
* एग्जॉस्टीएफ (ExhaustiF) सॉफ्टवेयर-गहन प्रणालियों की विश्वसनीयता में सुधार के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन (SWIFI) पर आधारित [[ग्रे बॉक्स परीक्षण]] के लिए उपयोग किया जाने वाला एक व्यावसायिक सॉफ्टवेयर उपकरण है। उपकरण का उपयोग किसी भी सॉफ़्टवेयर विकास जीवनचक्र के प्रणाली एकीकरण और प्रणाली परीक्षण चरणों के दौरान किया जा सकता है, साथ ही साथ अन्य परीक्षण उपकरणों का पूरक भी हो सकता है। एग्जॉस्टीएफ (ExhaustiF) सॉफ्टवेयर और हार्डवेयर दोनों में दोषों को अंतःक्षेप करने में सक्षम है। सॉफ़्टवेयर में अनुकारित फॉल्टों को अंतःक्षेप करते समय, एग्जॉस्टीएफ (ExhaustiF) निम्नलिखित प्रकार के फॉल्ट प्रदान करता है- परिवर्तनीय अवमिश्रण और प्रक्रिया अवमिश्रण। हार्डवेयर फॉल्ट इंजेक्शन के लिए सूची में मेमोरी (I/O, RAM) और सीपीयू (CPU) (पूर्णांक इकाई, अस्थिर इकाई) में फॉल्ट सम्मिलित हैं। आरटीईएमएस/ईआरसी32 (RTEMS/ERC32), आरटीईएमएस/पेंटियम (RTEMS/Pentium), लिनक्स/पेंटियम और एमएस (MS)-विंडोज/पेंटियम के लिए अलग-अलग संस्करण उपलब्ध हैं।<ref>[http://www.exhaustif.es ExhaustiF SWIFI Tool Site]</ref>
* होलोडेक<ref>[http://www.securityinnovation.com/holodeck/index.shtml Holodeck product overview] {{webarchive |url=https://web.archive.org/web/20081013052429/http://www.securityinnovation.com/holodeck/index.shtml |date=13 October 2008 }}</ref> सिक्योरिटी इनोवेशन द्वारा विकसित एक परीक्षण उपकरण है जो विंडोज अनुप्रयोगों और सेवाओं के लिए वास्तविक दुनिया के अनुप्रयोग और सिस्टम त्रुटियों का अनुकरण करने के लिए दोष इंजेक्शन का उपयोग करता है। होलोडेक के ग्राहकों में माइक्रोसॉफ्ट, सिमेंटेक, ईएमसी और एडोब सहित कई प्रमुख व्यावसायिक सॉफ्टवेयर विकास कंपनियां शामिल हैं। यह एक नियंत्रित, दोहराने योग्य वातावरण प्रदान करता है जिसमें नाजुकता और सुरक्षा परीक्षण के लिए एरर-हैंडलिंग कोड और एप्लिकेशन अटैक सतहों का विश्लेषण और डिबग किया जाता है। यह फ़ाइल और नेटवर्क फ़ज़िंग दोषों के साथ-साथ अन्य संसाधनों, सिस्टम और कस्टम-परिभाषित दोषों की एक विस्तृत श्रृंखला का अनुकरण करता है। यह कोड का विश्लेषण करता है और परीक्षण योजनाओं की सिफारिश करता है और फ़ंक्शन कॉल लॉगिंग, एपीआई इंटरसेप्शन, तनाव परीक्षण, कोड कवरेज विश्लेषण और कई अन्य एप्लिकेशन सुरक्षा आश्वासन कार्य भी करता है।
* होलोडेक<ref>[http://www.securityinnovation.com/holodeck/index.shtml Holodeck product overview] {{webarchive |url=https://web.archive.org/web/20081013052429/http://www.securityinnovation.com/holodeck/index.shtml |date=13 October 2008 }}</ref> सिक्योरिटी इनोवेशन द्वारा विकसित एक परीक्षण उपकरण है जो विंडोज अनुप्रयोगों और सेवाओं के लिए वास्तविक दुनिया के अनुप्रयोग और प्रणाली त्रुटियों का अनुकरण करने के लिए फॉल्ट इंजेक्शन का उपयोग करता है। होलोडेक के ग्राहकों में माइक्रोसॉफ्ट, सिमेंटेक, ईएमसी (EMC) और एडोब सहित कई प्रमुख व्यावसायिक सॉफ्टवेयर विकास कंपनियां सम्मिलित हैं। यह नियंत्रित, दोहराने योग्य वातावरण प्रदान करता है जिसमें भंगुरता और सुरक्षा परीक्षण के लिए त्रुटि-प्रबंधन कोड और एप्लिकेशन अटैक सतहों का विश्लेषण और दोषमार्जन किया जाता है। यह फ़ाइल और नेटवर्क अस्पष्टता फॉल्टों के साथ-साथ अन्य संसाधनों, प्रणाली और कस्टम-परिभाषित फॉल्टों की एक विस्तृत श्रृंखला का अनुकरण करता है। यह कोड का विश्लेषण करता है और परीक्षण योजनाओं का अनुग्रह करता है और फलन कॉल लॉगिंग, एपीआई (API) अवरोधन, तनाव परीक्षण, कोड व्याप्ति विश्लेषण और कई अन्य एप्लिकेशन सुरक्षा आश्वासन कार्य भी करता है।
* प्रूफडॉक के कैओस इंजीनियरिंग प्लेटफॉर्म का फोकस [[माइक्रोसॉफ्ट एज़्योर]] क्लाउड प्लेटफॉर्म पर है। यह इंफ्रास्ट्रक्चर स्तर, प्लेटफॉर्म स्तर और एप्लिकेशन स्तर पर विफलताओं को इंजेक्ट करता है।
* प्रूफ़डॉक के कैओस इंजीनियरिंग प्लेटफ़ॉर्म का फोकस [[माइक्रोसॉफ्ट एज़्योर|माइक्रोसॉफ्ट एज्यूर]] क्लाउड प्लेटफॉर्म पर है। यह अवसंरचना स्तर, प्लेटफॉर्म स्तर और एप्लिकेशन स्तर पर विफलताओं को अंतःक्षेप करता है।  
* ग्रेमलिन एक फेल्योर-एज-ए-सर्विस प्लेटफॉर्म है जो कैओस इंजीनियरिंग के अभ्यास के माध्यम से कंपनियों को अधिक [[लचीलापन (नेटवर्क)]] सिस्टम बनाने में मदद करता है। ग्रेमलिन तीन श्रेणियों में सबसे आम विफलताओं को फिर से बनाता है - [[कम्प्यूटेशनल संसाधन]], [[दूरसंचार नेटवर्क]], और [[राज्य (कंप्यूटर विज्ञान)]] - अज्ञात दोषों को सक्रिय रूप से पहचानने और ठीक करने के लिए सिस्टम में विफलता को सुरक्षित रूप से इंजेक्ट करता है।
* ग्रेमलिन एक "सेवा के रूप में विफलता" प्लेटफॉर्म है जो कंपनियों को अव्यवस्था अभियांत्रिकी के अभ्यास के माध्यम से अधिक [[लचीलापन (नेटवर्क)|प्रत्यास्थ]] प्रणाली बनाने में सहायता करता है। ग्रेमलिन अज्ञात फॉल्टों को सक्रिय रूप से पहचानने और ठीक करने के लिए प्रणाली में विफलता को सुरक्षित रूप से अंतःक्षेप करके तीन श्रेणियों [[कम्प्यूटेशनल संसाधन|संसाधन]], [[दूरसंचार नेटवर्क|नेटवर्क]] और [[राज्य (कंप्यूटर विज्ञान)|अवस्था]] में सबसे सामान्य विफलताओं को फिर से बनाता है।
* [[कोडनोमिकॉन]] डिफेंसिक्स<ref>[http://www.codenomicon.com/defensics/ Codenomicon Defensics product overview]</ref> एक ब्लैक-बॉक्स टेस्ट ऑटोमेशन फ्रेमवर्क है जो नेटवर्क प्रोटोकॉल, एपीआई इंटरफेस, फाइलों और एक्सएमएल संरचनाओं सहित 150 से अधिक विभिन्न इंटरफेस में गलती इंजेक्शन करता है। सॉफ्टवेयर फॉल्ट इंजेक्शन के क्षेत्र में औलू विश्वविद्यालय में पांच साल के शोध के बाद वाणिज्यिक उत्पाद 2001 में लॉन्च किया गया था। उपयोग किए गए फ़ज़िंग सिद्धांतों की व्याख्या करने वाला एक शोध कार्य VTT द्वारा प्रकाशित किया गया था, जो PROTOS संघ के सदस्यों में से एक है।<ref name="vtt.fi"/>* म्यू सेवा विश्लेषक<ref>[http://www.mudynamics.com/products/overview.html Mu Service Analyzer]</ref> [[गतिकी में]] द्वारा विकसित एक वाणिज्यिक सेवा परीक्षण उपकरण है।<ref>[http://www.mudynamics.com/ Mu Dynamics, Inc.]</ref> म्यू सर्विस एनालाइज़र सॉफ्टवेयर टेस्टिंग#टेस्टिंग अप्रोच और सॉफ्टवेयर टेस्टिंग#टेस्टिंग अप्रोच टेस्टिंग करता है सेवाओं का उनके एक्सपोज्ड सॉफ्टवेयर इंटरफेस के आधार पर, डिनायल-ऑफ-सर्विस सिमुलेशन, सर्विस-लेवल ट्रैफिक वेरिएशन (अमान्य इनपुट उत्पन्न करने के लिए) और ज्ञात के रिप्ले का उपयोग करके भेद्यता ट्रिगर। ये सभी तकनीकें इनपुट सत्यापन और त्रुटि से निपटने का अभ्यास करती हैं और सॉफ्टवेयर सिस्टम पर परीक्षण यातायात के प्रभावों को चिह्नित करने के लिए वैध प्रोटोकॉल मॉनिटर और एसएनएमपी के साथ संयोजन में उपयोग की जाती हैं। म्यू सर्विस एनालाइज़र उपयोगकर्ताओं को किसी भी उजागर प्रोटोकॉल कार्यान्वयन के लिए सिस्टम-स्तरीय विश्वसनीयता, उपलब्धता और सुरक्षा मेट्रिक्स को स्थापित करने और ट्रैक करने की अनुमति देता है। यह उपकरण 2005 से उत्तरी अमेरिका, एशिया और यूरोप के ग्राहकों द्वारा विशेष रूप से नेटवर्क ऑपरेटरों (और उनके विक्रेताओं) और औद्योगिक नियंत्रण प्रणालियों ([[नाजूक आधारभूत श्रंचना]] सहित) के महत्वपूर्ण बाजारों में उपलब्ध है।
* [[कोडनोमिकॉन|कोडेनोमिकॉन]] डिफेंसिक्स<ref>[http://www.codenomicon.com/defensics/ Codenomicon Defensics product overview]</ref> एक ब्लैक-बॉक्स परीक्षण स्वचालन फ्रेमवर्क है जो नेटवर्क प्रोटोकॉल, एपीआई (API) इंटरफेस, फाइलों और एक्सएमएल (XML) संरचनाओं सहित 150 से अधिक विभिन्न इंटरफेस में फॉल्ट इंजेक्शन करता है। सॉफ्टवेयर फॉल्ट इंजेक्शन के क्षेत्र में औलू विश्वविद्यालय में पांच साल के शोध के बाद वाणिज्यिक उत्पाद 2001 में लॉन्च किया गया था। उपयोग किए गए अस्पष्टता सिद्धांतों की व्याख्या करने वाला शोध कार्य वीटीटी (VTT) द्वारा प्रकाशित किया गया था, जो पीआरओटीओएस (PROTOS) संघ के सदस्यों में से एक है।<ref name="vtt.fi"/>  
* अपवाद<ref>[http://www.criticalsoftware.com/en/products/p/xception Xception Web Site]</ref> क्रिटिकल सॉफ्टवेयर एसए द्वारा विकसित एक व्यावसायिक सॉफ्टवेयर टूल है<ref>[http://www.criticalsoftware.com Critical Software SA]</ref> सॉफ्टवेयर टेस्टिंग # टेस्टिंग अप्रोच और सॉफ्टवेयर टेस्टिंग # टेस्टिंग एप्रोच टेस्टिंग ऑन सॉफ्टवेयर फॉल्ट इंजेक्शन (SWIFI) और स्कैन चेन फॉल्ट इंजेक्शन (SCIFI) के लिए इस्तेमाल किया जाता है। एक्ससेप्शन उपयोगकर्ताओं को अपने सिस्टम की मजबूती या उनके सिर्फ एक हिस्से का परीक्षण करने की अनुमति देता है, जिससे आर्किटेक्चर के एक विशिष्ट सेट के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन और हार्डवेयर फॉल्ट इंजेक्शन दोनों की अनुमति मिलती है। उपकरण का उपयोग 1999 से बाजार में किया गया है और इसके ग्राहक अमेरिकी, एशियाई और यूरोपीय बाजारों में हैं, विशेष रूप से एयरोस्पेस और दूरसंचार बाजार के महत्वपूर्ण बाजार में। पूर्ण एक्ससेप्शन उत्पाद परिवार में शामिल हैं: ए) मुख्य एक्ससेप्शन टूल, सॉफ्टवेयर इम्प्लीमेंटेड फॉल्ट इंजेक्शन (एसडब्ल्यूआईएफआई) तकनीक में अत्याधुनिक लीडर; बी) ईज़ी फॉल्ट डेफिनिशन (ईएफडी) और एक्सट्रैक्ट (एक्सेप्शन एनालिसिस टूल) ऐड-ऑन टूल्स; c) स्कैन चेन और पिन-लेवल फोर्सिंग के लिए फॉल्ट इंजेक्शन एक्सटेंशन के साथ एक्सटेंडेड एक्ससेप्शन टूल (एक्ससेप्शन)।
*म्यू सेवा विश्लेषक<ref>[http://www.mudynamics.com/products/overview.html Mu Service Analyzer]</ref> म्यू [[गतिकी में|डायनेमिक्स]] द्वारा विकसित एक वाणिज्यिक सेवा परीक्षण उपकरण है।<ref>[http://www.mudynamics.com/ Mu Dynamics, Inc.]</ref> म्यू सर्विस विश्लेषक सेवाओं के ब्लैक बॉक्स और व्हाइट बॉक्स का परीक्षण करता है, जो उनके अनावृत सॉफ़्टवेयर इंटरफेस के आधार पर, सेवा से वंचित अनुकरण, सर्विस-स्तर ट्रैफ़िक विविधताओं (अमान्य इनपुट उत्पन्न करने के लिए) और ज्ञात भेद्यता प्रेरकों के पुनर्प्रदर्शन का उपयोग करता है। ये सभी तकनीकें इनपुट सत्यापन और त्रुटि से प्रबंधन का अभ्यास करती हैं और सॉफ्टवेयर प्रणाली पर परीक्षण ट्रैफ़िक के प्रभावों को चिह्नित करने के लिए वैध प्रोटोकॉल मॉनिटर और एसएनएमपी (SNMP) के संयोजन में उपयोग की जाती हैं। म्यू सर्विस विश्लेषक उपयोगकर्ताओं को किसी भी अनावृत प्रोटोकॉल कार्यान्वयन के लिए प्रणालीय-स्तरीय विश्वसनीयता, उपलब्धता और सुरक्षा मेट्रिक्स को स्थापित करने और ट्रैक करने की अनुमति देता है। यह उपकरण 2005 से उत्तरी अमेरिका, एशिया और यूरोप के ग्राहकों द्वारा विशेष रूप से नेटवर्क ऑपरेटरों (और उनके विक्रेताओं) और औद्योगिक नियंत्रण प्रणालियों ([[नाजूक आधारभूत श्रंचना|समीक्षात्मक आधारभूत संरचना सहित]]) के महत्वपूर्ण बाजारों में उपलब्ध है।
 
* एक्ससेप्शन (Xception)<ref>[http://www.criticalsoftware.com/en/products/p/xception Xception Web Site]</ref> समीक्षात्मक सॉफ्टवेयर एसए (SA) द्वारा विकसित एक व्यावसायिक सॉफ्टवेयर उपकरण है,<ref>[http://www.criticalsoftware.com Critical Software SA]</ref> जिसका उपयोग सॉफ्टवेयर फॉल्ट इंजेक्शन (स्विफी (SWIFI)) और स्कैन चेन फॉल्ट इंजेक्शन (एससीआईएफआई (SCIFI)) पर आधारित ब्लैक बॉक्स और व्हाइट बॉक्स परीक्षण के लिए किया जाता है। एक्ससेप्शन (Xception) उपयोगकर्ताओं को अपने प्रणाली की दृढ़ता या उनके सिर्फ एक भाग का परीक्षण करने की अनुमति देता है, जिससे आर्किटेक्चर के एक विशिष्ट अनुक्रम के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन और हार्डवेयर फॉल्ट इंजेक्शन दोनों की अनुमति मिलती है। उपकरण का उपयोग 1999 से बाजार में किया गया है और इसके ग्राहक अमेरिकी, एशियाई और यूरोपीय बाजारों में हैं, विशेष रूप से एयरोस्पेस और दूरसंचार बाजार के महत्वपूर्ण बाजार में। पूर्ण एक्ससेप्शन (Xception) उत्पाद परिवार में सम्मिलित हैं- ए) मुख्य एक्ससेप्शन (Xception) उपकरण, सॉफ्टवेयर कार्यान्वित फॉल्ट इंजेक्शन (एसडब्ल्यूआईएफआई (SWIFI)) तकनीक में अत्याधुनिक अग्रणी, बी) आसान फॉल्ट परिभाषा (ईएफडी (FED)) और एक्सट्रैक्ट (एक्ससेप्शन (Xception) विश्लेषण उपकरण) ऐड-ऑन उपकरण, c) स्कैन चेन और पिन-स्तर फोर्सिंग के लिए फॉल्ट इंजेक्शन विस्तारण के साथ विस्तृत एक्ससेप्शन (Xception) उपकरण (एक्ससेप्शन (eXception))।
=== पुस्तकालय ===
* [http://blitiri.com.ar/p/libfiu/ libfiu] (यूजरस्पेस में दोष इंजेक्शन), सी लाइब्रेरी स्रोत कोड को संशोधित किए बिना POSIX रूटीन में दोषों का अनुकरण करने के लिए। कार्यक्रम के किसी भी बिंदु पर रन-टाइम पर मनमाना दोषों का अनुकरण करने के लिए एक एपीआई शामिल है।
* [http://testapi.codeplex.com TestApi] एक साझा-स्रोत एपीआई लाइब्रेरी है, जो फॉल्ट इंजेक्शन परीक्षण के साथ-साथ .NET अनुप्रयोगों के लिए अन्य परीक्षण प्रकारों, डेटा-संरचनाओं और एल्गोरिदम के लिए सुविधाएं प्रदान करती है।
* [https://github.com/fraunhoferfokus/Fuzzino Fuzzino] एक ओपन सोर्स लाइब्रेरी है, जो एक प्रकार के विनिर्देश और/या मान्य मानों से उत्पन्न होने वाले फ़ज़िंग ह्यूरिस्टिक्स का एक समृद्ध सेट प्रदान करता है।
* [https://github.com/trailofbits/krf krf] एक खुला स्रोत लिनक्स कर्नेल मॉड्यूल है जो सिस्टम कॉल के लिए संभावित रूप से विफलता मान वापस करने के लिए एक विन्यास योग्य सुविधा प्रदान करता है। आगे [https://blog.trailofbits.com/2019/01/17/how-to-write-a-rootkit-without-really-trying/ ब्लॉग पोस्ट] में समझाया गया है।
* [https://github.com/nestlabs/nlfaultinjection nlfaultinjection] को एक सरल, पोर्टेबल फॉल्ट इंजेक्शन फ्रेमवर्क प्रदान करने के लिए डिज़ाइन किया गया है, जो लगभग किसी भी सिस्टम पर चलने में सक्षम है, चाहे वह कितना भी सीमित क्यों न हो और केवल C मानक लाइब्रेरी पर निर्भर करता है।


== कार्यात्मक गुणों या परीक्षण मामलों में दोष इंजेक्शन ==
=== लाइब्रेरी ===
* [http://blitiri.com.ar/p/libfiu/ libfiu] (यूजरस्पेस में फॉल्ट इंजेक्शन), सी (C) लाइब्रेरी स्रोत कोड को संशोधित किए बिना पीओेएसआईएक्स (POSIX) सामान्य में दोषों का अनुकरण करने के लिए। प्रोग्राम के किसी भी बिंदु पर कार्यावधि पर मनमाने ढंग से फॉल्टों को अनुकरण करने के लिए एक एपीआई (API) सम्मिलित है।
*[http://testapi.codeplex.com TestApi] साझा-स्रोत एपीआई (API) लाइब्रेरी है, जो फॉल्ट इंजेक्शन परीक्षण के साथ-साथ अन्य परीक्षण प्रकारों, डेटा-संरचनाओं और .NET अनुप्रयोगों के लिए एल्गोरिदम के लिए सुविधाएं प्रदान करती है।
* [https://github.com/fraunhoferfokus/Fuzzino Fuzzino] मुक्त स्रोत लाइब्रेरी है, जो फ़ज़िंग स्वतः शोध प्रणाली का समृद्ध अनुक्रम प्रदान करता है जो एक प्रकार के विनिर्देश और/या मान्य मानों से उत्पन्न होते हैं।
* [https://github.com/trailofbits/krf krf] मुक्त स्रोत लिनक्स कर्नेल मॉड्यूल है जो प्रणाली कॉल के लिए संभावित रूप से विफलता मान वापस करने के लिए विन्यास योग्य सुविधा प्रदान करता है। [https://blog.trailofbits.com/2019/01/17/how-to-write-a-rootkit-without-really-trying/ ब्लॉग पोस्ट] में आगे बताया गया है।
* [https://github.com/nestlabs/nlfaultinjection nlfaultinjection] को एक साधारण, पोर्टेबल फॉल्ट इंजेक्शन फ्रेमवर्क प्रदान करने के लिए डिज़ाइन किया गया है, जो लगभग किसी भी प्रणाली पर चलने में सक्षम है, चाहे वह कितना भी विवश क्यों न हो और केवल सी (C) मानक लाइब्रेरी पर निर्भर करता है।


पारंपरिक उत्परिवर्तन परीक्षण के विपरीत जहां उत्परिवर्ती दोष उत्पन्न होते हैं और मॉडल के कोड विवरण में इंजेक्ट किए जाते हैं, मॉडल कोड के बजाय सीधे मॉडल गुणों के लिए नए परिभाषित उत्परिवर्तन ऑपरेटरों की एक श्रृंखला के आवेदन की भी जांच की गई है।<ref>{{Cite book|doi=10.1109/DSD.2011.57|isbn=978-1-4577-1048-3|chapter=Mutant Fault Injection in Functional Properties of a Model to Improve Coverage Metrics|title=2011 14th Euromicro Conference on Digital System Design|year=2011|last1=Abbasinasab|first1=Ali|last2=Mohammadi|first2=Mehdi|last3=Mohammadi|first3=Siamak|last4=Yanushkevich|first4=Svetlana|last5=Smith|first5=Michael|s2cid=15992130|pages=422–425}}</ref> उत्परिवर्ती गुण जो प्रारंभिक गुणों (या परीक्षण मामलों) से उत्पन्न होते हैं और मॉडल चेकर द्वारा मान्य किए जाते हैं, उन्हें नए गुणों के रूप में माना जाना चाहिए जो प्रारंभिक सत्यापन प्रक्रिया के दौरान छूट गए हैं। इसलिए, इन नई पहचान की गई संपत्तियों को संपत्तियों की मौजूदा सूची में जोड़ने से औपचारिक सत्यापन के कवरेज मीट्रिक में सुधार होता है और इसके परिणामस्वरूप एक अधिक विश्वसनीय डिजाइन तैयार होता है।
== कार्यात्मक गुणों या परीक्षण स्थितियोंं में फॉल्ट इंजेक्शन ==


== गलती इंजेक्शन का आवेदन ==
पारंपरिक उत्परिवर्तन परीक्षण के विपरीत जहां उत्परिवर्ती फॉल्ट उत्पन्न होते हैं और मॉडल के कोड विवरण में इंजेक्ट किए जाते हैं, मॉडल कोड के स्थान पर सीधे मॉडल गुणों के लिए नए परिभाषित उत्परिवर्तन ऑपरेटरों की एक श्रृंखला के अनुप्रयोग की भी जांच की गई है।<ref>{{Cite book|doi=10.1109/DSD.2011.57|isbn=978-1-4577-1048-3|chapter=Mutant Fault Injection in Functional Properties of a Model to Improve Coverage Metrics|title=2011 14th Euromicro Conference on Digital System Design|year=2011|last1=Abbasinasab|first1=Ali|last2=Mohammadi|first2=Mehdi|last3=Mohammadi|first3=Siamak|last4=Yanushkevich|first4=Svetlana|last5=Smith|first5=Michael|s2cid=15992130|pages=422–425}}</ref> उत्परिवर्ती गुण जो प्रारंभिक गुणों (या परीक्षण स्थितियों) से उत्पन्न होते हैं और मॉडल चेकर द्वारा मान्य किए जाते हैं, उन्हें नए गुणों के रूप में माना जाना चाहिए जो प्रारंभिक सत्यापन प्रक्रिया के दौरान छूट गए हैं। इसलिए, इन नई पहचान किए गए गुणों को गुणों की मौजूदा सूची में जोड़ने से औपचारिक सत्यापन के व्याप्ति मीट्रिक में सुधार होता है और इसके परिणामस्वरूप अधिक विश्वसनीय डिजाइन तैयार होता है।


दोष इंजेक्शन कई रूप ले सकता है। उदाहरण के लिए [[ऑपरेटिंग सिस्टम]] के परीक्षण में, गलती इंजेक्शन अक्सर ड्राइवर (कर्नेल (कंप्यूटर साइंस) -मोड सॉफ़्टवेयर) द्वारा किया जाता है जो सिस्टम कॉल (कर्नेल में कॉल) को रोकता है और कुछ कॉलों के लिए यादृच्छिक रूप से विफलता लौटाता है। इस प्रकार का दोष इंजेक्शन निम्न-स्तरीय उपयोगकर्ता-मोड सॉफ़्टवेयर के परीक्षण के लिए उपयोगी है। उच्च स्तर के सॉफ़्टवेयर के लिए, विभिन्न विधियाँ दोषों को इंजेक्ट करती हैं। [[प्रबंधित कोड]] में, [[इंस्ट्रूमेंटेशन (कंप्यूटर प्रोग्रामिंग)]] का उपयोग करना सामान्य है। हालांकि गलती इंजेक्शन हाथ से किया जा सकता है, गलती इंजेक्शन की प्रक्रिया को स्वचालित करने के लिए कई गलती इंजेक्शन उपकरण मौजूद हैं।<ref>N. Looker, M. Munro, and J. Xu, "Simulating Errors in Web Services," International Journal of Simulation Systems, Science & Technology, vol. 5, 2004.</ref>
== फॉल्ट इंजेक्शन का अनुप्रयोग ==
उस स्तर के लिए [[एपीआई]] की जटिलता के आधार पर जहां दोष इंजेक्ट किए जाते हैं, गलती इंजेक्शन परीक्षणों को अक्सर झूठी सकारात्मकता की संख्या को कम करने के लिए सावधानीपूर्वक डिज़ाइन किया जाना चाहिए। यहां तक ​​कि एक अच्छी तरह से डिज़ाइन किया गया दोष इंजेक्शन परीक्षण भी कभी-कभी ऐसी स्थिति उत्पन्न कर सकता है जो सॉफ़्टवेयर के सामान्य संचालन में असंभव है। उदाहरण के लिए, कल्पना कीजिए कि दो एपीआई फ़ंक्शन (कंप्यूटर साइंस) हैं, <code>Commit</code> और <code>PrepareForCommit</code>, जैसे कि अकेले, इनमें से प्रत्येक कार्य संभवतः विफल हो सकता है, लेकिन यदि <code>PrepareForCommit</code> कॉल किया जाता है और सफल होता है, बाद की कॉल <code>Commit</code> सफल होने की गारंटी है। अब निम्नलिखित कोड पर विचार करें:


<वाक्यविन्यास प्रकाश लैंग = सी>
फॉल्ट इंजेक्शन कई रूप ले सकता है। उदाहरण के लिए [[ऑपरेटिंग सिस्टम]] के परीक्षण में, फॉल्ट इंजेक्शन प्रायः ड्राइवर (कर्नेल-मोड सॉफ़्टवेयर) द्वारा किया जाता है जो प्रणाली कॉल (कर्नेल में कॉल) को रोकता है और कुछ कॉलों के लिए यादृच्छिक रूप से विफलता लौटाता है। इस प्रकार का फॉल्ट इंजेक्शन निम्न-स्तरीय उपयोगकर्ता-मोड सॉफ़्टवेयर के परीक्षण के लिए उपयोगी है। उच्च स्तर के सॉफ़्टवेयर के लिए, विभिन्न विधियाँ फॉल्टों को अंतःक्षेप करती हैं। [[प्रबंधित कोड]] में, [[इंस्ट्रूमेंटेशन (कंप्यूटर प्रोग्रामिंग)|उपकरण]] का उपयोग करना सामान्य है। हालांकि फॉल्ट इंजेक्शन हाथ से किया जा सकता है, फॉल्ट इंजेक्शन की प्रक्रिया को स्वचालित करने के लिए कई फॉल्ट इंजेक्शन उपकरण उपस्थित हैं।<ref>N. Looker, M. Munro, and J. Xu, "Simulating Errors in Web Services," International Journal of Simulation Systems, Science & Technology, vol. 5, 2004.</ref>  
  त्रुटि = तैयारफॉरकॉमिट ();
  अगर (त्रुटि == सफलता) {
    त्रुटि = प्रतिबद्ध ();
    मुखर (त्रुटि == सफलता);
  }
</वाक्यविन्यास हाइलाइट>


अक्सर, यह सुनिश्चित करने के लिए पर्याप्त स्थिति का ट्रैक रखने के लिए गलती इंजेक्शन कार्यान्वयन के लिए अक्षम होगा कि एपीआई फ़ंक्शन बनाते हैं। इस उदाहरण में, उपरोक्त कोड का एक दोष इंजेक्शन परीक्षण [[अभिकथन (कंप्यूटिंग)]] को हिट कर सकता है, जबकि सामान्य ऑपरेशन में ऐसा कभी नहीं होगा।
उस स्तर के लिए [[एपीआई|एपीआई (API)]] की जटिलता पर निर्भर करता है जहां फॉल्ट अंतःक्षेप किए जाते हैं, फॉल्ट इंजेक्शन परीक्षणों को प्रायः असत्य सकारात्मकता की संख्या को कम करने के लिए सावधानी से डिज़ाइन किया जाना चाहिए। यहां तक कि अच्छी तरह से डिज़ाइन किया गया फॉल्ट इंजेक्शन परीक्षण भी कभी-कभी ऐसी स्थिति उत्पन्न कर सकता है जो सॉफ़्टवेयर के सामान्य संचालन में असंभव है। उदाहरण के लिए, कल्पना करें कि दो एपीआई (API) फलन हैं, <code>Commit</code> और <code>PrepareForCommit</code>, जैसे कि अकेले, इनमें से प्रत्येक फलन संभवतः विफल हो सकता है, लेकिन यदि <code>PrepareForCommit</code> को कॉल किया जाता है और सफल होता है, तो <code>Commit</code> के बाद की कॉल सफल होने की गारंटी है। अब निम्नलिखित कोड पर विचार करें-
  error = PrepareForCommit();
  if (error == SUCCESS) {
    error = Commit();
    assert(error == SUCCESS);
  }
प्रायः यह सुनिश्चित करने के लिए पर्याप्त स्थिति का ट्रैक रखने के लिए फॉल्ट इंजेक्शन कार्यान्वयन के लिए संभव नहीं होगा कि एपीआई (API) फलन बनाता है। इस उदाहरण में, उपरोक्त कोड का फॉल्ट इंजेक्शन परीक्षण [[अभिकथन (कंप्यूटिंग)|अभिकथन]] को आघात कर सकता है, जबकि सामान्य ऑपरेशन में ऐसा कभी नहीं होगा।


== यह भी देखें ==
== यह भी देखें ==


* [[Bebugging]]
* [[Bebugging|बेबगिंग]]
* उत्परिवर्तन परीक्षण
* उत्परिवर्तन (टेस्टिंग) परीक्षण
* [[अराजकता इंजीनियरिंग]]
*[[अराजकता इंजीनियरिंग|कैओस अभियांत्रिकी]]


== संदर्भ ==
== संदर्भ ==
{{Reflist}}
{{Reflist}}
== बाहरी संबंध ==
== बाहरी संबंध ==
* [http://www.certess.com/product/ Certitude Software from Certess Inc.]
* [http://www.certess.com/product/ Certitude Software from Certess Inc.]
* [https://doordash.engineering/2022/04/25/using-fault-injection-testing-to-improve-doordash-reliability/ How DoorDash utilizes fault injection testing to improve reliability]
* [https://doordash.engineering/2022/04/25/using-fault-injection-testing-to-improve-doordash-reliability/ How DoorDash utilizes fault injection testing to improve reliability]
[[Category: सॉफ़्टवेयर परीक्षण]]


[[Category: Machine Translated Page]]
[[Category:CS1 English-language sources (en)]]
[[Category:Created On 19/02/2023]]
[[Category:Created On 19/02/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Webarchive template wayback links]]
[[Category:सॉफ़्टवेयर परीक्षण]]

Latest revision as of 09:47, 29 August 2023

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

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

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

इतिहास

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

मॉडल कार्यान्वित फॉल्ट इंजेक्शन

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

सॉफ्टवेयर कार्यान्वित फॉल्ट इंजेक्शन

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

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

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

कोड उत्परिवर्तन का परिशोधन कोड सम्मिलन फॉल्ट इंजेक्शन है जो मौजूदा कोड को संशोधित करने के स्थान पर कोड जोड़ता है। यह प्रायः अस्तव्यस्तता फलनों के उपयोग के माध्यम से किया जाता है जो सरल फलन होते हैं जो उपस्थित मान लेते हैं और इसे कुछ तर्क के माध्यम से दूसरे मान में अस्तव्यस्त करते हैं, उदाहरण के लिए

  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) मानचित्र को अवमिश्रण करना सम्मिलित है।
  • सिस्कल व्याख्या तकनीक- यह ऑपरेटिंग सिस्टम कर्नेल इंटरफेस से प्रणाली सॉफ्टवेयर को निष्पादित करने के लिए फॉल्ट प्रसार से संबंधित है। यह उपयोगकर्ता-स्तर के सॉफ़्टवेयर द्वारा किए गए ऑपरेटिंग सिस्टम कॉल को अवरोधन करके और उनमें फॉल्ट अंतःक्षेप करके किया जाता है।
  • नेटवर्क स्तर फॉल्ट इंजेक्शन- यह तकनीक नेटवर्क इंटरफेस पर नेटवर्क पैकेट के अवमिश्रण, हानि या पुनर्व्यवस्था से संबंधित है।

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

प्रोटोकॉल सॉफ़्टवेयर फॉल्ट इंजेक्शन

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

हार्डवेयर कार्यान्वित फॉल्ट इंजेक्शन

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

फॉल्ट इंजेक्शन की विशेषताएं

फॉल्टों के तीन मुख्य मापदंड होते हैं।[8]

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

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

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

फॉल्ट इंजेक्शन उपकरण

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

अनुसंधान उपकरण

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

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

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

  • बियॉन्ड सिक्योरिटी बीस्टॉर्म (beSTORM)[21] एक वाणिज्यिक ब्लैक बॉक्स सॉफ्टवेयर सुरक्षा विश्लेषण उपकरण है। इसका उपयोग प्रायः मूल उपकरण निर्माताओं द्वारा विकास के दौरान किया जाता है, लेकिन कार्यान्वयन से पहले उत्पादों के परीक्षण के लिए भी इसका उपयोग किया जाता है, विशेष रूप से एयरोस्पेस, बैंकिंग और रक्षा में। बीस्टॉर्म (beSTORM) की परीक्षण प्रक्रिया सबसे संभावित आक्रमण परिदृश्यों के साथ प्रारम्भ होती है, फिर संपूर्ण पीढ़ी आधारित अस्पष्टता का सहारा लेती है। बीस्टॉर्म (beSTORM) उत्परिवर्तन-आधारित आक्रमणों सहित सामान्य प्रोटोकॉल और 'स्वतः सीखना' नए या स्वामित्व प्रोटोकॉल के लिए मॉड्यूल प्रदान करता है। प्रमुखताएँ- बाइनरी और शाब्दिक विश्लेषण, कस्टम प्रोटोकॉल परीक्षण, दोषमार्जन और स्टैक अनुरेखण, विकास भाषा स्वतंत्र, सीवीई (CVE) अनुवर्ती।
  • एग्जॉस्टीएफ (ExhaustiF) सॉफ्टवेयर-गहन प्रणालियों की विश्वसनीयता में सुधार के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन (SWIFI) पर आधारित ग्रे बॉक्स परीक्षण के लिए उपयोग किया जाने वाला एक व्यावसायिक सॉफ्टवेयर उपकरण है। उपकरण का उपयोग किसी भी सॉफ़्टवेयर विकास जीवनचक्र के प्रणाली एकीकरण और प्रणाली परीक्षण चरणों के दौरान किया जा सकता है, साथ ही साथ अन्य परीक्षण उपकरणों का पूरक भी हो सकता है। एग्जॉस्टीएफ (ExhaustiF) सॉफ्टवेयर और हार्डवेयर दोनों में दोषों को अंतःक्षेप करने में सक्षम है। सॉफ़्टवेयर में अनुकारित फॉल्टों को अंतःक्षेप करते समय, एग्जॉस्टीएफ (ExhaustiF) निम्नलिखित प्रकार के फॉल्ट प्रदान करता है- परिवर्तनीय अवमिश्रण और प्रक्रिया अवमिश्रण। हार्डवेयर फॉल्ट इंजेक्शन के लिए सूची में मेमोरी (I/O, RAM) और सीपीयू (CPU) (पूर्णांक इकाई, अस्थिर इकाई) में फॉल्ट सम्मिलित हैं। आरटीईएमएस/ईआरसी32 (RTEMS/ERC32), आरटीईएमएस/पेंटियम (RTEMS/Pentium), लिनक्स/पेंटियम और एमएस (MS)-विंडोज/पेंटियम के लिए अलग-अलग संस्करण उपलब्ध हैं।[22]
  • होलोडेक[23] सिक्योरिटी इनोवेशन द्वारा विकसित एक परीक्षण उपकरण है जो विंडोज अनुप्रयोगों और सेवाओं के लिए वास्तविक दुनिया के अनुप्रयोग और प्रणाली त्रुटियों का अनुकरण करने के लिए फॉल्ट इंजेक्शन का उपयोग करता है। होलोडेक के ग्राहकों में माइक्रोसॉफ्ट, सिमेंटेक, ईएमसी (EMC) और एडोब सहित कई प्रमुख व्यावसायिक सॉफ्टवेयर विकास कंपनियां सम्मिलित हैं। यह नियंत्रित, दोहराने योग्य वातावरण प्रदान करता है जिसमें भंगुरता और सुरक्षा परीक्षण के लिए त्रुटि-प्रबंधन कोड और एप्लिकेशन अटैक सतहों का विश्लेषण और दोषमार्जन किया जाता है। यह फ़ाइल और नेटवर्क अस्पष्टता फॉल्टों के साथ-साथ अन्य संसाधनों, प्रणाली और कस्टम-परिभाषित फॉल्टों की एक विस्तृत श्रृंखला का अनुकरण करता है। यह कोड का विश्लेषण करता है और परीक्षण योजनाओं का अनुग्रह करता है और फलन कॉल लॉगिंग, एपीआई (API) अवरोधन, तनाव परीक्षण, कोड व्याप्ति विश्लेषण और कई अन्य एप्लिकेशन सुरक्षा आश्वासन कार्य भी करता है।
  • प्रूफ़डॉक के कैओस इंजीनियरिंग प्लेटफ़ॉर्म का फोकस माइक्रोसॉफ्ट एज्यूर क्लाउड प्लेटफॉर्म पर है। यह अवसंरचना स्तर, प्लेटफॉर्म स्तर और एप्लिकेशन स्तर पर विफलताओं को अंतःक्षेप करता है।
  • ग्रेमलिन एक "सेवा के रूप में विफलता" प्लेटफॉर्म है जो कंपनियों को अव्यवस्था अभियांत्रिकी के अभ्यास के माध्यम से अधिक प्रत्यास्थ प्रणाली बनाने में सहायता करता है। ग्रेमलिन अज्ञात फॉल्टों को सक्रिय रूप से पहचानने और ठीक करने के लिए प्रणाली में विफलता को सुरक्षित रूप से अंतःक्षेप करके तीन श्रेणियों संसाधन, नेटवर्क और अवस्था में सबसे सामान्य विफलताओं को फिर से बनाता है।
  • कोडेनोमिकॉन डिफेंसिक्स[24] एक ब्लैक-बॉक्स परीक्षण स्वचालन फ्रेमवर्क है जो नेटवर्क प्रोटोकॉल, एपीआई (API) इंटरफेस, फाइलों और एक्सएमएल (XML) संरचनाओं सहित 150 से अधिक विभिन्न इंटरफेस में फॉल्ट इंजेक्शन करता है। सॉफ्टवेयर फॉल्ट इंजेक्शन के क्षेत्र में औलू विश्वविद्यालय में पांच साल के शोध के बाद वाणिज्यिक उत्पाद 2001 में लॉन्च किया गया था। उपयोग किए गए अस्पष्टता सिद्धांतों की व्याख्या करने वाला शोध कार्य वीटीटी (VTT) द्वारा प्रकाशित किया गया था, जो पीआरओटीओएस (PROTOS) संघ के सदस्यों में से एक है।[5]
  • म्यू सेवा विश्लेषक[25] म्यू डायनेमिक्स द्वारा विकसित एक वाणिज्यिक सेवा परीक्षण उपकरण है।[26] म्यू सर्विस विश्लेषक सेवाओं के ब्लैक बॉक्स और व्हाइट बॉक्स का परीक्षण करता है, जो उनके अनावृत सॉफ़्टवेयर इंटरफेस के आधार पर, सेवा से वंचित अनुकरण, सर्विस-स्तर ट्रैफ़िक विविधताओं (अमान्य इनपुट उत्पन्न करने के लिए) और ज्ञात भेद्यता प्रेरकों के पुनर्प्रदर्शन का उपयोग करता है। ये सभी तकनीकें इनपुट सत्यापन और त्रुटि से प्रबंधन का अभ्यास करती हैं और सॉफ्टवेयर प्रणाली पर परीक्षण ट्रैफ़िक के प्रभावों को चिह्नित करने के लिए वैध प्रोटोकॉल मॉनिटर और एसएनएमपी (SNMP) के संयोजन में उपयोग की जाती हैं। म्यू सर्विस विश्लेषक उपयोगकर्ताओं को किसी भी अनावृत प्रोटोकॉल कार्यान्वयन के लिए प्रणालीय-स्तरीय विश्वसनीयता, उपलब्धता और सुरक्षा मेट्रिक्स को स्थापित करने और ट्रैक करने की अनुमति देता है। यह उपकरण 2005 से उत्तरी अमेरिका, एशिया और यूरोप के ग्राहकों द्वारा विशेष रूप से नेटवर्क ऑपरेटरों (और उनके विक्रेताओं) और औद्योगिक नियंत्रण प्रणालियों (समीक्षात्मक आधारभूत संरचना सहित) के महत्वपूर्ण बाजारों में उपलब्ध है।
  • एक्ससेप्शन (Xception)[27] समीक्षात्मक सॉफ्टवेयर एसए (SA) द्वारा विकसित एक व्यावसायिक सॉफ्टवेयर उपकरण है,[28] जिसका उपयोग सॉफ्टवेयर फॉल्ट इंजेक्शन (स्विफी (SWIFI)) और स्कैन चेन फॉल्ट इंजेक्शन (एससीआईएफआई (SCIFI)) पर आधारित ब्लैक बॉक्स और व्हाइट बॉक्स परीक्षण के लिए किया जाता है। एक्ससेप्शन (Xception) उपयोगकर्ताओं को अपने प्रणाली की दृढ़ता या उनके सिर्फ एक भाग का परीक्षण करने की अनुमति देता है, जिससे आर्किटेक्चर के एक विशिष्ट अनुक्रम के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन और हार्डवेयर फॉल्ट इंजेक्शन दोनों की अनुमति मिलती है। उपकरण का उपयोग 1999 से बाजार में किया गया है और इसके ग्राहक अमेरिकी, एशियाई और यूरोपीय बाजारों में हैं, विशेष रूप से एयरोस्पेस और दूरसंचार बाजार के महत्वपूर्ण बाजार में। पूर्ण एक्ससेप्शन (Xception) उत्पाद परिवार में सम्मिलित हैं- ए) मुख्य एक्ससेप्शन (Xception) उपकरण, सॉफ्टवेयर कार्यान्वित फॉल्ट इंजेक्शन (एसडब्ल्यूआईएफआई (SWIFI)) तकनीक में अत्याधुनिक अग्रणी, बी) आसान फॉल्ट परिभाषा (ईएफडी (FED)) और एक्सट्रैक्ट (एक्ससेप्शन (Xception) विश्लेषण उपकरण) ऐड-ऑन उपकरण, c) स्कैन चेन और पिन-स्तर फोर्सिंग के लिए फॉल्ट इंजेक्शन विस्तारण के साथ विस्तृत एक्ससेप्शन (Xception) उपकरण (एक्ससेप्शन (eXception))।

लाइब्रेरी

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

कार्यात्मक गुणों या परीक्षण स्थितियोंं में फॉल्ट इंजेक्शन

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

फॉल्ट इंजेक्शन का अनुप्रयोग

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

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

 error = PrepareForCommit();
  if (error == SUCCESS) {
    error = Commit();
    assert(error == SUCCESS);
  }

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

यह भी देखें

संदर्भ

  1. Moradi, Mehrdad; Van Acker, Bert; Vanherpen, Ken; Denil, Joachim (2019). Chamberlain, Roger; Taha, Walid; Törngren, Martin (eds.). "Model-Implemented Hybrid Fault Injection for Simulink (Tool Demonstrations)". Cyber Physical Systems. Model-Based Design. Lecture Notes in Computer Science (in English). Springer International Publishing. 11615: 71–90. doi:10.1007/978-3-030-23703-5_4. ISBN 9783030237035. S2CID 195769468.
  2. Shepherd, Carlton; Markantonakis, Konstantinos; Van Heijningen, Nico; Aboulkassimi, Driss; Gaine, Clement; Heckmann, Thibaut; Naccache, David (2021). "Physical fault injection and side-channel attacks on mobile devices: A comprehensive analysis" (PDF). Computers & Security. Elsevier. 111 (102471): 102471. arXiv:2105.04454. doi:10.1016/j.cose.2021.102471. S2CID 236957400.
  3. Bar-El, Hagai; Choukri, Hamid; Naccache, David; Tunstall, Michael; Whelan, Claire (2004). "The sorcerer's apprentice guide to fault attacks". Proceedings of the IEEE. IEEE. 94 (2): 370–382. doi:10.1109/JPROC.2005.862424. S2CID 2397174.
  4. J. Voas, "Fault Injection for the Masses," Computer, vol. 30, pp. 129–130, 1997.
  5. 5.0 5.1 Kaksonen, Rauli. A Functional Method for Assessing Protocol Implementation Security. 2001.
  6. A. Avizienis, J.-C. Laprie, Brian Randell, and C. Landwehr, "Basic Concepts and Taxonomy of Dependable and Secure Computing," Dependable and Secure Computing, vol. 1, pp. 11–33, 2004.
  7. 7.0 7.1 J. V. Carreira, D. Costa, and S. J. G, "Fault Injection Spot-Checks Computer System Dependability," IEEE Spectrum, pp. 50–55, 1999.
  8. Benso, Alfredo; Prinetto, Paolo, eds. (2003). Fault Injection Techniques and Tools for Embedded Systems Reliability Evaluation. Frontiers in Electronic Testing (in English). Springer US. ISBN 978-1-4020-7589-6.
  9. "Optimizing fault injection in FMI co-simulation through sensitivity partitioning | Proceedings of the 2019 Summer Simulation Conference". dl.acm.org (in English). Retrieved 2020-06-14.
  10. Moradi, M., Oakes, B.J., Saraoglu, M., Morozov, A., Janschek, K. and Denil, J., 2020. EXPLORING FAULT PARAMETER SPACE USING REINFORCEMENT LEARNING-BASED FAULT INJECTION.
  11. Rickard Svenningsson, Jonny Vinter, Henrik Eriksson and Martin Torngren, "MODIFI: A MODel-Implemented Fault Injection Tool,", Lecture Notes in Computer Science, 2010, Volume 6351/2010, 210-222.
  12. G. A. Kanawati, N. A. Kanawati, and J. A. Abraham, "FERRARI: A Flexible Software-Based Fault and Error Injection System," IEEE Transactions on Computers, vol. 44, pp. 248, 1995.
  13. T. Tsai and R. Iyer, "FTAPE: A Fault Injection Tool to Measure Fault Tolerance," presented at Computing in aerospace, San Antonio; TX, 1995.
  14. S. Han, K. G. Shin, and H. A. Rosenberg, "DOCTOR: An IntegrateD SOftware Fault InjeCTiOn EnviRonment for Distributed Real-time Systems," presented at International Computer Performance and Dependability Symposium, Erlangen; Germany, 1995.
  15. S. Dawson, F. Jahanian, and T. Mitton, "ORCHESTRA: A Probing and Fault Injection Environment for Testing Protocol Implementations," presented at International Computer Performance and Dependability Symposium, Urbana-Champaign, USA, 1996.
  16. Grid-FIT Web-site Archived 2 February 2008 at the Wayback Machine
  17. N. Looker, B. Gwynne, J. Xu, and M. Munro, "An Ontology-Based Approach for Determining the Dependability of Service-Oriented Architectures," in the proceedings of the 10th IEEE International Workshop on Object-oriented Real-time Dependable Systems, USA, 2005.
  18. N. Looker, M. Munro, and J. Xu, "A Comparison of Network Level Fault Injection with Code Insertion," in the proceedings of the 29th IEEE International Computer Software and Applications Conference, Scotland, 2005.
  19. LFI Website
  20. Flatag (2020-05-16), Flatag/FIBlock, retrieved 2020-05-16
  21. beSTORM product information
  22. ExhaustiF SWIFI Tool Site
  23. Holodeck product overview Archived 13 October 2008 at the Wayback Machine
  24. Codenomicon Defensics product overview
  25. Mu Service Analyzer
  26. Mu Dynamics, Inc.
  27. Xception Web Site
  28. Critical Software SA
  29. Abbasinasab, Ali; Mohammadi, Mehdi; Mohammadi, Siamak; Yanushkevich, Svetlana; Smith, Michael (2011). "Mutant Fault Injection in Functional Properties of a Model to Improve Coverage Metrics". 2011 14th Euromicro Conference on Digital System Design. pp. 422–425. doi:10.1109/DSD.2011.57. ISBN 978-1-4577-1048-3. S2CID 15992130.
  30. N. Looker, M. Munro, and J. Xu, "Simulating Errors in Web Services," International Journal of Simulation Systems, Science & Technology, vol. 5, 2004.

बाहरी संबंध