Live e2e test debugging for a distributed serverless application

Rate this content
Bookmark

In this workshop, we will be building a testing environment for a pre-built application, then we will write and automate end-to-end tests for our serverless application. And in the final step, we will demonstrate how easy it is to understand the root cause of an erroneous test using distributed testing and how to debug it in our CI/CD pipeline with Thundra Foresight.

Table of contents:
- How to set up and test your cloud infrastructure
- How to write and automate end-to-end tests for your serverless workloads
- How to debug, trace, and troubleshot test failures with Thundra Foresight in your CI/CD pipelines

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

FAQ

Tundra is a tracing and debugging solution for applications, tests, CI pipelines, and workflows. It allows developers, testers, and QA engineers to trace and debug applications in various environments from development to production. Tundra supports service environments like AWS Lambda and non-service environments like Docker and Kubernetes, and is integrated with popular CI providers and cloud environments.

Tundra Foresight allows monitoring of CI/CD builds from one place, helping identify bottlenecks in the CI process and optimize CI times. It reduces CI costs and time to production, tracks test runs and execution metrics, and troubleshoots problems by tracing the flow between tests and applications.

Tundra APM helps developers trace and debug their microservices and service applications running on any platform. It provides insights on how applications interact with each other and external services, helping developers pinpoint issues within their business flow and debug transactions end-to-end.

Tundra Scikit enables developers to debug their applications on the targeted environment, including production, without stopping at breakpoints. It introduces 'trace points' which allow debugging on live applications against real services and real data, aiding in identifying and resolving issues that are hard to reproduce locally.

Tundra integrates with various development environments using plugins and extensions. It supports local IDEs, CI/CD pipelines like GitHub Actions, and staging environments. It is also compatible with multiple cloud platforms including AWS, Azure, and Google Cloud, and supports popular programming languages and frameworks.

Yes, Tundra can be used in local development environments. Developers can integrate Tundra with their local IDEs to trace and debug applications directly from their development environment, allowing them to identify and fix issues before moving to remote environments.

Serkan Ozal
Serkan Ozal
Oguzhan Ozdemir
Oguzhan Ozdemir
146 min
15 Nov, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Tundra is a tracing and debugging solution for applications, tests, CI pipelines, and workflows. It offers products like Tundra Foresight for monitoring CI-CD builds and Tundra APM for tracing and debugging microservices. Tundra provides distributed tracing, time travel debugging, and chaos engineering support. It helps troubleshoot test failures, identify and fix bugs, and simulate potential failures in production. Tundra supports Java, JavaScript, and Python runtimes, and integrates with popular CI providers.

1. Introduction to Tundra and its Products

Short description:

Thanks for joining our workshop. Today we'll talk about Tundra and its products. Tundra is a tracing and debugging solution for applications, tests, CI pipelines, and workflows. It can be used in various environments and is integrated with popular CI providers. Tundra Foresight is the main product, allowing monitoring and troubleshooting of CI-CD builds. Tundra APM helps trace and debug micro-services and service applications on any platform. Distribute tracing is crucial for monitoring micro-services.

Thanks for joining our workshop, I hope you will find it useful. Let me introduce myself first. This is Serkan, CTO of Tandra, the co-founder, and the co-writer of Throughout M. Modern cloud applications, including service applications as well, and the CI pipelines. And I am honored to be recognized and nominated as AWS Servers CTO, and also a co-organizer of Cloud OnService Turkey meet-up. And was part of the team that organized many national and international AWS-centric event in Turkey. And I have been actively working and researching in the servers era for five years. And welcome you all again and giving the microphone to Ilker to introduce himself.

Thank you Serkan. I am Ilker. I work as a Front-End Engineer for Tundra for three years. Yeah, Ozan, you can continue.

Thanks Ilker. This is Ozan. I am the Solutions Engineer at Tundra.

Okay, thank you Ozan. Okay, let's start with the boring part before we start our hands-on part of our workshop. Let me talk a little bit about today's agenda. Today, first of all, we'll talk about Tundra in general without taking too much of your time, of course. We'll talk about what kind of product Tundra is and which problem offers solutions to. And later we are going to talk about how we can write end-to-end tests for service applications and how we can automate it. Then we will get to the fun part of the workshop and we will see how we can debug and trace the failures in our end-to-end tests using Tundra through different examples, test failures, and use cases.

