Why Tracing is a Lifesaver for E2E Tests of Distributed Systems?

Rate this content
Bookmark

Contemporary software systems are often built on a microservices architecture pattern. In this pattern, rather than build one huge code-base for a single application, systems are separated into multiple smaller code-bases. These implement services that provide a specific feature, like authentication or monitoring, and those services can have performance problems, network issues, or bugs in their code – any of which can lead to failing tests. If you want to solve such problems, you have to go a step further than just logging your errors – it is best for you to monitor your tests with distributed tracing. This talk will show you why a tracing system will rescue you from the complexity of understanding why an E2E test has failed in a distributed architecture.

This talk has been presented at TestJS Summit 2021, check out the latest edition of this JavaScript Conference.

FAQ

Tundra Foresight aids in monitoring and debugging CI-CD workflows and tests by providing logs, error messages, performance history, and visual tools like distributed tracing to easily identify and address issues in the application flow.

Burak is a product manager at Tandra, a company that builds modern tools for developers and QA engineers to develop and deliver applications on the cloud.

End-to-end tests in distributed systems are used to ensure that all parts of the system work together correctly, checking the entire application from back to front.

Common reasons for end-to-end test failures include time-waiting issues due to asynchronous service communications, dependencies between tests where one failure can lead to multiple failures, and inter-service communication problems.

Distributed tracing is a method used to analyze and understand the data flow and interactions within an application, especially in complex distributed environments. It helps developers visualize the entire application flow and pinpoint failures or bottlenecks efficiently.

On the Tundra Foresight dashboard, users can view a single test case visualization including logs, error messages, performance history, and if available, screenshots. It also features a trace map that shows message exchanges between services, helping to trace the root cause of failures.

Time travel debugging in Tundra Foresight allows users to navigate through a trace chart and identify the exact moment and location of an error within the test execution, facilitating quick detection and correction of the issue.

Burak Kantarci
Burak Kantarci
8 min
18 Nov, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Tandra is a company that builds modern tools for developers and QA engineers. Their flagship product, Foresight, helps monitor and debug CI-CD workflows and tests. The Talk discusses the reasons for end-to-end test failures, how to debug them, and the benefits of tracing. End-to-end tests can fail due to time-waiting issues, dependencies between tests, and inter-service communications. Debugging through logs and artifacts is possible, but tracing is more effective in uncovering root causes, especially in microservices.

1. Introduction to Tandra and Foresight

Short description:

I'm Burak from Tandra, a product manager. Tandra builds modern tools for developers and QA engineers. Our flagship product, Foresight, helps you monitor and debug CI-CD workflows and tests.

Hey, everyone. I'm Burak from Tandra. I'm super excited to be with you all today, and I hope you are having a great time watching these all excellent speakers here at TestJS Summit.

Today, I'm going to talk about how chasing might help you finding the root causes in your test failures, end-to-end test failures in your distributed systems. Before we get into it, let me introduce myself, and also Tandra to you.

I'm Burak, and working as a product manager here at Tandra. Apart from my professional career, you can see me playing tennis on the course, and Tandra builds modern tools for developers and QA engineers who develop and deliver apps, modern applications on the cloud. Our flagship product, Foresight, helps you to monitor and debug your CI-CD workflows and tests.

2. Reasons for End-to-End Test Failures and Debugging

Short description:

Today, we will discuss why end-to-end tests fail, how to debug them, and the benefits of tracing. End-to-end tests check if all parts of the system work correctly, but they can fail due to time-waiting issues, dependencies between tests, and inter-service communications. Debugging can be done through logs and artifacts, but tracing helps to uncover the root causes, especially in microservices.

Today, we are going to talk about why do end-to-end test fail, how to debug them, and how chasing can help you to find the root causes easier. Why are they failing? Why do end-to-end tests fail? They are trying to check every part of your system works together correctly. In short, they are checking the whole application from back to the front. There may be a couple of reasons of failures, and one of them is time-waiting reasons. If you have multiple services communicating with each other, the responses won't be instantaneous, so there might be time-related issues.

Another thing is a test may be dependent to another one. So if one fails, there may be ten other failures occuring since that one failure. Another, and the most important one, is inter-service communications. Since end-to-end tests may have different services waiting the responses for each other, so think about it like if you have a checkout system waiting for a shopping cart return, so there may be a possible failure from a different service. Even though you get a 500 service error, it doesn't tell you what actually happened and where it happened.

When there is an error happens, you can debug them by checking the logs, obviously. They provide you a summary of the whole execution, and although modern tools and IDs highlight the exact error, you may end up getting lost in thousands of lines to find the exact reason for your failure. And also you can check artifacts such as screenshots and video recordings. This end-to-end test provides end-to-end test scenarios contain users' experience. So you may get help from those kinds of artifacts. However, it may not be enough for you to see what happened behind the curtains, as I mentioned, like if you have especially working on microservices.