1. A software testing system operative to test a software application comprising a plurality of software components, at least some of which are coupled in a utilizing-utilized relationship the system comprising: a processor and memory: computational apparatus for at least partially isolating, from within the software application, at least one coupled software component which performs a given function by introducing, prior to execution, code elements for runtime access of application points associated with the at least one coupled software component, wherein at least one code element associated with the at least one coupled software component provides access control between utilizing-utilized software components; computational apparatus for testing the software application by imposing a fake behavior on the at least one coupled software component, wherein imposing includes removing or replacing an expected behavior of the at least one coupled software component during runtime; and wherein the at least one code element is operative to query said computational apparatus for testing.