Skip to content
Back to skills

Qa Case Writing

ASecurity

Use when writing a test case record or filling in its result — when a title names a topic instead of a behaviour, steps hide the typed value, EXPECTED says 'works correctly', or ACTUAL says 'failed'.

  • 6 stars
  • 0 votes
  • 1 copy
  • 4 views
  • Added September 12, 2026
developmentgosqltestinggit

Works with

  • cli

Security analysis

A100/100

Scanned September 12, 2026

npx -y skills add connorpham/vteam-harness --skill qa-case-writing --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Qa Case Writing?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Qa Case Writing
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/connorpham-qa-case-writing/badge)](https://www.skillsdirectory.com/skills/connorpham-qa-case-writing)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: qa-case-writing
description: "Use when writing a test case record or filling in its result — when a title names a topic instead of a behaviour, steps hide the typed value, EXPECTED says 'works correctly', or ACTUAL says 'failed'."
---


# Case writing — understood by a stranger in fifteen seconds

## Identity

You write for two readers: the one who runs the case must be unable to do it
wrong; the one who reads the result — a product owner, a developer, you in six
months — must know what was checked, what should have happened and what did,
without opening a screenshot or asking anyone.

## When this applies

- V2, the moment a case record is started; V4, when ACTUAL is filled in.
- Any record whose four key lines fail the fifteen-second test below.

## Decide

**The fifteen-second test:** cover everything except TITLE, RESULT, EXPECTED,
ACTUAL. A stranger reads those four. If they need STEPS to understand EXPECTED,
EXPECTED is too thin; if they need the screenshot to understand ACTUAL, ACTUAL
is too thin; if the title does not say *which behaviour*, it is a label.

| Field | Written well means |
|---|---|
| TITLE | A sentence about what the product does under a condition: `An order of exactly 499,999 gets no discount`. A product verb (gets, is refused, keeps, recalculates) — never test/check/verify. ≤12 words. No "and" (that is two cases). Folder = title in snake_case |
| AS | Account, role, persona: `staff@demo (STAFF) — the daily operator` |
| PRECONDITION | The state now, with ids, verified: `order #4102, Pending, 2 × item A à 150,000 (read-only check 10:02)` — not the history of how it got there |
| ENTRY | The click path in the screen's own labels: `signed in → Orders → filter "Pending" → row #4102 → "Edit"`; a URL only in brackets as the second path |
| STEPS | Numbered, one action each, imperative, the exact value as typed (trailing space included), the exact label pressed, ≤7 steps. No verification verbs — checking is EXPECTED's job |
| EXPECTED | An observable fact with the number/label the screen shows + citation: `"Total" reads 450,000 ₫ (spec §3.2 R1)` |
| ACTUAL | Same shape as EXPECTED so the eye compares lines: on PASS restate the value then "— as expected"; on FAIL the exact wrong value and what is missing, never a judgement |
| FINDING (FAIL) | `[where] what is wrong — under what condition`, readable alone; SEVERITY and ORIGIN one word each |

## Rules

- **One case, one claim.** "Also check that…" is the next case's title; an
  "and" in a title is two facts sharing one RESULT, and one half's PASS is lost
  when the other fails. (The whole-screen case is the deliberate exception: its
  one claim is "the screen is intact", its STEPS record which looks were taken.)
  *Otherwise:* the developer fixes one of the three assertions and closes the case.
- **The banned words** — as the whole of EXPECTED or ACTUAL: *works · fine ·
  correctly · as expected (alone) · properly · OK · success · passes · no
  errors*. If that is all you can write, you do not yet know what the product
  should show — back to the spec. *Otherwise:* the record is green and empty.
- **Numbers, dates, names carry their units and shapes**: `450,000 ₫`, never
  `450000`; `2026-09-04`, never `09/04`; `23:59 (Asia/Ho_Chi_Minh)`; `order
  #4102`; labels exactly as the screen spells them, in quotes, in the screen's
  language. *Otherwise:* the reader counts digits and guesses locales.
- **Words from the code stay out**: no selectors, routes, table names, HTTP
  verbs in a record a stranger reads — `press "Save"`, not `click #btn-save`;
  the SQL goes in `db_verify.md`, the request in the appendix. *Otherwise:* the
  one reader who could judge the business value cannot read the record.
- **Values in `project.language`, keys in English** (`RESULT:`, `EXPECTED:`) —
  the gate reads the keys, people read the values. *Otherwise:* the team needs
  English to know what their own total reads.

## Reviewer lens

- Run the fifteen-second test on two cases, cold. What could you not tell?
- Find a banned word standing alone in any EXPECTED/ACTUAL.
- Re-run one case using only the record — is any step ambiguous, any typed value missing?

## Sources

connorpham/ai-qa `case-writing.md` (the fifteen-second test, the field
standards, the banned words, before/after example) · goldbergyoni testing
(3-part naming) · vteam `evd_check.py` journey fields (AS/ENTRY/AFTER/BACK).

Rationalizations, red flags and a worked example live in `reference/qa-case-writing.md` — opened when needed, never loaded by default.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.