Service Testing Challenges
The primary challenge for service testing is the creation and maintenance of mocks.
- Accuracy requirements: The mocks should accurately reflect the services being mocked to validate functional needs.
- Reflect the contract between the consumer and the producer: Correctly reflecting the contract is an obvious need. However managing contracts as both producer and consumer services evolve independently can get tedious.
- Accurately represent expected values for validating functionality: Beyond the contract, functional validation requires ensuring that the actual business logic is correct. This requires a variety of test cases, ideally exercising all code paths with a wide variety of parametric combinations in API requests.
- Context-sensitive mocks: Context sensitivity is critical for accurate mocking. The same API request can return different results depending on the context of the request and the producer. For proper functional verification, the mocks must return responses that are context dependent even if the requests are identical.
- Engineering efficiency
- Not place undue burden on developers: Mocks become stale as producer services change, and requires ongoing effort to keep them current. If the process requires a high level of manual effort, then it is almost certain that the mocks will go stale and become inaccurate fairly quickly. A sustainable process should offer a high degree of automation.
- Be easy to update when either the service or producer functionality changes: Service changes can either affect the consumer of a service, or change the requests made to the producer services.
The critical necessity is to enable developers to easily create and maintain accurate mocks of services. In the next sections, we will show how Mesh Dynamics API Studio helps address these challenges.