End To End Testing is a software testing method that validates entire software from starting to the end along with its integration with external interfaces. The purpose of end-to-end testing is testing whole software for dependencies, data integrity and communication with other systems, interfaces and databases to exercise complete production like scenario.
Along with the software system, it also validates batch/data processing from other upstream/downstream systems. Hence, the name “End-to-End”. End to End Testing is usually executed after functional and system testing. It uses actual production like data and test environment to simulate real-time settings. E2E Testing is also called Chain Testing.
Why End to End Testing?
End To End Testing verifies complete system flow and increases confidence by detecting issues and increasing test coverage of subsystems. Modern software systems are complex and interconnected with multiple subsystems that may differ from current systems. The whole system can collapse by failure of any subsystem that is major risk which can be avoided by End-to-End testing
End to End Testing Design framework consists of three parts
- Build user functions
- Build Conditions
- Build Test Cases
Build User Functions
Following activities should be done as a part of build user functions:
- List down the features of the system and their interconnected components
- List the input data, action and the output data for each feature or function
- Identify the relationships between the functions
- Determine whether the function can be reusable or independent
Build Conditions based on User Function
Following activities are performed as a part of build conditions:
- Building a set of conditions for each user function defined
- Conditions include sequence, timing and data conditions
Build a Test Scenario
Building the test scenario for the user function defined