This tests a group of related units together and their interface. This comes from interface specifications and tests module interactions.
Failures from integration testing well-tested modules could be caused by:
- Bad use of interfaces
- Wrong hypothesis on the behaviour/state of related modules
- Use of poor drivers/stubs: a module may behave correctly with simple stubs but result in failures when integrated with actual modules