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.
Why Tracing is a Lifesaver for E2E Tests of Distributed Systems?
AI Generated Video Summary
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
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
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.