First of all, I would like to briefly introduce Tundra. Basically, Tundra is a tracing and debugging solution for applications, tests, CI pipelines, and workflows. This actually means that developers, testers, and QA engineers can use Tundra in many different environments from development to production, such as, during local development by integrating their IDE, and CI, CD for the pull request and build and release pipelines, and staging before going into production, and then production of course. Additionally, Tundra is platform agnostic, so that means you can use Tundra both in service environments, such as AWS Lambda, and also in the non-service environments such as Docker, Kubernetes, and VMs, and so on, and in many cloud environments of course, such as AWS, Azure, and the Google Cloud, and Tundra is also integrated with the most popular CI providers, like GitHub, GitLab, CircleCI, and BitBucket, Jenkins, TeamCity, and many others are coming. And also the other good point, with Tundra, is that you can still use Tundra, you're on your local where you are developing on your IDE. So you don't need to use Tundra in the remote environment. You can still use Tundra with the same capabilities on your own local environment. Your development environment. And besides that, Tundra is integrated with many popular runtimes, including Java, NodeJS, Python, and Go, and.NET, and with the many web frameworks such as Express, Quo, and Happy for the Java script and NodeJS, and Spring for Java, and Flask, Tornado, FastAPI for Python, and Asafi.NET for.NET and so on to provide in-depth debugging and rich tracing capabilities to you.

OK, so Tandra basically has three main products integrated with each other. The first one is Tandra Foresight, which is the product we are going to use mostly today in our workshop, and with Tandra foresight, you can monitor your CI-CD builds from one place. By finding the bottlenecks in your CI process and optimizing your CI times, you can reduce your CI cost and time to go to production with confidence. And additionally, by monitoring the tests run and execution metrics, you can historically follow the failures and the performance problems in your test. Moreover, the most important feature is that you can troubleshoot problems very easily by tracing and debugging the distribute flow between your tests and the applications in your end-to-end test. And even with our time table debugging feature, you can record your test execution down to line-by-line and take snapshots during the execution. By snapshots, I mean you can just take the snapshots of the local variables, arguments, and return values, and the properties of the objects and so on, and then you can replay the problematic test execution test runs and debug them without having to reproduce the problem, reproduce the test problem in your local. Sometimes it is not feasible or very hard to reproduce the same test failure on local because of many reasons like having the same state, same database state, or same application state. So it is very crucial to be able to debug the failure on the real environment, on the target environment. And Tundra Foresight can work in integration with many CI tools and testing frameworks. Currently, we have integration with GitHub, GitLab, Bitbucket, Travis CI, Circle CI, and other pipelines. Jenkins, TeamCity, and CI tools, and also we are expanding our CI ecosystem integration according to the future request coming from our customers and users. And at the moment, Node.js, JavaScript, and Java Runtimes are support over JSJ units and cellular integrations. On the other hand, Cypress and the test engine integrations are on the way for JavaScript and Java Runtimes. And also Python Runtime support over PyTest is planned to be released by the end of this month. So this means that Python users can also use Sundra Foresight and layer test and CI processes by having all the cool features provided for other Runtimes we are going to talk about today. And then let me start with our second main product.

The second main product is Sundra APM, which helps developers to trace and debug their micro-services and services applications running on any platform, like Docker, Kubernetes, VMs, AWS, Lambda, Fargate, and even on local and so on. And especially with the rise of micro-services, distribute tracing has become a very crucial part of the monitoring process.

Read also

2. Introduction to Sundra APM and Tandra Scikit

Short description:

Developers can use Sundra APM to understand how their applications interact with various components. Tandra Scikit allows debugging applications on the targeted environment, including production. It eliminates the need for breakpoints and introduces trace points.

And with Sundra APM, developers can get a picture of how their applications interact with each other, with the databases, cloud services, third-party APIs, and so on. And so when there is a problem in the business flow, developers can trace and debug the whole transaction end-to-end to pinpoint issues, to find the problematic component to the problematic micro-service. And, of course, Sundra APM and the Forsythe site are deeply integrated with each other, so developers can trace the whole flow in their end-to-end tests easily and go to production with confidence. And let me continue with our final product, our third product, Tandra Scikit. Our third main product is Tandra Scikit, which enables developers to debug their applications on the targeted environment and even on production, not only locally. The motivation is that sometimes it is hard to reproduce the issue on local because of many reasons. So we believe that developers should be able to debug their applications on the real environment against real services and real data, not the simulated ones. So in terms of this context, Tandra Scikit allows developers to debug their applications without stopping at the breakpoint. So we have a new terminology as the trace point, which enables developers to debug their applications on the target, on the real environment without passing their applications on the put trace point there. And I think it is already enough for the intro.

Watch more workshops on topic

