I have a distributed system with components spread across multiple boxes. They talk to each other using tcp or multicast. Each components interchanges messages with each other -
I'll give my answer for what we are doing with a distributed system written in Java. We have multiple linux daemons that are really wrappers around java programs that communicate with one another mainly through a database. So they don't send serialized messages back and forth. We use dbunit and spring-test for integration testing. With dbunit you basically load data, run your System Under Test(SUT) and then verify the database is in the correct state. spring-test makes it easy for spring based apps to load the application context while testing.
If you don't have a java based app then this might not be that useful. The framework selections are going to largely depend on your technology choices and architecture.