The problem with alternative a is that it doesn't scale. It gets only harder to maintain the tests as the system evolves and new microservices arise. The problem with alternative b is that the mocks might not behave the same way as the real dependencies, and thus we might miss integration problems. So, how to proceed? Glad you asked. This project will focus on Consumer Driven Contract Testing to overcome those limitations. It is a technique based on mocks, so that we benefit from fast feedback and no scalability issues, that attacks the problem of potential incompatible behavior by recording the interactions with the mocks and then allowing the real services to test that they behave the same way the mock did instead.