66
votes

What is end-to-end testing, and what is the difference between it and system testing?

They both seem the same and check the application as a whole. Definitions on the net are very confusing.

7
I think, this should help. System Testing and End To End Testing.Vikash Pathak
The question better fits to Software Quality Assuranse on Stackexchange: sqa.stackexchange.comdzieciou
The meaning depends on the person using the term. Ask the person who is tasking you with any of those what she or he meant.dzieciou
Many authors have different meanings for most testing terms. Most agree with what should a "unit test" be, but no more than that.geekazoid

7 Answers

51
votes

For me there isn't really a huge difference between the two and in some establishments the terms could be used interchangeably. Everywhere is different. I would try and explain it like so:

System testing: You're testing the whole system i.e. all of it's components to ensure that each is functioning as intended. This is more from a functional side to check against requirements.

End to end testing: This is more about the actual flow through a system in a more realistic end user scenario. Can a user navigate the application as expected and does it work. You're testing the workflow.

For example if you were to test an e-commerce site the shop front:

System test: browsing for items, cart and checkout would all work fine.

End to end test: You may then find issues with the workflow of moving between these areas of functionality.

22
votes

End-to-end testing - An end-to-end test is basically exactly what it sounds like; you are testing a piece of software from beginning to end. If it is an ecommerce platform, for example, you would test that you can get to a product page, add it to cart, then checkout and complete the order. For an application, it could be that you are able to select an item from a menu, do some work, and then submit that so that it is visible to others. It's basically just a way for a functional team to vet the new development and make sure that they haven't broken something either on the front-end or back-end during implementation.

System test - This is a bit more nebulous. This could be someone testing the back-end database of a website, or testing the front-end UI or even the middle-tier. It's basically a siloed test with a (mostly) narrow focus, designed to make sure that the individual components of a service follow the requirements that are usually laid out prior to development work being done. This can also be called 'integration testing'.

19
votes

I will disagree. For me these terms are in nutshell:

System test: I check if my own system works as expected. For example on e-commerce site: If my customer goes through checkout, correct data are sent to the warehouse (which is owned by someone else)

End To End test: As stated above, the actual workflow. Someone puts a piece of goods to the shopping basket and fills in the user data, pays for it. I check if I actually received payment, make call to warehouse, make sure they received the data. And as little cherry on the pie: By receving the parcel, I make sure, that those data were good enough, were printed correctly, especially, when my real name is Pavel Janíček (see the funny diacritics? they sometimes get printed out incorrectly).

And here you realise that even when you send out data as expected and negotiated, you may have problem somewhere along the side

9
votes

The answers are good explaining the difference, I will add that it's possible to come across TWO different definitions of End-to-End testing: one vertical and one horizontal (more frequent and which is described in the answers):

enter image description here

4
votes

Integration System Testing: All the various system components are tested if they give the correct expected results in minute details.

End-to-End Testing: The entire application is tested from the beginning to end as if to be satisfied when viewed from the customer.

2
votes

Comparing End-to-end testing and System testing is like comparing fruit to colors. End-to-end (E2E) testing is a "testing type" and system testing is a "testing level". In other words an E2E test is always a system test, but a system test is not necessarily an E2E test.

E2E testing is heavily a non-functional test, although there are certainly functional specifications that can be validated through an E2E test. E2E's are usually done after functional system tests are run. User Acceptance tests (in aproduction environment), Exploratory tests (in QA or staging environments), and any other situation where you run the SUT in an environment that tries to mimic real usage would be an E2E test, whereas system level tests might be run in a non-production environment (like a development environment). Although that doesn't mean you couldn't run an E2E test in dev... The nature of testing terminology makes answering this difficult since the industry is still trying to feel out and nail down standards.

0
votes

I have slightly different angle for these two most important testings.

End to end testing: As per my point of view End to end testing is to cover complete work flow of application use case. to complete the end to end flow of any use case you may need to cover testing (at least interaction like 'request and response validation') of other individual application also. eg. if you are using end to end flow of an eCommerce application your application final steps is to take user to a payment gateway for making payment. now testing request and response of the payment gateway integration functionality is part of system integration testing or end to end testing.

System testing: While system testing's scope is limited to validating the each and every functionality of our application only.

That's my view. any correction are most welcome.