Context
Kora is a Confluent-compatible Schema Registry. Today it is validated two ways:
- automated integration tests in
tests/*.rs (API-level, against real Postgres);
- manual end-to-end checks through the Popsink UI (real Source→Kafka→Target flow).
There is no human-readable, structured test case catalogue describing what
Kora's behaviour should be, independent of any test script. This makes coverage
gaps hard to see and onboarding of new QA work slow.
Goal
Produce a complete, ISTQB-style test case catalogue (markdown, versioned in the
repo) covering all functional domains of the Schema Registry API. This is a
specification of expected behaviour first — automation comes later.
Scope (functional domains)
- Schema registration (Avro / JSON Schema / Protobuf, dedup, versioning)
- Schema retrieval (by ID, by version,
latest, raw schema text)
- Compatibility checking (7 modes, compatible & incompatible evolutions)
- Configuration (global vs per-subject compatibility)
- Mode (READWRITE / READONLY / IMPORT)
- Deletion (soft-delete, hard-delete, reference protection)
- Cross-references between schemas
- Confluent wire-compatibility (error codes, content-type, response shape)
- Robustness / error handling (invalid schema, missing subject, body limits)
Deliverable
- A markdown file in the repo with one section per domain.
- Each test case: ID, domain, title, preconditions, steps, test data,
expected result, priority.
- A short coverage note mapping cases to existing
tests/*.rs (what's already
automated vs. gaps).
Context
Kora is a Confluent-compatible Schema Registry. Today it is validated two ways:
tests/*.rs(API-level, against real Postgres);There is no human-readable, structured test case catalogue describing what
Kora's behaviour should be, independent of any test script. This makes coverage
gaps hard to see and onboarding of new QA work slow.
Goal
Produce a complete, ISTQB-style test case catalogue (markdown, versioned in the
repo) covering all functional domains of the Schema Registry API. This is a
specification of expected behaviour first — automation comes later.
Scope (functional domains)
latest, raw schema text)Deliverable
expected result, priority.
tests/*.rs(what's alreadyautomated vs. gaps).