With the growth of the web applications, scalability and modularity become increasingly significant features of these systems. New architecture design approaches (like cloud and microservices) are used to design large-scale distributed systems to support these functionalities. Integration and system tests are standard tools to verify and test distributed systems. However, it is essential to measure the quality of these tests, but the traditional testing methods poorly support the analysis of the dynamically changing, autonomous, individual components. Distributed tracing can track the interactions between the parts of the system, although primarily it is used to help the debugging process by locating the source of performance issues. The information provided by distributed traces about the internal communications can also be used to support the tests.
In this thesis, I describe the development and testing difficulties, and the features of using distributed systems through creating a case study system. I used largely accepted standard solutions in the system to be as similar as possible to industrial applications, and also designed the system to be complex enough for the further analysis methods. I designed a stand-alone analyser system for supporting distributed systems' development and testing. To evaluate the tests it first creates a model based on standard resource and API descriptions, and then it expands this with the information from the distributed traces, which generated from the tests. On this model, the system can perform the analysis to evaluate the tests and simplify the developers' works.
A web application frontend of the analyser is responsible for handling the interactions, setting up the parameters of the analysed system and providing the results of the evaluation methods. The analyser can find components of the system that were not tested and components that are missing from the definition files too. With a large system multiple teams develop the individual components parallelly, so continuously validating the consistency of the system is required. It provides multiple visual representations of the various parts of the system, highlighting the issues and containing usage statistics to support the development of distributed systems. I used the case study system for evaluating the designed analyser system.