Distributed Java applications represent a large growth area in software. Validating such applications using information from runtime interactions is a challenge. We propose techniques for visualizing interactions, specifying and verifying assertions, and checking conformance of the implementation with its design. Our work helps in making the debugging and testing activities more systematic.