A method of investigating the effects of distributed programs on a distributed system comprising a plurality of interconnected computers including a test computer, said method comprising the steps of a) storing a plurality of local components of respective distributed programs; b) trialling each of said plurality of local components in turn by: i) running, on said test computer, an execution environment program to provide an execution environment for said local component; ii) running, in said execution environment, said local component; and c) automatically replacing said execution environment with a clean copy thereof in between each trial; said method being characterised by: said trialling further comprising iii) recording messages generated by said test computer when under control of each of said local components for transmission to one or more computers involved in the distributed program of which said local component forms a part; said execution environment program being a first operating system program executable by said test computer, and said automatic replacement step comprising: a) configuring a boot loader program to load a second operating system program when said test computer is re-booted; b) re-booting said test computer to run said boot loader program to load said second operating system program; c) running a refresh program on top of said second operating system program to replace said first operating system program with a clean copy thereof; d) configuring said boot loader program to load said first operating system program when said test computer is re-booted; and e) re-booting said test computer to run said boot loader program to load said first operating system program. a) storing a plurality of local components of respective distributed programs; b) trialling each of said plurality of local components in turn by: i) running, on said test computer, an execution environment program to provide an execution environment for said local component; ii) running, in said execution environment, said local component; and i) running, on said test computer, an execution environment program to provide an execution environment for said local component; ii) running, in said execution environment, said local component; and c) automatically replacing said execution environment with a clean copy thereof in between each trial; said trialling further comprising iii) recording messages generated by said test computer when under control of each of said local components for transmission to one or more computers involved in the distributed program of which said local component forms a part; a) configuring a boot loader program to load a second operating system program when said test computer is re-booted; b) re-booting said test computer to run said boot loader program to load said second operating system program; c) running a refresh program on top of said second operating system program to replace said first operating system program with a clean copy thereof; d) configuring said boot loader program to load said first operating system program when said test computer is re-booted; and e) re-booting said test computer to run said boot loader program to load said first operating system program.