End-to-end testing is a type of test that consists of several components that, combined, are intended to simulate a user’s path through an application. By testing this path from beginning to end, the risk that a user will find a bug can be minimized.
End-to-end tests are often created for the most frequently followed paths, and, in particular, the ones that generate the most revenue for the business.
For a webshop, for example, a typical end-to-end test would be one that checked the process of adding items to the basket, checking out, and completing payment. For a bank, it might be logging in to an account and completing a transfer.
There are many examples of processes and transactions like these that can be tested end-to-end to ensure full functionality.
However, if testers are to test these processes manually, it becomes a time-consuming and costly affair. This is why end-to-end tests are automated - particularly for the most business-critical systems, so that businesses will know about any glitches before their customers.
When starting out with automation, many testers start their automation journey with a search for test automation frameworks. Selenium is a popular choice, because it’s free and has a large user community.
Selenium consists of Selenium Webdriver, their primary web-based automation tool, Selenium IDE, a record-and-playback tool, and Selenium Grid, a parallel testing tool. Combined, these tools allow you to automate anything that goes on in the browser, using a code-based approach.
This may be a good solution for testers wanting a quick, free, solution for web automation.
It is not a good solution, however, if you want to automate larger, more complex scenarios - and in particular end-to-end tests.
For enterprises who have a constellation of systems that work together to provide their customers with products and services, using Selenium to automate is not sustainable.
There are two main reasons for this.
Most modern software systems are complex webs of subsystems, such as ERPs, customer databases and customer-facing applications. These are based on an array of technologies, such as desktop applications, web applications and cloud systems.
These can be tested in silos to assure the quality of each. But users don’t perform actions in silos. For example, you don’t enter a webshop just to add items to your basket. Your intent is usually to buy something, which means that adding something to the basket is only a fraction of the process.
For this reason, it doesn’t make sense to only test this functionality on its own. Instead, we want to test the entire shopping experience, from finding the products and adding them to the basket, to checking out, completing payment, and receiving confirmation.
This is where end-to-end testing differs from, for example, system testing; it’s not just about testing a single system, it's about evaluating multiple systems that are connected in an array of ways. In that way, end-to-end testing is much like a chain. A chain is only as strong as its weakest link - if something breaks, the entire chain could lose its ability to perform its task.
The risk of not doing end-to-end testing is that business-critical processes break, potentially damaging customer experience and revenue.
The second issue with Selenium is that it requires you to read and write code.
This is a problem because it takes time to build and maintain, which prohibits scaling. It’s a particularly time-consuming and tedious task to maintain coded automation, no matter how good a programmer you are, and most would rather spend their time on innovation and development.
For the business, it’s not only expensive to hire programmers for testing, it’s also not scalable due to developer dependencies. Programmers know the difficulties of reading someone else’s code, which makes that code-based automation dependent on one person - so what happens if that person moves on to a new position?
By removing code from the equation, test automation becomes quicker to set up, easier to maintain and easier to scale.
Test automation that works across technologies, and that doesn’t use any code means end-to-end testing that simulates real user experiences can be created fast, and can be scaled to enable quality delivery at speed.
Leapwork is a no-code test automation tool that uses Selenium under the hood for web automation, removes the complexity of coding, and adds the possibility to test across all technologies.
Watch the following video that compares code-based Selenium and no-code Leapwork, to see the difference in speed and ease of use for the tester: