Yet another topic where the expressions are mixed up although they are not interchangeable. E2E testing in itself would worth a separate blog post, but let me try and write about these three expressions within these columns.
Questions related to System Testing and User Acceptance Testing (UAT) are mostly junior or experienced level (not counting the process related topics). On the other hand, I would only ask an experienced or perhaps senior tester about E2E testing, not a junior.
Level vs Type
System Testing and Acceptance Testing are test levels, and they sit on the top 2 levels of the V-model's right wing. These are also the top 2 of the 4 test levels defined in the ISTQB CTFL. Contrary to that, end-to-end (E2E) testing is a type of testing.
E2E Testing: the term itself confuses so many people. The reasons why:
Some believe that it means thorough and deep testing of the whole system
Some believe that it purely means going through user journeys of a UI application
Some consider testing the whole system with atomic test cases as E2E testing
All of them are correct. E2E is a self-descriptive expression. It means that you want to get from one end to the other.
It could be just a simple user journey. It does not matter whether you exercise the UI of an app, or if you hit the end-points, you just simply verify one user journey from the first step to the last one.
You can validate the functionality of the whole system, end-to-end. This is what System Testing is about (see details below), and that's the reason why some people consider System Testing to be E2E and vice-versa.
Hitting all the end-points and validating the responses without concatenating these test cases (aka. executing atomic tests) is also an E2E validation of an API portfolio. You validate whether all the single end-points are working as they should be. In some cases this equates to system testing.
To sum it up, there are three ways to describe an E2E test:
Validation of a system's functionality end-to-end
Validation of a single user journey end-to-end
Validation of all the related services separately
If you know of any other ways to describe E2E testing, then post it in a comment!
System Testing: during execution, all of the components are tested against the whole system from a functional requirement point-of-view.
Quoting the ISTQB CTFL: "System testing focuses on the behavior and capabilities of a whole system or product, often considering the end-to-end tasks the system can perform and the non-functional behaviors it exhibits while performing those tasks."
Acceptance Testing: many people mix it up with UI testing or E2E testing. Both of those are test types, while Acceptance Testing is a level. The main difference between this and the system level is that Acceptance Testing is typically executed by business representatives, or showcased by testers in the form of a demo to those business people. The scope is usually narrowed down to the new features and any planned changes that occurred during the development of the new version. Regression issues are meant to be found before this stage of testing. Acceptance Testing is not necessarily executed against a UI, such as Operational Acceptance Testing.
Quoting the ISTQB CTFL: "Acceptance testing, like system testing, typically focuses on the behavior and capabilities of a whole system or product. [..] Acceptance testing may produce information to assess the system’s readiness for deployment and use by the customer (end-user)."
Comments