End-to end testing is done after functional testing. The purpose behind doing end-to-end testing is that
To validate the software requirements and integration with external interfaces
Testing application in real world environment scenario
Testing of interaction between application and database