Test Architecture for Testing Distributed Systems