How to do End-to-end Testing in Agile Teams
In agile teams, end-to-end testing is important. End-to-end testing is like a comprehensive health check for software, looking at the whole system from the user's perspective. It's about making sure everything works together perfectly, not just checking the individual parts.
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:
An end-to-end test case example
Why automate end-to-end testing?
What is end-to-end testing?
Think of end-to-end testing as testing the full journey in your app, from start to finish. It’s not just about checking if each step works on its own, but making sure the whole process is smooth and makes sense together.
This kind of testing checks everything, including how your app interacts with other apps, from the viewpoint of a real 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.
End-to-end test case example
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.
Why do end-to-end testing?
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.
Users see your app as a whole, not just as separate features. They want a smooth journey from beginning to end.
End-to-end testing is key because it ensures the entire process works well together, providing a good experience. Plus, when apps need to work with other systems or technologies, end-to-end testing checks that these connections are solid and reliable.
For example, you don’t enter a shopping website just to add things to your basket. Your intent is 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 test automation.
Why automate end-to-end testing?
Given how broad end-to-end testing is, doing it manually is slow and prone to mistakes, especially when you need to move fast and keep improving your app. Automating these tests means they can run quickly and accurately, spotting issues before they affect users.
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, impacting not just customer experience, but revenue and trust.
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 continuous testing in agile development. This whitepaper is a comprehensive guide to achieving automated end-to-end testing in an agile setup.