1. A software testing system operative to test a software application comprising a plurality of software components, at least some of which are highly coupled hence unable to support a dependency injection, each software component operative to perform a function, the software application lacking a built-in byte-code modification functionality, the system comprising: apparatus for at least partially isolating, from within the software application, at least one highly coupled software component which performs a given function, without utilizing built-in byte-code modification functionality; and apparatus for testing logic of at least said at least partially isolated highly coupled software component, without dependency injection.