HomeTesting Concepts

What is End-to-End Testing?

What is End-to-End Testing?
Today’s complex software systems are nothing but interconnection of multiple sub-systems. Though these internal sub-systems can be tested in isolation, there is also a possibility of testing the scenarios which cover multiple sub-systems. End-to-End testing is nothing but testing the system as a whole (i.e. Testing the end-to-end flows which cover multiple interconnected sub-systems).

Example of End-to-End Testing: Let’s take an example of any e-Commerce applications like Flipkart/Amazon. These applications are complex software systems which are nothing but an interconnection of multiple sub-systems like Login, Product Search, Adding to Cart, Checkout, Payment and Order management. These interconnected sub-systems can be tested in isolation (For example, testing only the Login functionality to check whether the User is able to login to the System with valid credentials). But coming to End-to-End Testing, Testing is performed to check the end-to-end flows. The following example/steps of an End-to-End Testing flow will cover multiple interconnected sub-systems:
  1. Log in to the Application
  2. Search for the required product
  3. Add the product to the Cart
  4. Check out the product
  5. Make payment for the selected product
  6. View the details of the placed order

Difference between System Testing and End-to-End Testing: The following points will help you in understanding the difference between System Testing and End-to-End Testing:
  • System Testing – The purpose of System Testing is to check whether all the integrated Units of the System are working together correctly.
  • End-to-End Testing – The purpose of End-to-End Testing is to check whether all the real-time end-to-end user scenarios/flows covering multiple interconnected sub-systems are working correctly.

Types of End-to-End Testing: End-to-End Testing can be categorized into the following types:
  • Horizontal End-to-End Testing: End-to-End Testing performed horizontally on the system to check the end-to-end real-time user flows from start to finish. The following is an example of Horizontal End-to-End Testing:
    1. Log in to the Application
    2. Search for the required product
    3. Add the product to the Cart
    4. Check out the product
    5. Make payment for the selected product
    6. View the details of the placed order
  • Vertical End-to-End Testing: End-to-End Testing performed from top layer of the system to the bottom layer of the system. In this testing each and every sub-system of the system is tested independently started from the top layer (UI Layer tests), followed by the API/Web Services tests layer and the bottom Unit Tests layer. For example, testing a scenario of Login functionality started from User Interface layer, connecting the API layer and the Unit layer. Here the testing checks the scenarios starting from UI layer to Unit layer. As part of Vertical End-to-End Testing, the interaction of Web Services and Databases will also be verified in complex systems.

The following diagram depicts End-to-End Testing types:

More Details on End-to-End Testing: The below are few points, which help you in understanding End-to-End Testing in detail:
  • End-to-End Testing is performed after System Testing
  • In End-to-End Testing, the communication of the system with hardware, network, database and other third-party application will also be tested.
  • End-to-End Testing is performed from start to finish in order to represent real-world activities performed by the end users in the production/live environments.
  • Both Horizontal and Vertical End-to-End testing types are required for increasing the quality of the software system.
  • End-to-End Testing has the combined benefits of Black Box Testing and White Box Testing.
  • Automation of End-to-End Testing scenarios/flows will result in faster delivery of the Software system.
  • End-to-End Testing is also known as Chain Testing.

Conclusion: End-to-End testing is a type of testing which is performed to verify the software system as a whole. In this testing, end-to-end flows covering the multiple interconnected sub-systems will be created to test the real-world activities performed by the end users in the production/live environments. End-to-End testing is performed horizontally and vertically to increase the test coverage and increase the quality of the software system.

Please leave your questions/comments/feedback below.

Happy Learning 🙂

Arun Motoori (www.QAFox.com)

Comments (0)

Leave a Reply

Your email address will not be published. Required fields are marked *