Bu fikir, sadece nesne tabanlı veya nesne yönelimli bir tasarım bağlamında bir "Self_Test" yöntemine karşılık gelir. Ada gibi derlenmiş bir nesne tabanlı dil kullanılıyorsa, tüm otomatik test kodu derleyici tarafından üretim derlemesi sırasında kullanılmamış (hiç çağrılmadı) olarak işaretlenir ve bu nedenle hepsi en iyi duruma getirilir - hiçbiri ekranda görünmez sonuçta çalıştırılabilir.
Bir "Self_Test" yöntemi kullanmak son derece iyi bir fikirdir ve programcılar kaliteyle gerçekten ilgileniyorlarsa, hepsi bunu yapardı. Yine de önemli konulardan biri, "Self_Test" yönteminin, uygulama detaylarının hiçbirine erişememesi ve bunun yerine sadece nesnenin spesifikasyonunda yayınlanan tüm diğer metotlara dayanması gerektiği için yoğun bir disipline sahip olması gerektiğidir. Açıkçası, öz sınama başarısız olursa, uygulamanın değişmesi gerekecektir. Öz sınama, nesnenin yöntemlerinin tüm yayınlanmış özelliklerini titizlikle sınamalıdır, ancak hiçbir zaman belirli bir uygulamanın ayrıntılarına hiçbir zaman güvenmez.
Nesneye dayalı ve nesneye yönelik diller, test edilen nesnenin dışındaki yöntemlerle ilgili olarak tam olarak bu tür bir disiplin sağlarlar (nesnenin özelliklerini zorlarlar, uygulama ayrıntılarına erişimi engeller ve bu tür bir girişim tespit edilirse bir derleme hatası oluştururlar) ). Ancak, nesnenin kendi iç yöntemlerine tüm uygulama detaylarına tam erişim sağlanır. Bu yüzden öz sınama yöntemi benzersiz bir durumda: doğası nedeniyle bir iç yöntem olması gerekiyor (öz sınama açıkça test edilen nesnenin bir yöntemidir), ancak bir dış yöntemin tüm derleyici disiplinini alması gerekiyor ( nesnenin uygulama detaylarından bağımsız olmalıdır). Herhangi bir programlama dili, bir nesneyi disipline etme yeteneği sağlıyorsa s dış bir yöntemmiş gibi iç yöntemi. Yani bu önemli bir programlama dili tasarım konusudur.
Doğru programlama dili desteği yokken, bunu yapmanın en iyi yolu bir eşlik eden nesne oluşturmaktır. Diğer bir deyişle, kodladığınız her nesne için ("Big_Object" olarak adlandıralım), ayrıca "real" nesnesinin adıyla birleştirilen standart bir sonekten oluşan ikinci bir eşlik eden nesne oluşturursunuz (bu durumda, "Big_Object_Self_Test ") ve belirtimi tek bir yöntemden oluşuyor (" Big_Object_Self_Test.Self_Test (This_Big_Object: Big_Object) return Boolean; "). Eşlik eden nesne daha sonra ana nesnenin özelliklerine bağlı olacaktır ve derleyici, eşlik eden nesnenin uygulanmasına karşı bu tarifnamenin tüm disiplinini tamamen uygulayacaktır.