Testland
Browse all skills & agents

test-case-anatomy-reference

Pure-reference catalog of test-case anatomy - what fields a well-formed test case must have and what each field means. Enumerates the ISO/IEC/IEEE 29119-3:2021 test-case template fields (identifier, objective, preconditions, inputs, steps, expected results, postconditions, environment, traceability) and the ISTQB CTAL-TM specification-technique-driven additions (equivalence partition, boundary value, decision table, state transition). Maps the canonical anatomy to the five tracker-specific schemas this plugin covers (TestRail, Xray, Zephyr Scale, Allure TestOps, Qase). Use as the authoritative source when authoring a case template, reviewing case quality, or migrating between tools.

test-case-anatomy-reference

Overview

A test case has nine required parts. Skipping any of them produces a case that's either ambiguous (a tester can't run it) or unverifiable (a reviewer can't tell if it passed). The canonical list comes from ISO/IEC/IEEE 29119-3:2021 §6, augmented by ISTQB CTAL-TM's specification-based-testing additions.

This skill is a pure reference consumed by test-case-quality-critic, traceability-matrix-builder, and the five platform-specific case-management skills.

When to use

  • Authoring a case template for a new project.
  • Reviewing whether a draft case has all required fields.
  • Migrating cases between tools (TestRail → Xray; Zephyr → Qase) - need to map fields consistently.
  • Onboarding a tester to "what makes a case complete?"

The nine canonical fields (ISO 29119-3 §6)

Per ISO/IEC/IEEE 29119-3:2021 "Software and systems engineering - Software testing - Part 3: Test documentation" (cite by stable ID; full text behind iso.org paywall):

#FieldPurposeCommon mistakes
1IdentifierUnique ID for cross-reference, traceability, defect linking.Reusing IDs after deletion; non-stable IDs across migrations.
2ObjectiveOne-sentence statement of what's being verified.Vague ("test checkout"); should state behaviour ("verify discount applies before tax").
3PreconditionsSystem state required before the case runs.Implicit ("user is logged in"); should be executable / verifiable.
4InputsSpecific data values fed to the system.Generic ("a valid email"); should be concrete ("alice@example.com").
5StepsNumbered actions the tester performs.Combining actions ("login and add item"); should be one action per step.
6Expected resultsWhat the system should produce per step / overall.Missing per-step results; should pair each action with its expected outcome.
7PostconditionsSystem state after the case (cleanup expectations).Omitted; matters for shared environments.
8EnvironmentWhere the case is valid (browser, OS, build, locale).Universal-applicability assumption; should constrain explicitly.
9TraceabilityLinks to requirements, designs, defects.One-way link only (case → req); should be bidirectional.

ISTQB CTAL-TM specification-technique additions

Per the ISTQB Advanced Test Manager and Test Analyst syllabi, when a case is derived from a specification technique, it carries technique-specific metadata:

TechniqueAdditional fields
Equivalence partitioningPartition (valid/invalid), partition label, representative input
Boundary value analysisBoundary (min, max, on/off), the specific BVA value (-1, 0, 1, 99, 100, 101)
Decision tableRule ID, condition vector, action vector
State transitionStarting state, event, ending state, output
Use caseMain success scenario step, extension point
Classification treeTree node path

These fields don't replace the nine above - they're traceability to the design technique that produced the case. Per the ISTQB glossary (glossary.istqb.org).

Tracker-schema map

The five trackers this plugin covers each store the canonical anatomy under different field names:

TestRail

Canonical fieldTestRail field
Identifierid (e.g., C1234)
Objectivetitle
Preconditionscustom_preconds
Inputs(within custom_steps_separated[].content)
Stepscustom_steps_separated (Steps template) or custom_steps (Text template)
Expected resultscustom_steps_separated[].expected
Postconditions(custom field if defined)
Environmentcustom_environment (custom field) or filter via refs
Traceabilityrefs (free text); template_id (Steps / Text / Exploratory)

TestRail templates (template_id): Steps (1) / Text (2) / Exploratory (3). The Steps template enforces step-level structure; Text is freeform; Exploratory is for SBTM-style charters.

Xray (Atlassian)

Xray stores tests as Jira issues with Test issue type. Steps live in a separate sub-entity.

Canonical fieldXray field
IdentifierJira key (e.g., ENG-123)
ObjectiveJira summary
PreconditionsLinked precondition (separate Jira issue type)
StepsTest steps section (per testType: Manual); for Cucumber, Gherkin section; for Generic, free-text
Expected resultsper-step expectedResult
EnvironmentTest execution testEnvironments (set per run)
TraceabilityJira issue links (Tests / TestedBy)

Xray testType: Manual / Cucumber / Generic. Determines how steps are stored.

Zephyr Scale (Smart Bear)

Canonical fieldZephyr field
Identifierkey (e.g., PROJ-T123)
Objectivename
Preconditionsprecondition
StepstestScript.steps[].description
Expected resultstestScript.steps[].expectedResult
EnvironmentConfigured per test cycle, not case
TraceabilityissueLinks (Jira issues)

Allure TestOps

Canonical fieldAllure TestOps field
Identifierid (numeric, e.g., 1234)
Objectivename
Preconditionsprecondition
Stepsscenario.steps (recursive - steps can have sub-steps)
Expected resultsWithin step expectedResult
Environmenttags (key=value pairs) + execution env
Traceabilityrelations (links to other cases / requirements)

Qase

Canonical fieldQase field
Identifierid (within project; full ID is PROJ-1234)
Objectivetitle
Preconditionspreconditions
Stepssteps[].action
Expected resultssteps[].expected_result
EnvironmentCustom fields
Traceabilitylinks field

Severity, priority, type (cross-platform)

All five trackers carry severity / priority / type fields. Each uses its own enum but they map similarly:

ConceptTestRailXrayZephyr ScaleAllure TestOpsQase
Prioritypriority_id (1-4)Jira priority fieldpriority enumCustompriority enum (low/med/high)
SeverityCustom fieldCustom fieldseverity enum (minor/normal/major/critical/blocker)severity (default labels)severity enum
Typetype_id (Functional, Performance, etc.)testType (Manual/Cucumber/Generic)testType (Manual/Automated)Customtype (functional/smoke/regression/etc.)
Automation statuscustom_automation_typeLinked to automation resultsautomation fieldTagsautomation (manual/automated/to-be-automated)

Field cardinality reference

A migration / template author must know which fields are one-to-one and which are one-to-many:

FieldCardinality
Identifier1
Objective1
Preconditions1 (free text) or n (linked sub-entities, Xray-style)
Stepsn (ordered)
Inputsn (per step)
Expected resultsn (one per step + optional overall)
Postconditions1
Environmentn (browser × OS × locale × build)
Traceabilityn (requirements, designs, defects)
Severity1
Priority1
Type1
Automation status1
Tagsn

Anti-patterns

Anti-patternWhy it failsFix
One step per caseCases proliferate; coverage harder to trackGroup related steps into one case with multiple ordered steps
Steps as a single text blobPer-step pass/fail tracking impossibleUse Steps template (TestRail) / steps array (everywhere else)
Implicit preconditions"User is logged in" - but as whom?State preconditions in verifiable terms
Generic inputs"Use a valid email" - tester picks one, results varySpecify concrete inputs
No traceability linksCase-to-requirement orphans; coverage reporting brokenAlways link to at least one requirement
Missing expected results per stepTester runs steps but can't tell what to assertPair every step with its expected outcome
Tracker-specific case structure mixed inMigration cost explodedAuthor cases in the canonical anatomy; let tracker mapping be additive
Reusing IDs after deletionHistory broken; defect links point to ghost casesIDs are immutable; deletion is soft

Limitations

  • Tracker reality varies. Custom-field discipline differs across orgs; this anatomy is the floor.
  • Specification-technique linkage is optional. Most teams don't carry the technique metadata; ISTQB-aligned orgs do.
  • Environment as a case-level field is imperfect. Some trackers (Xray, Zephyr) push environment to the run level - the case is environment-agnostic until executed.
  • Traceability is bidirectional in theory, often unidirectional in practice. Tools support bidirectional but discipline lapses.

References