# Contract Testing

> Compares an observed interface with an agreed contract

Record: `reasoning:technique-contract-testing`
Kind: technique
Canonical: https://banes-lab.com/ontology/reasoning#reasoning-technique-contract-testing

Listed in [Reasoning records](https://banes-lab.com/api/records/reasoning.md), after [Differential Testing](https://banes-lab.com/records/reasoning/technique-differential-testing.md) and before [Runtime Validation](https://banes-lab.com/records/reasoning/technique-runtime-validation.md).

## Mode

- [comparison](https://banes-lab.com/records/reasoning/mode-comparison.md)

## Surfaces

- [interface-correctness](https://banes-lab.com/records/reasoning/test-surface-interface-correctness.md)
- [interaction-correctness](https://banes-lab.com/records/reasoning/test-surface-interaction-correctness.md)
- [protocol-correctness](https://banes-lab.com/records/reasoning/test-surface-protocol-correctness.md)

## Linked from

- [The modes](https://banes-lab.com/ontology/reasoning/the-modes.md)
- [The test surfaces](https://banes-lab.com/ontology/reasoning/the-test-surfaces.md)
