# SDK Contract Testing
Source: https://speakeasy.com/docs/sdks/sdk-contract-testing

import { Callout } from "@/mdx/components";



<Callout title="Beta" type="warning">

SDK contract testing features are are considered `beta` maturity. Breaking changes may occur and not all languages are yet supported. Currently SDK testing is supported for TypeScript, Python, Go, and Java.

</Callout>

Speakeasy verifies functionality by generating and running contract tests for your SDKs.

## Design philosophy

Just as with our [SDK design philosophy](/docs/languages/philosophy), Speakeasy strives to deliver a best-in-class development experience for contract testing. Speakeasy's contract tests are designed to be:

- **Human readable:** Speakeasy-generated tests avoid convoluted abstractions and are easy for developers to read and debug.
- **Batteries-included:** Tests can be generated for SDK operations (when enabled), with the option to use a real API testing environment. A generated mock API server works out of the box, avoiding complex test environment setups, such as data seeding.
- **Rich in coverage:** Generated contract tests verify all possible data fields to ensure full coverage. If data examples are not available, realistic example values for the field are used based on name, type, and format information.
- **Customizable:** Custom tests are supported beside generated tests.
- **Minimal dependencies:** Speakeasy avoids adding unnecessary dependencies, prioritizing native language libraries and incorporating third-party libraries only when the customer benefits far outweigh the cost of the extra dependency.
- **Easy integration:** Speakeasy testing easily integrates into existing API development and testing workflows.
- **Open standards:** No vendor lock-in necessary.

## Features

Speakeasy's test generation uses the [Arazzo Specification](/openapi/arazzo) to generate tests for APIs. Arazzo is a simple, human-readable, and extensible specification for defining API workflows.

Speakeasy's Arazzo-powered test generation provides the following features:

- Contract tests for operations in the OpenAPI document (when test generation is enabled), including:
  - Generating or modifying a `.speakeasy/tests.arazzo.yaml` file to include tests for operations.
  - Using examples available in the OpenAPI document or autogenerating examples based on the field name, type, and format of schemas.
  - Generating a mock server capable of responding to API requests, making the tests functional.
- Custom tests and workflows for any use case, with rich testing capabilities, such as:
  - Testing multiple operations.
  - Testing different inputs.
  - Validating the correct response is returned.
  - Running tests against a real API or mock server.
  - Configuring setup and teardown routines for complex E2E tests.

## Prerequisites

To enable testing features, the following are required:

- An existing, successfully generating SDK.
- The [Speakeasy CLI](/docs/speakeasy-reference/cli/getting-started) or a GitHub repository with Actions enabled.
- [Docker](https://www.docker.com/) or an equivalent container runtime (if using the mock server for local testing).
- An [Enterprise tier account](/pricing).
- Enable the SDK contract add-on in `settings/billing` under your account.

## Next Steps

- [Bootstrapping SDK contract tests](/docs/sdk-contract-testing/bootstrapping-test-generation)
- [Customize SDK contract tests](/docs/sdk-contract-testing/customizing-sdk-tests)
- [Set up testing in GitHub Actions](/docs/sdk-contract-testing/github-actions)