For any agile software development team, end-to-end testing plays an important role as it tests software in a way that closely simulates real user experiences.
This brings significant value to the end product. But end-to-end testing is also a comprehensive process. So how do agile teams achieve that significant value, when also attempting to deliver at high speed?
Automated end-to-end testing is the answer. Read on to learn what end-to-end testing is, and why it’s important for agile teams to use automation in end-to-end testing.
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.
There are several reasons why it pays off to automate end-to-end tests.
First of all, as you can probably imagine, end-to-end tests can be quite an extensive process. For this reason, as with for example regression testing, performing the same end-to-end tests again and again manually is not only extremely time-consuming, it’s also tedious and error-prone.
In relation to this, to teams following a CI/CD, continuous testing or agile framework, working at speed is crucial to delivery. The only way that teams like this can work at speed is by automating tests that are time-consuming, such as end-to-end tests.
The consequence of not automating end-to-end testing is first of all that a business won’t be notified instantaneously if their 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 the 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: Agile Testing.