End-to-end Testing

Testing where the entire application is tested in a real-world scenario such as communicating with the database, network, hardware and other applications.

The above is the general definition of what an end-to-end test is. Most of these tests are written to make sure general flows of the application that a user may take are working correctly and as expected. However, there are other benefits to running and writing these tests that may not be as well known.

Find bugs when writing tests

True, end-to-end tests are supposed to find bugs, but that’s mainly when you run tests that have already been written to make sure no bugs were introduced as the project is being developed on. However, there are a lot of bugs you can find when you’re writing end-to-end tests. In my experience, I’ve usually found an issue while writing an end-to-end test on a specific functionality that I’m testing.

Unit tests will do this, too, but end-to-end tests can find issues that aren’t always logical, such as UI issues and components not interacting as expected. This, to me, is probably the most useful thing about having end-to-end tests.

Find hard to detect issues

Applications depend on all components of the application interacting and working correctly. However, unit tests can’t detect when, for example, a database call fails. If all of your end-to-end tests fail due to database issues, you know something happened to the database and it can be mitigated much quicker than when finding the issue all the way in a test environment. Or maybe an API that the application relies on is down and it, too, fails all end-to-end tests.

Automate a repetitive task

This was something I never knew before I actually heard it in a talk, but you can use end-to-end tests to automate a task on another web page. The example in the talk was to have a build step to use Canopy, an F# wrapper over Selenium to automatically upload the extension to the Visual Studio Gallery.

While not exactly an end-to-end test in itself, it uses the same tools as an end-to-end test does.

This is just a quick post to highlight other benefits of writing and running end-to-end tests. If you or your company is still on the fence about adopting writing end-to-end tests, then maybe these extra benefits can give you the reasons you need to get started.