Choose what the test exercises
There are two useful arrangements:
The first arrangement does not prove the second. Record which path you tested, including the exact emulator, adapter version, backend selection and endpoint. A local URL in one setting is insufficient evidence that every backend request stays local.
Build a repeatable test
- Use dedicated test configuration and credentials with no access to production resources.
- Start the required local services and verify readiness before sending requests.
- Configure the application and adapter endpoints explicitly. Confirm the expected target receives the request.
- Create uniquely named test resources and exercise create, read, update and delete operations your application needs.
- Verify outcomes, collect errors and response identifiers, then clean up only those resources.
- Repeat from known state to detect dependence on leftover data.
Test failures as well as success
Include a missing resource, invalid input and a denied action where the emulator supports that behavior. Exercise an interrupted connection and inspect possible effects before retrying a write. A synthetic failure does not establish the target cloud’s actual retry or throttling behavior. For automated tests, use isolated resource names, bounded timeouts and explicit cleanup. A test suite should not wait indefinitely for a container or local service that failed to start.Verify against the real target
Use a dedicated cloud test scope to validate permissions, credential refresh, network access, regions, quotas, consistency and resource lifecycle behavior. Measure latency and throughput there under the conditions you intend to operate. Keep the local test for fast regression feedback and the cloud test for behaviors a local emulator cannot establish. Report which environment produced each result when debugging.What local evidence means
Keep these evidence classes separate in test reports. “Works locally” is useful regression evidence, not a production compatibility claim.