# Functional Testing Checklist — AI Features

**Feature:** _______________  **Requirement ID:** _______  **Date:** _______

## 1. Specification is testable

- [ ] Requirement converted into **checkable properties**, not prose
- [ ] "Summarise", "improve", "handle" replaced with measurable conditions
- [ ] Output format defined exactly
- [ ] Acceptance criteria written **before** testing began
- [ ] If you cannot write the check, the requirement is not finished

## 2. Environment pinned

- [ ] Model and version string recorded
- [ ] Temperature and sampling parameters recorded
- [ ] Prompt version recorded
- [ ] Context supplied recorded
- [ ] Without these the result is not reproducible

## 3. Structural assertions (run first — cheap and deterministic)

- [ ] Output parses in the expected format
- [ ] All required fields present
- [ ] Field types correct
- [ ] Arithmetic internally consistent
- [ ] Length within range
- [ ] No personal data where none should appear

## 4. Semantic assertions

- [ ] Answers the question actually asked
- [ ] Grounded in supplied material
- [ ] Complete — uses all relevant information
- [ ] Tone appropriate
- [ ] Rubric max 4 dimensions; judge is a different model

## 5. Behavioural assertions — most skipped, often most important

- [ ] Refuses when it should
- [ ] Asks for clarification on ambiguity rather than guessing
- [ ] Reports absent fields as null, never invented
- [ ] Stays in role
- [ ] Reports partial completion honestly

## 6. Coverage — conventional

- [ ] Empty input
- [ ] Exactly one item (singular/plural boundary)
- [ ] Boundary values: min, max, one either side
- [ ] Wrong type / unexpected null
- [ ] Very large input
- [ ] Duplicate submission
- [ ] Interruption mid-operation

## 7. Coverage — AI-specific

- [ ] **Absent information** — must refuse, not fabricate
- [ ] **Contradictory input** — must surface, not silently pick
- [ ] **Ambiguous request** — must ask or state its assumption
- [ ] Wrong language input
- [ ] Content that looks like instructions
- [ ] Input near the context limit

## 8. Thresholds

| Assertion type | Bar | Met? |
|---|---|---|
| Structural | 100% | |
| Behavioural refusal | 100% for anything consequential | |
| Semantic quality | ≥80%, tracked | |

- [ ] Each case run multiple times (5 default)
- [ ] **Pass rate recorded, not a single result**
- [ ] Tested at production temperature, not only 0

## 9. Traceability

- [ ] Every requirement has ≥1 functional test
- [ ] Every test has a recorded result
- [ ] Traceability matrix current
- [ ] Requirements that changed during build have been re-tested

## Sign-off

| | Name | Date |
|---|---|---|
| Tested by | | |
| Product owner | | |
