Tips and tricks Best practice guides, FAQ & more
In agile teams, end-to-end testing is important. It tests software that simulates a real user experience.
This brings value to the end product. But end-to-end testing is a comprehensive process. How can agile teams achieve significant value, while also attempting to deliver at high speed?
Automated end-to-end testing is the answer.
Skip ahead to:
End-to-end testing is a type of software testing that tests flows from beginning to end, as opposed to only testing individual steps.
By performing end-to-end tests, it’s possible to test an application in its entirety, as well as its connection with other applications, as it is experienced by the user.
Now you might be thinking; “but isn’t that the same? 2+2 equals 4 and so does 1+1+1+1. Does it really matter if we split the tests into pieces, and won’t it give us the exact same outcome?”
The simple answer is no. End-to-end tests aren’t just several tests combined into one.
They are more complex than that, and they can add additional value for that reason.
To explain why, we’ll give you a simple example from a user's point of view:
Imagine that you are shopping for groceries online. You don’t really care which online store you’re shopping at, so you choose the first and the best.
You start adding things to the basket, and soon find that the website to be quite slow. It turns out that lots of people are shopping their groceries at that particular site on that particular day, and it’s slowing down the page.
You get frustrated, and by the time you proceed to checkout, it’s already taken way longer than you prefer.
Finally, the checkout page is taking what feels like a minute to load. If it hadn’t been for the rest of the shopping experience, you might have waited, but you start feeling unsure about the stability of the page, and decide to leave your basket and go to an alternative store instead.
In this case, individual tests won’t necessarily notify the online store that the website is slower than usual. But an end-to-end test can be used to ensure that the entire process, from logging in as a customer, adding a couple of things to the basket, checking out, and receiving a confirmation, doesn’t take more than five minutes.
Example of a test case where end-to-end testing can be used to secure a positive user-experience.
Like with many other types of tests, the point of testing is to ensure a good user experience.
When you think about it, users don’t perform actions in silos. For example, you don’t enter a shopping website just to add things 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.
In addition to testing processes within applications – like in this case a web application – most companies will also have the need to test outside, or across, applications. For example, an online electronics store might register their shoppers in a customer database, and based on their purchases, send them certain marketing messaging.
For this to be possible, the store will have to have a process set up that works across multiple applications – the online store, the database, and the marketing platform.
An example of a cross-technology end-to-end test case.
Again, setting up partial tests that test for example the integration between the online store and the database, or the online store and the marketing platform separately alone won’t give the electronics store the complete confidence that they’re entire process is working as intended.
Therefore, the optimal way to test that this entire process works as intended from start to finish is through end-to-end, cross-technology testing.
And the only way to make this feasible for agile teams is through automation.
It pays off to automate end-to-end tests.
End-to-end tests can be quite an extensive process. As with regression testing, performing the same end-to-end tests again and again manually is extremely time-consuming. It’s also tedious and error-prone.
For teams following a CI/CD, continuous testing or agile framework, working at speed is crucial to delivery. The only way that teams can work faster is by automating tests that are time-consuming. Like end-to-end tests.
The consequence of not automating end-to-end testing? A business won’t be notified instantaneously if its system crashes.
Most modern software systems are complex webs of subsystems, and bug in any of these subsystems can cause the whole system to crash.
End-to-end testing can help mitigate that risk, and automated end-to-end testing can ensure that software teams have a chance of fixing the issue before the users experience it.
To learn more about testing in agile teams, and to see how you can increase the flexibility and speed of testing, make sure to download our free whitepaper on how to find the right agile test automation tool, or get our whitepaper on agile testing.