यह विचार एक वस्तु-आधारित या वस्तु-उन्मुख डिजाइन के संदर्भ में "Self_Test" पद्धति पर निर्भर करता है। यदि Ada जैसी संकलित वस्तु-आधारित भाषा का उपयोग किया जाता है, तो सभी आत्म-परीक्षण कोड को कंपाइलर द्वारा उत्पादन संकलन के दौरान अप्रयुक्त (कभी भी आमंत्रित नहीं) के रूप में चिह्नित किया जाएगा, और इसलिए यह सभी दूर हो जाएगा - इसमें से कोई भी दिखाई नहीं देगा। परिणामी निष्पादन योग्य।
"Self_Test" विधि का उपयोग करना एक बहुत अच्छा विचार है, और यदि प्रोग्रामर वास्तव में गुणवत्ता से चिंतित थे, तो वे सभी ऐसा कर रहे होंगे। एक महत्वपूर्ण मुद्दा, हालांकि, यह है कि "Self_Test" विधि में गहन अनुशासन की आवश्यकता है, इसमें वह किसी भी कार्यान्वयन विवरण तक नहीं पहुंच सकता है और इसके बजाय ऑब्जेक्ट के विनिर्देश के भीतर सभी अन्य प्रकाशित तरीकों पर भरोसा करना चाहिए। जाहिर है, यदि आत्म परीक्षण विफल हो जाता है, तो कार्यान्वयन को बदलना होगा। सेल्फ टेस्ट को ऑब्जेक्ट के तरीकों के सभी प्रकाशित गुणों का कठोरता से परीक्षण करना चाहिए, लेकिन कभी भी किसी भी विशिष्ट कार्यान्वयन के किसी भी विवरण पर किसी भी तरह से भरोसा नहीं करना चाहिए।
ऑब्जेक्ट-आधारित और ऑब्जेक्ट-ओरिएंटेड भाषाएं अक्सर उस प्रकार का अनुशासन प्रदान करती हैं, जो परीक्षण की गई वस्तु के बाहरी तरीकों के संबंध में है (वे ऑब्जेक्ट के विनिर्देश को लागू करते हैं, इसके कार्यान्वयन के विवरण तक किसी भी पहुंच को रोकते हैं और किसी भी ऐसे प्रयास का पता चलने पर संकलन त्रुटि को बढ़ाते हैं। )। लेकिन ऑब्जेक्ट के अपने आंतरिक तरीकों को सभी को हर कार्यान्वयन विवरण तक पूर्ण पहुंच प्रदान की जाती है। तो स्व परीक्षण विधि एक अनोखी स्थिति में है: इसकी प्रकृति की वजह से एक आंतरिक विधि होने की आवश्यकता है (स्वयं परीक्षण स्पष्ट रूप से परीक्षण की जा रही वस्तु की एक विधि है), फिर भी इसे बाहरी विधि के सभी संकलक अनुशासन प्राप्त करने की आवश्यकता है ( यह वस्तु के कार्यान्वयन के विवरण से स्वतंत्र होना चाहिए)। यदि कोई प्रोग्रामिंग भाषा किसी वस्तु को अनुशासित करने की क्षमता प्रदान करती है तो ' आंतरिक विधि के रूप में अगर यह एक बाहरी विधि थी। तो यह एक महत्वपूर्ण प्रोग्रामिंग भाषा डिजाइन मुद्दा है।
उचित प्रोग्रामिंग लैंग्वेज सपोर्ट के अभाव में, इसका सबसे अच्छा तरीका यह है कि साथी ऑब्जेक्ट बनाया जाए। दूसरे शब्दों में, आपके द्वारा कोड की गई प्रत्येक वस्तु के लिए (चलो इसे "Big_Object" कहते हैं), आप एक दूसरा, साथी ऑब्जेक्ट भी बनाते हैं, जिसके नाम में "वास्तविक" ऑब्जेक्ट के नाम के साथ एक मानक प्रत्यय होता है (इस मामले में, "Big_Object_Self_Test) "), और जिनके विनिर्देशन में एक ही विधि शामिल है (" Big_Object_Self_Test.Self_Test (This_Big_Object: Big_Object) बूलियन लौटाएं ")। साथी ऑब्जेक्ट तब मुख्य ऑब्जेक्ट के विनिर्देश पर निर्भर करेगा, और कंपाइलर साथी विनिर्देश के कार्यान्वयन के खिलाफ उस विनिर्देश के सभी अनुशासन को पूरी तरह से लागू करेगा।