1. A system for providing testing for software applications, said system comprising: a tangible medium containing processor executable software testing code adapted to cause one or more processors to: at least partially isolate from within a given software application, during runtime, a software component of the given software application which performs a given function, by modifying data within metadata tables associated with the component of the given software application, wherein the metadata tables include: (i) a method table containing a first entry of a name of a method of the software component; (ii) a type table containing a second entry of a name of a type of the method, and (iii) an assembly table containing a third entry of an assembly the type is defined in; and wherein said modifying data within metadata tables includes modifying at least one of said first, second and third entries, such that a call to the component is redirected to alternate testing code of the testing application adapted to override behavior of the component; and test, by use of the processors running the testing code, the given software application, by imposing a fake behavior on the software component, wherein imposing a fake behavior includes removing or replacing an expected behavior of the coupled software component, during runtime.