End-to-end testing is a testing technique used to test whether the flow of an application right from start to finish is behaving as expected. The entire application is tested with real world scenarios to check whether every module is communicating with other module properly, interfaces, database, network, and other applications.
End to end testing is usually performed after completion of functional and system testing of any application.
It uses actual production like data and test environment to simulate real-time settings. End-to-End testing is also called Chain Testing.
Let us understand end to end testing with the help of example:
Suppose we want to do end to end testing of Gmail account then tester will have to do following tasks:
1. Initially tester will login to Gmail and check the UI and desired fields i.e. user id and password field are present or not.
2. Tester will try to enter incorrect details and check proper validation messages are fired or not, and then user will enter valid credentials and check whether he is able to login into his or her Gmail account.
3. Tester will check after login he can get into inbox or not, is it possible to open and compose a mail or not.
4. Tester will check for opening, reading, unreading, composing new email, reply or forward any email and delete a mail.
5. Tester will also check for Opening Sent items and checking emails, checking mails in Spam folder.
6. Final step will be logging out of Gmail application by clicking ‘logout’ button.
So this is the End to End Testing of Gmail in which tester check the flow of Gmail from starting to end point means from logging to logout point.
Why End to End Testing?
Modern software systems are complex and are interconnected with multiple sub-systems. A sub-system can be within the same organization or can be of different organization. If any one of the sub-system fails, the whole software system could collapse. Such major risk can be avoided by End-to-End testing.
End-to-End testing verifies the complete system flow. It increase test coverage of various sub-systems. It helps detect issues with sub-systems and increases confidence in the overall software product.
Objectives of the End-to-End Testing:
- The main objective of the end-to-end testing is to know and understand the exact status of the system and in what manner it behaves in a real-time ambiance.
- In End-to-End testing the user interface is not a significant part because this is merely a representation of what lies underneath. Rather important functionalities need to be checked.
- End to end testing is an important test that organizations need to conduct to improve their efficiency and productivity.
- Designing an effective test is essential, because it will address the issues that affect the system. Automated end-to-end testing is always better than manual testing.
Metrics for end to end testing:
Test Case preparation status: It represent the progress of the planned test cases that are under preparation.
It tracked in the form of graph.
Weekly Test Progress: Week wise representation of the test cases execution progress. It can be reflected through percentage representation for pass, fail, executed, not executed, invalid, etc. cases.
Defects Status & Details: It gives Percentage of open & closed defects by week. Also, week-wise defects distribution based on severity and priority.
Environment Availability: Total number of hours “up” / Total number of hours scheduled per day for testing
Advantage of End-to-End testing:
- Test under real conditions, no artificial environments.
- Applicable in multiple stages of development.
Disadvantage of End-to-End testing:
- It is quite complicated to carry out this test.
- Cost associated with automating the end-to-end testing, is too high.