# The techniques

> Each technique a surface is observed by works in one reasoning mode and is listed with the surfaces that use it.

Page: Ontology · Reasoning
Canonical: https://banes-lab.com/ontology/reasoning#the-techniques

Each technique a surface is observed by works in one reasoning mode and is listed with the surfaces that use it.

### static-analysis

- Mode: [observation](https://banes-lab.com/records/reason/mode-observation.md)

Details

Principle
Reads structure and types for defects before execution

Surfaces
[numerical-correctness](https://banes-lab.com/records/reason/test-surface-numerical-correctness.md), [security-correctness](https://banes-lab.com/records/reason/test-surface-security-correctness.md), [configuration-correctness](https://banes-lab.com/records/reason/test-surface-configuration-correctness.md)

### unit-testing

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

Details

Principle
Compares observed with expected results on an isolated unit

Surfaces
[semantic-correctness](https://banes-lab.com/records/reason/test-surface-semantic-correctness.md)

### integration-testing

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

Details

Principle
Compares observed with expected results across cooperating parts

Surfaces
[functional-correctness](https://banes-lab.com/records/reason/test-surface-functional-correctness.md), [interaction-correctness](https://banes-lab.com/records/reason/test-surface-interaction-correctness.md), [data-correctness](https://banes-lab.com/records/reason/test-surface-data-correctness.md)

### end-to-end-testing

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

Details

Principle
Compares observed with expected results on the whole system

Surfaces
[interaction-correctness](https://banes-lab.com/records/reason/test-surface-interaction-correctness.md)

### property-based-testing

- Mode: [classification](https://banes-lab.com/records/reason/mode-classification.md)

Details

Principle
Asserts that an invariant holds across a generated input space

Surfaces
[semantic-correctness](https://banes-lab.com/records/reason/test-surface-semantic-correctness.md), [state-correctness](https://banes-lab.com/records/reason/test-surface-state-correctness.md), [numerical-correctness](https://banes-lab.com/records/reason/test-surface-numerical-correctness.md), [determinism-correctness](https://banes-lab.com/records/reason/test-surface-determinism-correctness.md)

### differential-testing

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

Details

Principle
Compares observed results with a reference implementation, the oracle

Surfaces
[semantic-correctness](https://banes-lab.com/records/reason/test-surface-semantic-correctness.md), [consistency-correctness](https://banes-lab.com/records/reason/test-surface-consistency-correctness.md)

### contract-testing

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

Details

Principle
Compares an observed interface with an agreed contract

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

### runtime-validation

- Mode: [observation](https://banes-lab.com/records/reason/mode-observation.md)

Details

Principle
Checks boundary data against its declared shape at runtime

Surfaces
[interface-correctness](https://banes-lab.com/records/reason/test-surface-interface-correctness.md), [configuration-correctness](https://banes-lab.com/records/reason/test-surface-configuration-correctness.md)

### assertion-checking

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

Details

Principle
Checks a runtime condition against an assumed invariant

Surfaces
[semantic-correctness](https://banes-lab.com/records/reason/test-surface-semantic-correctness.md), [state-correctness](https://banes-lab.com/records/reason/test-surface-state-correctness.md), [resource-correctness](https://banes-lab.com/records/reason/test-surface-resource-correctness.md), [consistency-correctness](https://banes-lab.com/records/reason/test-surface-consistency-correctness.md), [data-correctness](https://banes-lab.com/records/reason/test-surface-data-correctness.md)

### fuzz-testing

- Mode: [creation](https://banes-lab.com/records/reason/mode-creation.md)

Details

Principle
Generates adversarial inputs to provoke unhandled failures

Surfaces
[security-correctness](https://banes-lab.com/records/reason/test-surface-security-correctness.md)

### load-testing

- Mode: [prediction](https://banes-lab.com/records/reason/mode-prediction.md)

Details

Principle
Projects behaviour under expected demand

Surfaces
[temporal-correctness](https://banes-lab.com/records/reason/test-surface-temporal-correctness.md), [performance-correctness](https://banes-lab.com/records/reason/test-surface-performance-correctness.md)

### stress-testing

- Mode: [prediction](https://banes-lab.com/records/reason/mode-prediction.md)

Details

Principle
Projects behaviour past its limits to expose timing and ordering defects

Surfaces
[concurrency-correctness](https://banes-lab.com/records/reason/test-surface-concurrency-correctness.md)

### profiling

- Mode: [observation](https://banes-lab.com/records/reason/mode-observation.md)

Details

Principle
Measures the distribution of execution cost

Surfaces
[memory-correctness](https://banes-lab.com/records/reason/test-surface-memory-correctness.md), [performance-correctness](https://banes-lab.com/records/reason/test-surface-performance-correctness.md)

### heap-analysis

- Mode: [observation](https://banes-lab.com/records/reason/mode-observation.md)

Details

Principle
Measures allocation and retention over time

Surfaces
[memory-correctness](https://banes-lab.com/records/reason/test-surface-memory-correctness.md)

### tracing

- Mode: [description](https://banes-lab.com/records/reason/mode-description.md)

Details

Principle
Describes the runtime flow across components

Surfaces
[temporal-correctness](https://banes-lab.com/records/reason/test-surface-temporal-correctness.md), [observability-correctness](https://banes-lab.com/records/reason/test-surface-observability-correctness.md)

### fault-injection

- Mode: [intervention](https://banes-lab.com/records/reason/mode-intervention.md)

Details

Principle
Induces a failure and observes the response

Surfaces
[reliability-correctness](https://banes-lab.com/records/reason/test-surface-reliability-correctness.md), [availability-correctness](https://banes-lab.com/records/reason/test-surface-availability-correctness.md)

### chaos-testing

- Mode: [intervention](https://banes-lab.com/records/reason/mode-intervention.md)

Details

Principle
Induces random failures and observes how the system recovers

Surfaces
[reliability-correctness](https://banes-lab.com/records/reason/test-surface-reliability-correctness.md), [availability-correctness](https://banes-lab.com/records/reason/test-surface-availability-correctness.md)

### model-checking

- Mode: [explanation](https://banes-lab.com/records/reason/mode-explanation.md)

Details

Principle
Proves that a property holds across the reachable state space

Surfaces
[functional-correctness](https://banes-lab.com/records/reason/test-surface-functional-correctness.md), [protocol-correctness](https://banes-lab.com/records/reason/test-surface-protocol-correctness.md)

### deterministic-replay

- Mode: [reflection](https://banes-lab.com/records/reason/mode-reflection.md)

Details

Principle
Reproduces a run to isolate a non-deterministic cause

Surfaces
[concurrency-correctness](https://banes-lab.com/records/reason/test-surface-concurrency-correctness.md), [determinism-correctness](https://banes-lab.com/records/reason/test-surface-determinism-correctness.md)

### monitoring

- Mode: [observation](https://banes-lab.com/records/reason/mode-observation.md)

Details

Principle
Observes live behaviour for deviations from normal

Surfaces
[temporal-correctness](https://banes-lab.com/records/reason/test-surface-temporal-correctness.md), [resource-correctness](https://banes-lab.com/records/reason/test-surface-resource-correctness.md), [reliability-correctness](https://banes-lab.com/records/reason/test-surface-reliability-correctness.md), [observability-correctness](https://banes-lab.com/records/reason/test-surface-observability-correctness.md)

## Links to

- [Observation](https://banes-lab.com/records/reason/mode-observation.md)
- [Numerical Correctness](https://banes-lab.com/records/reason/test-surface-numerical-correctness.md)
- [Security Correctness](https://banes-lab.com/records/reason/test-surface-security-correctness.md)
- [Configuration Correctness](https://banes-lab.com/records/reason/test-surface-configuration-correctness.md)
- [Comparison](https://banes-lab.com/records/reason/mode-comparison.md)
- [Semantic Correctness](https://banes-lab.com/records/reason/test-surface-semantic-correctness.md)
- [Functional Correctness](https://banes-lab.com/records/reason/test-surface-functional-correctness.md)
- [Interaction Correctness](https://banes-lab.com/records/reason/test-surface-interaction-correctness.md)
- [Data Correctness](https://banes-lab.com/records/reason/test-surface-data-correctness.md)
- [Classification](https://banes-lab.com/records/reason/mode-classification.md)
- [State Correctness](https://banes-lab.com/records/reason/test-surface-state-correctness.md)
- [Determinism Correctness](https://banes-lab.com/records/reason/test-surface-determinism-correctness.md)
- [Consistency Correctness](https://banes-lab.com/records/reason/test-surface-consistency-correctness.md)
- [Interface Correctness](https://banes-lab.com/records/reason/test-surface-interface-correctness.md)
- [Protocol Correctness](https://banes-lab.com/records/reason/test-surface-protocol-correctness.md)
- [Resource Correctness](https://banes-lab.com/records/reason/test-surface-resource-correctness.md)
- [Creation](https://banes-lab.com/records/reason/mode-creation.md)
- [Prediction](https://banes-lab.com/records/reason/mode-prediction.md)
- [Temporal Correctness](https://banes-lab.com/records/reason/test-surface-temporal-correctness.md)
- [Performance Correctness](https://banes-lab.com/records/reason/test-surface-performance-correctness.md)
- [Concurrency Correctness](https://banes-lab.com/records/reason/test-surface-concurrency-correctness.md)
- [Memory Correctness](https://banes-lab.com/records/reason/test-surface-memory-correctness.md)
- [Description](https://banes-lab.com/records/reason/mode-description.md)
- [Observability Correctness](https://banes-lab.com/records/reason/test-surface-observability-correctness.md)
- [Intervention](https://banes-lab.com/records/reason/mode-intervention.md)
- [Reliability Correctness](https://banes-lab.com/records/reason/test-surface-reliability-correctness.md)
- [Availability Correctness](https://banes-lab.com/records/reason/test-surface-availability-correctness.md)
- [Explanation](https://banes-lab.com/records/reason/mode-explanation.md)
- [Reflection](https://banes-lab.com/records/reason/mode-reflection.md)
