The demand for larger and more interconnected software systems is constantly increasing, but the ability of developers to satisfy it is not evolving accordingly. The most limiting factor is software validation, which typically requires very costly and complex testing processes. Large distributed software systems are common nowadays. This software is promised to be fault-tolerant, elastic (it scales in and out) and cost-efficient, among other features. However, it is difficult to assess that distributed software complies with the quality demanded by users. For this kind of software, testing from the user’s perspective (i.e., end-to-end tests) is a task that consumes much of developers’ time. It is estimated that about 70% of the time in a project is devoted to testing. In addition, testing certain real world conditions is prohibitive, and hence not tested at all. In essence, all these problems are due to the fact that there is no systematic approach to end-to-end testing. This project aims to improve the efficiency and effectiveness of the testing process significantly and, with it, the overall quality of large software systems.