Consider a modern web application that serves JSON through a REST API to a rich Javascript-based application with one or more single-page apps within it. Our own application is written using Angular JS but the framework is irrelevant to a large extent.
There are the following components where problems can occur:
Server-side
- Database access (including configuration, reference data and data that always needs to be there such as an admin account)
- REST API (business logic, configuration, routing)
- Service bus implementation, which the API uses to serve the requests (components, workflows, configuration)
Client-side
- View Models (state and UI interactions such as dialogs)
- Some HTML rendering
- Routing
- Configuration
How much testing is sufficient? Meaning, what's the minimum effort required to test reliability?
Is it best practice to simply do integration/end-to-end testing (deploy the whole application to a real server with a real database and some sample data) and test all possible scenarios by checking UI-level responses?