End to End Testing
What is End to End (E2E) Testing?
Definition:
End-to-end testing is a methodology that assesses the working order of a complex product in a start-to-finish process. End-to-end testing verifies that all components of a system are able to run and perform optimally under real-world scenarios.
Analogy:
End to end testing is like testing a car at an auto-dealership before buying it.
As the consumer, you care about the experience of driving this car from the very start of getting into it to the very end of getting out. You aren't going to go and look at the operational efficiency of the engine, nor are you going to perform an isolated test on the quality of the tires, as an example.
Your goal is to determine if the car functions properly from start to finish. You're going to see how it feels when you start the car, how it feels when you drive it on the highway versus on side streets, as well as how well the breaks perform.
All of your testing here is in one single go. You aren't taking the time to individual test each facet you care about, you are reviewing the driving experience and every aspect of it in a single test run.
In other words:
End-to-end testing (E2E testing) refers to a software testing method that involves testing an application's workflow from beginning to end.
Why is end to end testing important?
It's one thing to know what end to end testing means, but that is worthless if you don't know why you should know what staff augmentation is in the first place. Let's break down the importance of this tech term based on two high level categories. We'll walk through an explanation as well as provide a score, 1-10, that shows you how much you should care about end to end (e2e) testing.
Pre-Product: 1/10
The first will be if you do not have a product yet. This means that you don't have a physical product. Maybe you're in the ideation phase, or maybe you're almost ready to start development. Whichever it is, we'll get into why E2E testing is important and why you should or shouldn't care about it if you do not have a product.
If you don't have a product yet, there is nothing for you to worry about here! Continue along your startup journey.
Live Product: 6/10
The second category is if you do have a live product. Maybe you just launched your business or maybe it's been live for years and you're continuing to improve its quality. Regardless of the scenario, if your product is live, E2E testing carries a different weight.
If you do have a product, you should only care about this form of testing once your product is completed (or at least some form of prototype or V1). Remember, E2E testing is the process of testing your product from start to finish, so if you haven't finished the functional flow of the product, you wont' be able to properly perform an end to end test.
Examples of end to end testing
So you know what end to end testing is, by definition. You know if you should care about it or not depending on your situation as a business/company/product. To dig in deeper, we will walk through some examples so we can make sure you really have a solid grasp on E2E testing.
End to End Testing Methods:
When it comes to software E2E testing, the two methods that are commonly used are horizontal and vertical. While both methods of approach are viable, horizontal testing is more common for more complex software than vertical, since horizontal testing covers the user experience across multiple applications. We'll also explore the process of automating these methods to bring greater efficiency to your QA team.
Horizontal
A horizontal E2E test is when user flows are verified across multiple applications, from start to finish; it is going to ensure that every process and relationship between applications is working properly.
With horizontal testing, you need to be sure that all environments are set up and everything is ready to go. Since you are testing across all applications, it is a requirement to have all applications functioning. So, while this method is very comprehensive, it may not be the best fit if you aren't far enough into development itself.
The beauty of horizontal testing is that you are going to be testing from the user's perspective. If you are able to navigate the site and interact between all applications without any errors, then you have completed a successful horizontal E2E test.
Vertical
Thinking vertically (up and down), a vertical test is going to focus on each layer of an individual application. So, rather than testing across applications, you are testing within a single system. Vertical testing requires diligence, as you must begin at a very granular level until you eventually are able to reach the user interface or API layer of an application itself.
As you are maintaining your testing within a single application, it is important to be prepared with testing or development strategies to ensure you are structured as to how you approach your testing. Whether you choose unit testing, continuous testing, or behavior-driven strategies, it is important to stay consistent.
With vertical testing, you are going to ensure that you cover the entirety of a single application. You will be able to test more quickly than horizontal, as you are working with one application, rather than many.
Automation in E2E Testing
One of the most common strategies for E2E testing is to use some form of automation. Both horizontal and vertical E2E testing are extremely time consuming, yet repetitive tasks, making them prime targets for automation.
Using a tool like Selenium or Cypress, you can write "scripts." Each script will be a different user flow that your application should support. For example, you might have a script for client payment that simulates the behavior of a client user trying to submit a payment through your application. Since most fairly complex platforms will have many scripts, or user stories, running E2E tests manually can take days.
With these automation tools you can run your entire suite of E2E testing scripts in minutes. Plus, tools like Cypress even offer recordings of the simulated user actions so if something goes wrong, you can watch the recording and see exactly where something failed.
For MVPs with relatively small feature sets, we recommend hiring a QA resource to perform your end-to-end tests. But once your application begins to scale up its features, we strongly recommend taking the time to implement an automated E2E testing tool.
Key Takeaways:
- End-to-end testing (E2E testing) refers to a software testing method that involves testing an application's workflow from beginning to end.
- There are two forms of end to end testing: horizontal testing & vertical testing. You can automate both of these testing formats.
- If you don't have a product yet, there is nothing for you to worry about here! Continue along your startup journey.
- If you do have a product, you should only care about this form of testing once your product is completed (or at least some form of prototype or V1).