This is a nice way to solve any misunderstandings between the teams. But there are occasions where the problematic modules were written by the same team or person. Then it is not a communication issue that caused the mismatch between the modules. It is a design or programming fault that caused it. Could such issues be caught by integration tests? Is this their purpose? To my understanding, it sounds extremely difficult for integration tests to catch errors that require the problematic modules to be at specific states. It is not humanly feasible to write integration tests for every combination of state between the modules. What is your opinion? If its not integration tests, then how such errors could be caught?