TMForum ODA CTK API specification conformance testing with Specmatic

By Joel Rosario

Share this page

Introduction

TMForum is a collaborative platform for service providers, technology suppliers, and other stakeholders in the telco space to share best practices, develop standards, and drive innovation. Their Open API program is a global initiative to enable seamless connectivity, interoperability and portability across complex ecosystem services. And in this context, TMForum provides a Conformance Test Kit (CTK) to self-certify implementation of their Open API specifications. This is a great idea. However we recently discovered some major issues with the TMForum Conformance Test Kit (CTK) v5.0.0 and will demonstrate how using Specmatic can address these problems.

The Problem with CTK5

By running the CTK5 test, we discovered that it is possible for the API implementation to successfully pass the conformance verification and yet to be out of sync with the OpenAPI specification that is on their website. When we investigated further, we realized that the CTK contains a copy of the specification on TMForum’s Open API Table. And the Cypress test suite itself is a repetition of several aspects that are already specified in OpenAPI. With this duplication, comes the possibility of divergence and that is exactly what we see when comparing specifications on TMForum Open API Table (for example, the Party API, TMF 632 v5.0.0, published on 19-Sep-23) with copies of the same that ship with the CTK.

Furthermore, the request payload that users of the CTK are supposed to modify in accordance with their test data setup, is not validated against the OpenAPI specification that is shipped with the CTK5. This may allow users to inadvertently provide an incorrect (OpenAPI schema invalid) request payload and yet successfully pass the conformance test.

CTK5 also does not verify request parameters, error response schema and properties of fields such as optionality, nullability that are defined in the OpenAPI specification in the request.

Introducing Specmatic

To overcome these challenges, we replaced the Cypress tests with Specmatic contract tests. Specmatic leverages the primary source of truth, the API specification on the TMForum website, to generate tests in a completely no-code manner. By validating payloads against the specification, Specmatic ensures that the application remains in sync with the defined API structure and behavior.

Benefits of Specmatic

There are several advantages of adopting Specmatic for conformance testing:

1. Elimination of Duplicate Specifications: With Specmatic, there is only one source of truth—the API specification on the TMForum website. This eradicates the confusion caused by multiple specifications and ensures consistency throughout the testing process.

2. Validated Request Payloads: Specmatic validates payloads against the specification before executing tests, preventing out-of-sync requests. This ensures that the implementation adheres to the defined API structure and accurately handles incoming data.

3. Comprehensive Verification: Unlike the CTK, Specmatic verifies not only the response schema but also other crucial aspects such as 4xx error responses, optionality, nullability, and more. This comprehensive validation guarantees a higher degree of conformance and increases the reliability of API implementations.

4. Simplified Architecture: By generating tests based on the OpenAPI specification, Specmatic eliminates the need for duplicating logic already present in the specification. This simplification streamlines the testing process and reduces maintenance efforts.

5. End-to-End Testing and Fault Injection: Specmatic goes beyond conformance testing by allowing API dependencies to be stubbed out. This enables full end-to-end testing in isolation and even facilitates fault injection to ensure the application can handle various scenarios, such as timeouts and outages.

Demonstration and Comparison

By running a side-by-side comparison of the issues identified in CTK 5 and how Specmatic effectively addresses them, we can see how Specmatic’s contract tests detect incompatible changes made to the application, validate request payloads, and comprehensively verify 4xx error responses. Additionally, Specmatic provides an API coverage summary, offering an overview of the percentage of APIs that adhere to the specification.

Conclusion

Specmatic presents a superior alternative to the current Cypress based test setup in CTK for conformance testing. By leveraging the primary API specification as the single source of truth, validating request payloads, and generating tests based on the OpenAPI spec, Specmatic ensures accurate conformance of API implementations. With its simplified architecture, comprehensive verification, and additional testing capabilities, we believe Specmatic can resolve current problems and greatly enhance the abilities of the CTK.

Related Posts

Specmatic vs WireMock

By Hari Krishnan

Comparison: Specmatic vs WireMock

API mocking is only effective if the mocks are truly representative of the provider / services they are emulating. Deviations between mocks and providers can
Read More
Specmatic vs Pact & Pactflow comparison

By Hari Krishnan

Comparison: Specmatic vs Pact.io and Pactflow.io

Specmatic and Contract Driven Development differ significantly from Pact. We built Specmatic out of our own necessity where Pact did not fit the bill for
Read More

By Naresh Jain

Contract Testing using OpenAPI Specs as Executable Contracts

Demonstration video showing OpenAPI specifications being leveraged as executable contracts with Specmatic Sample projects with OpenAPI https://docs.specmatic.io/sample_projects.html#openapi
Read More
Contract Testing with Specmatic - Markus Oberlehner

Stubbing an HTTP end-point with Specmatic

Markus Oberlehner gives a brief overview on the topic of Contract Testing with Specmatic and his experience using it for stubbing an HTTP end-point.
Read More
Specmatic API Coverage Report

Early detection of mismatches between your API specs and implementation: Exploring Specmatic’s API Coverage Report

Specmatic’s API coverage report helps identify any mismatches between an OpenAPI specification and an application's endpoints early in the development lifecycle. The report lists all
Read More
Dave Farley pointing to the Specmatic tool for easy microservice testing, featured on Dave Farley's Continuous Delivery channel.

“Easy Microservice Testing” – Specmatic featured on Continuous Delivery channel

Dave Farley is a respected author and widely recognised proponent of Continuous Delivery. In this video on his Continuous Delivery YouTube channel he discusses why
Read More
JDBC stubbing with Redis and Specmatic contract testing.

Break the Chains of Database Dependencies: Leveraging Specmatic for JDBC Stubbing

With Specmatic JDBC stub, you can easily test APIs without the need for a complex database setup. By switching out the real database with a
Read More

JMS Mocking with AsyncAPI using Specmatic

The JMS mock is wire compatible and can be controlled entirely from within the test. This means you can run the test locally or also
Read More
Specmatic + Kafka demo video thumbnail

Kafka Mocking with AsyncAPI using Specmatic

The Specmatic Kafka mock is wire compatible and entirely within the control of the test, the test can run locally and in CI and deliver
Read More
Redis stubing - specmatic contact development with contract testing.

Redis Stubbing with Specmatic Contract Testing

Instead of using an actual instance of Redis, we'll stub it out and have the contract test set expectations so that the Redis stub knows
Read More