Features | Pactflow | HyperTest |
---|---|---|
What is it? | Contract testing tool | Complete backend testing: code, APIs, database calls, message queues & inter-service contracts |
How does it work? | Manual. Write contracts (PACT files) for your service manually | 100% autonomous. Generates contracts by recording actual interactions between consumer - provider. Provider can be a downstream service, database, message queue or 3rd party API. |
Scope of testing | Limited to testing contracts | Test code, API responses, database calls, message queues and inter-service contracts |
What it can’t do? | Will not test database calls. | |
Will not test grpc, graphQL calls. Will not test async flows | None. Supports REST, gRPC, GraphQL, Kafka, amqp and all kinds of async flows | |
Test Maintenance | Yes. Ongoing maintenance to keep pace with changes | Zero maintenance. Tests and mocks are auto-generated and auto-refreshed. |
Quality of contract Tests | Will not test change in data value | Tests contracts as well as data |
Collaboration | If producer changes the contract, it needs to update the PACT file or the consumer fails in production | If producer undergoes a change HyperTest will trace this change to all upstream consumers. Auto-update contracts if producer - consumer agree. |
Integrations | LIMITED. | |
Does not cover database calls | ||
Does not cover async calls | COMPREHENSIVE |
https://www.hypertest.co/roi-calculator
Agile teams place a lot of importance on unit tests which are useful in checking business logic but fail to test the integration layer i.e. the dependencies between services, that constitute more than 50% of all production issues.
This problem becomes more acute in apps with service-oriented architecture where it is not uncommon for downstream changes to cause upstream failures. Rapid development and limited visibility on inter-service dependence is the root cause of all integration issues.
HyperTest helps developers working on distributed systems in high-speed environments to autonomously test new code changes with all its dependencies i.e. external services, 3rd party APIs, databases and message queues, right at the source.
<aside> 1️⃣ Testing Service Mesh with Distributed Tracing HyperTest context propagation provides traces that spans multiple microservices and helps developers debug the root cause of any failure in a single view. HyperTest cuts debugging time and tracks how data flows between services, giving you an entire chain of events that led to failure.
</aside>
<aside> 2️⃣ Test code, APIs, Data Layer and Message queues without writing code
</aside>
<aside> 3️⃣ Code coverage Provides a code coverage report that no other API and backend testing tool provides. This covers not just core functions that carry business logic but also the lines of code that are responsible for integrations
</aside>
<aside> 1️⃣ Syngenta discovered a potential n+1 query problem in code with HyperTest which might already be adding performance and latency. When the developer requested 65 items in an API, HT observed that for each item, 2 database calls were being made within a loop. This led to a total of 135 outbound calls, as reported by HyperTest, which was concerning and a potential performance issue.
Performance and latency issues due to this problem listed here
</aside>
<aside> 2️⃣ Autonomously built an integration test for a long graphQL request. Tested that to catch a regression. The Syngenta developer had to write no code for it. Added coverage
</aside>