Challenges in testing distributed applications