Contract Testing Platform Enters Public Beta I’m very excited to announce the public beta of our Contract Testing platform!

You can sign up now for free!

As a developer of open-source and commercial applications, and through my decade-long journey working with enterprise customers enabling them to shift testing to the left, I came to the realization that testing is broken! You can read more about it here.

End-to-end testing, the most popular testing strategy today, was designed to test web and mobile applications, however testing systems comes with a new set of challenges like having a growing number of services that need to be tested, as well as the dependency of these service teams on integrated test environments.

Contract Testing holds great promise for testing Cloud Native systems. It can be used to prevent software regressions in complex distributed systems, scaling across any number of services and requiring about the same level of effort whether you have 5, 500, or 5,000 services.

UP9 is a microservice testing platform for Cloud Native systems. It uses an instant & effortless form of Contract Testing. UP9 helps increase engineering productivity by enabling developers to reduce the time they spend building tests and maintaining costly test environments.

All of the features described in this article are part of our "Getting Started" package and are free of charge! You can read more about it here.

Interactive Observability

As a Contract Testing platform, UP9 helps you understand how your services interact with each other by providing visibility to each and every service contract (e.g. Swagger), contract dependencies, contract schema, and traffic log.

Service Dependency Map

UP9 also provides a way to take the initiative and proactively troubleshoot, poke and interact with your services with ready-to-run payload and immediate feedback.

Interact with your services with ready-to-run payload

Troubleshoot your services with instant feedback

Tests, Mocks & Contracts That Are Inferred from Service Traffic

When installed in a Kubernetes, Docker or ECS cluster, UP9 observes the service traffic and continuously infers tests, mocks and contracts from the service traffic. Tests can be exported to most popular coding languages and frameworks like Python, Java, Javascript and Postman. Mocks can be exported to various mock hosting solutions like Wiremock, HoverFly and Postman.

All artifacts (Tests, Mocks & Contracts) are version controlled.

Accessing the Artifacts

Once you have UP9 installed and observing service traffic, you can download a zip file that includes all of the tests, mocks and contracts that belong to a certain model version.

Download Tests, Mocks and Contracts This is how the folder looks when opened:

[zipped folder]/
├── tests/
├── mocks/
└── contracts/

Tests, Mocks and Contracts Folder

MIT License

All artifacts come as open source with an MIT License.

Tests

The tests.py file in the tests folder, includes the complete contract test-suite and covers all endpoints that were observed in service traffic.

[zipped folder]/
├── tests/
	├── tests.py

Tests generated by Machine Learning

The readme file within includes instructions on how to run your tests from your local machine. You can run all tests at once or run specific tests by using the pytest command:

Copy to clipboard
pytest tests.py::<service>::<endpoint>

PyTest Execution

Mocks

The mocks folder includes mock configuration for all services that were observed in service traffic. Mock configuration

To run one or more of these mocks you can follow the instructions in the new open-source project, Mockintosh.

You can run all mocks together in one command: Run all mocks at once

Or run the mock for a specific service: Run in a single mock configuration

Versions

You can access historical versions through the time machine, and open a model version from the past:

Version-controlled tests, mocks and contracts

More Features To Come

There is much more that we didn’t have time to document yet. Features like smart tests that include test sequence, dependencies, data extraction, criteria and authentication support. That’s all coming very soon.