React Performance Debugging Masterclass
React Summit 2023React Summit 2023
170 min
React Performance Debugging Masterclass
Top Content
Featured WorkshopFree
Ivan Akulov
Ivan Akulov
Ivan’s first attempts at performance debugging were chaotic. He would see a slow interaction, try a random optimization, see that it didn't help, and keep trying other optimizations until he found the right one (or gave up).
Back then, Ivan didn’t know how to use performance devtools well. He would do a recording in Chrome DevTools or React Profiler, poke around it, try clicking random things, and then close it in frustration a few minutes later. Now, Ivan knows exactly where and what to look for. And in this workshop, Ivan will teach you that too.
Here’s how this is going to work. We’ll take a slow app → debug it (using tools like Chrome DevTools, React Profiler, and why-did-you-render) → pinpoint the bottleneck → and then repeat, several times more. We won’t talk about the solutions (in 90% of the cases, it’s just the ol’ regular useMemo() or memo()). But we’ll talk about everything that comes before – and learn how to analyze any React performance problem, step by step.
(Note: This workshop is best suited for engineers who are already familiar with how useMemo() and memo() work – but want to get better at using the performance tools around React. Also, we’ll be covering interaction performance, not load speed, so you won’t hear a word about Lighthouse 🤐)
Designing Effective Tests With React Testing Library
React Summit 2023React Summit 2023
151 min
Designing Effective Tests With React Testing Library
Top Content
Featured Workshop
Josh Justice
Josh Justice
React Testing Library is a great framework for React component tests because there are a lot of questions it answers for you, so you don’t need to worry about those questions. But that doesn’t mean testing is easy. There are still a lot of questions you have to figure out for yourself: How many component tests should you write vs end-to-end tests or lower-level unit tests? How can you test a certain line of code that is tricky to test? And what in the world are you supposed to do about that persistent act() warning?
In this three-hour workshop we’ll introduce React Testing Library along with a mental model for how to think about designing your component tests. This mental model will help you see how to test each bit of logic, whether or not to mock dependencies, and will help improve the design of your components. You’ll walk away with the tools, techniques, and principles you need to implement low-cost, high-value component tests.
Table of contents- The different kinds of React application tests, and where component tests fit in- A mental model for thinking about the inputs and outputs of the components you test- Options for selecting DOM elements to verify and interact with them- The value of mocks and why they shouldn’t be avoided- The challenges with asynchrony in RTL tests and how to handle them
Prerequisites- Familiarity with building applications with React- Basic experience writing automated tests with Jest or another unit testing framework- You do not need any experience with React Testing Library- Machine setup: Node LTS, Yarn
AI on Demand: Serverless AI
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
AI on Demand: Serverless AI
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
In this workshop, we discuss the merits of serverless architecture and how it can be applied to the AI space. We'll explore options around building serverless RAG applications for a more lambda-esque approach to AI. Next, we'll get hands on and build a sample CRUD app that allows you to store information and query it using an LLM with Workers AI, Vectorize, D1, and Cloudflare Workers.
How to Start With Cypress
TestJS Summit 2022TestJS Summit 2022
146 min
How to Start With Cypress
Featured WorkshopFree
Filip Hric
Filip Hric
The web has evolved. Finally, testing has also. Cypress is a modern testing tool that answers the testing needs of modern web applications. It has been gaining a lot of traction in the last couple of years, gaining worldwide popularity. If you have been waiting to learn Cypress, wait no more! Filip Hric will guide you through the first steps on how to start using Cypress and set up a project on your own. The good news is, learning Cypress is incredibly easy. You'll write your first test in no time, and then you'll discover how to write a full end-to-end test for a modern web application. You'll learn the core concepts like retry-ability. Discover how to work and interact with your application and learn how to combine API and UI tests. Throughout this whole workshop, we will write code and do practical exercises. You will leave with a hands-on experience that you can translate to your own project.
Detox 101: How to write stable end-to-end tests for your React Native application
React Summit 2022React Summit 2022
117 min
Detox 101: How to write stable end-to-end tests for your React Native application
Top Content
WorkshopFree
Yevheniia Hlovatska
Yevheniia Hlovatska
Compared to unit testing, end-to-end testing aims to interact with your application just like a real user. And as we all know it can be pretty challenging. Especially when we talk about Mobile applications.
Tests rely on many conditions and are considered to be slow and flaky. On the other hand - end-to-end tests can give the greatest confidence that your app is working. And if done right - can become an amazing tool for boosting developer velocity.
Detox is a gray-box end-to-end testing framework for mobile apps. Developed by Wix to solve the problem of slowness and flakiness and used by React Native itself as its E2E testing tool.
Join me on this workshop to learn how to make your mobile end-to-end tests with Detox rock.
Prerequisites- iOS/Android: MacOS Catalina or newer- Android only: Linux- Install before the workshop
API Testing with Postman Workshop
TestJS Summit 2023TestJS Summit 2023
48 min
API Testing with Postman Workshop
Top Content
WorkshopFree
Pooja Mistry
Pooja Mistry
In the ever-evolving landscape of software development, ensuring the reliability and functionality of APIs has become paramount. "API Testing with Postman" is a comprehensive workshop designed to equip participants with the knowledge and skills needed to excel in API testing using Postman, a powerful tool widely adopted by professionals in the field. This workshop delves into the fundamentals of API testing, progresses to advanced testing techniques, and explores automation, performance testing, and multi-protocol support, providing attendees with a holistic understanding of API testing with Postman.
1. Welcome to Postman- Explaining the Postman User Interface (UI)2. Workspace and Collections Collaboration- Understanding Workspaces and their role in collaboration- Exploring the concept of Collections for organizing and executing API requests3. Introduction to API Testing- Covering the basics of API testing and its significance4. Variable Management- Managing environment, global, and collection variables- Utilizing scripting snippets for dynamic data5. Building Testing Workflows- Creating effective testing workflows for comprehensive testing- Utilizing the Collection Runner for test execution- Introduction to Postbot for automated testing6. Advanced Testing- Contract Testing for ensuring API contracts- Using Mock Servers for effective testing- Maximizing productivity with Collection/Workspace templates- Integration Testing and Regression Testing strategies7. Automation with Postman- Leveraging the Postman CLI for automation- Scheduled Runs for regular testing- Integrating Postman into CI/CD pipelines8. Performance Testing- Demonstrating performance testing capabilities (showing the desktop client)- Synchronizing tests with VS Code for streamlined development9. Exploring Advanced Features - Working with Multiple Protocols: GraphQL, gRPC, and more
Join us for this workshop to unlock the full potential of Postman for API testing, streamline your testing processes, and enhance the quality and reliability of your software. Whether you're a beginner or an experienced tester, this workshop will equip you with the skills needed to excel in API testing with Postman.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Modern Web Debugging
JSNation 2023JSNation 2023
29 min
Modern Web Debugging
Top Content
This Talk discusses modern web debugging and the latest updates in Chrome DevTools. It highlights new features that help pinpoint issues quicker, improved file visibility and source mapping, and ignoring and configuring files. The Breakpoints panel in DevTools has been redesigned for easier access and management. The Talk also covers the challenges of debugging with source maps and the efforts to standardize the source map format. Lastly, it provides tips for improving productivity with DevTools and emphasizes the importance of reporting bugs and using source maps for debugging production code.
Network Requests with Cypress
TestJS Summit 2021TestJS Summit 2021
33 min
Network Requests with Cypress
Top Content
Cecilia Martinez, a technical account manager at Cypress, discusses network requests in Cypress and demonstrates commands like cydot request and SCI.INTERCEPT. She also explains dynamic matching and aliasing, network stubbing, and the pros and cons of using real server responses versus stubbing. The talk covers logging request responses, testing front-end and backend API, handling list length and DOM traversal, lazy loading, and provides resources for beginners to learn Cypress.
Testing Pyramid Makes Little Sense, What We Can Use Instead
TestJS Summit 2021TestJS Summit 2021
38 min
Testing Pyramid Makes Little Sense, What We Can Use Instead
Top Content
Featured Video
Gleb Bahmutov
Roman Sandler
2 authors
The testing pyramid - the canonical shape of tests that defined what types of tests we need to write to make sure the app works - is ... obsolete. In this presentation, Roman Sandler and Gleb Bahmutov argue what the testing shape works better for today's web applications.
Debugging JS
React Summit 2023React Summit 2023
24 min
Debugging JS
Top Content
Watch video: Debugging JS
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.
Testing Web Applications with Playwright
TestJS Summit 2022TestJS Summit 2022
20 min
Testing Web Applications with Playwright
Top Content
Watch video: Testing Web Applications with Playwright
Testing web applications with Playwright, a reliable end-to-end testing tool. Playwright offers fast execution, powerful tooling, and support for multiple languages. It provides precise selectors, web-first assertions, and code generation for easy testing. Playwright also offers features like live debugging, tracing, and running tests on CI. The future of Playwright aims to make testing easy and fun, with a focus on creating frustration-free web experiences.
Full-Circle Testing With Cypress
TestJS Summit 2022TestJS Summit 2022
27 min
Full-Circle Testing With Cypress
Top Content
Cypress is a powerful tool for end-to-end testing and API testing. It provides instant feedback on test errors and allows tests to be run inside the browser. Cypress enables testing at both the application and network layers, making it easier to reach different edge cases. With features like AppActions and component testing, Cypress allows for comprehensive testing of individual components and the entire application. Join the workshops to learn more about full circle testing with Cypress.