As the scope of integration in an application system approaches all components in the system, the appropriate testing techniques are very similar to conventional system testing. Testing is trivial. Testing is simply poking around until you run out of time. All we need to do is start the app, try each use-case, and try some garbage input. Hunches about testing completeness are notoriously optimistic.
Adequate testing requires a sophisticated understanding of the system under test.
You need to be able to develop an abstract view of the dynamics of control flow, data flow, and state space in a formal model. You need an understanding of system requirements at least as good as the designer's or user's. You need to be able to define the expected results for any input and state you select as a test case. This is interesting work for which little automation is available. Automated GUI testing is sufficient.