1. In a computer system for automated software testing to determine whether or not software operates as intended, a method of applying one or more tests to one or more software components without having to specify each test or test environment explicitly, the method comprising acts of: reading a test file containing (i) one or more code sections that identify one or more software components to test, (ii) one or more location sections that identify one or more locations to run the one or more software components, (iii) an expandable variation section that associates the one or more software components with the one or more locations, and (iv) an expansion section that defines rules for expanding the expandable variation section; expanding the expandable variation section to create one or more expanded variation sections, each associating a particular one of the one or more software components with a particular one of the one or more locations; and for each particular software component and location, calling a code setup routine to prepare for executing the particular software component, a code run routine to execute the particular software component for testing, and a code cleanup routine to reverse changes made by the code setup and run routines as needed.