> ## Documentation Index
> Fetch the complete documentation index at: https://qodex.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Functional testing

> A plain definition of functional testing, how it differs from non-functional testing, and how Qodex automates it for APIs and web apps.

# Functional testing

Functional testing checks that software does what it is supposed to do. You give a feature an input, then confirm the output matches the expected behavior, without caring how the code works inside. It answers "does this feature behave correctly?" against the requirements.

Examples: a login rejects a wrong password, a checkout charges the right amount, an API returns 404 for a missing record.

## Functional versus non-functional testing

* **Functional testing** checks behavior: the right result for a given input.
* **Non-functional testing** checks qualities: speed, load, security, accessibility, and usability.

A single feature usually needs both. "The search returns the correct results" is functional. "The search returns them in under 200 ms under load" is non-functional.

## How Qodex automates functional testing

Qodex is primarily a functional testing platform for APIs and web apps. You describe the behavior to check in plain English, an agent explores the real app and writes a runnable scenario with assertions, and the scenario replays deterministically on every pull request, schedule, or webhook. It also covers security, a non-functional concern, on the same suite.

## Related

<CardGroup cols={2}>
  <Card title="The four types of software testing" icon="layers" href="/docs/types-of-software-testing">
    Where functional testing sits among the testing levels.
  </Card>

  <Card title="API testing" icon="plug" href="/docs/api-testing">
    Author and replay API behavior checks.
  </Card>

  <Card title="UI testing" icon="monitor" href="/docs/ui-testing">
    Intent-driven browser scenarios for web apps.
  </Card>

  <Card title="Test rules in plain English" icon="pencil" href="/docs/api-testing-test-rules">
    Write assertions in natural language.
  </Card>
</CardGroup>
