Blog
Requirements Traceability with Jira and Xray: From Stories to Evidence
How to achieve RTM-style requirements traceability using Jira stories and Xray Tests—coverage reports, criterion IDs, build evidence, forward/backward links, and a worked example.
- xray
- jira
- traceability
- rtm
- qa
Requirements traceability answers one question with receipts: for this requirement, which tests cover it, and what happened on the build you shipped? In a Jira shop, the durable way to answer that is not a lonely spreadsheet—it is Jira stories and epics as requirements, Xray Tests linked to those issues, and Test Executions that carry build and environment. That combination produces RTM-style evidence you can regenerate instead of hand-maintaining.
This guide shows how to implement requirements traceability jira xray workflows in practice. It pairs with the conceptual requirements traceability matrix article and the broader Jira test management guide. Tooling companions: Xray tutorial, Xray Test Sets, Xray Test Execution, Xray best practices, and the positioning piece Jira vs Xray. Case-writing inputs that make traceability cheap: acceptance criteria examples and how to write QA test cases.
What “good” traceability looks like in Jira + Xray
At minimum you need a chain:
- Requirement — epic, story, or dedicated requirement issue (for example
`PROJ-884`) - Acceptance criteria — numbered inside the story (
AC-1,AC-2) - Xray Test — reusable case linked to the requirement (for example
`CHK-101`) - Test Execution — dated run with status per Test on a named build
- Defect — optional link when status is Fail (for example
`BUG-2291`)
If any link is missing, you have folklore. If all links exist, coverage reports and filters become your living RTM.
Forward vs backward
| Direction | Question | Xray/Jira mechanism |
|---|---|---|
| Forward | Is every requirement covered? | Coverage report / requirements ↔ Tests |
| Backward | Why does this Test exist? | Test’s linked stories/epics |
| Bidirectional | Both | Links maintained both ways by design |
Backward links stop orphan Tests. Forward links stop untested criteria. Auditors usually want both; agile teams need both to keep suites honest.
Criterion-level IDs: the habit that prevents false coverage
Story-level linking alone lies. A story with five acceptance criteria and two Tests often shows as “covered” when three criteria were never touched.
Practical convention
Inside each story, number criteria:
AC-1: Valid code reduces order total after tax
AC-2: Expired code is rejected with a recoverable message
AC-3: Only one code applies per orderPut AC-1 (or `PROJ-884/AC-1`) in the Test description, a custom field, or a structured label your reports can filter. Patterns for writing criteria that survive tracing are in acceptance criteria examples.
Why this matters for regulated and agile teams alike
Regulated teams need criterion-level evidence for audits. Agile teams need it so “story Done” does not hide untested rules. Same habit, different audience.
Linking model: stories, epics, and Tests
Prefer stories as the primary requirement node
Epics are useful rollups, but day-to-day coverage should attach to stories (or finer requirement issues). Epic-only linking creates giant blobs where gaps hide.
Link Tests to requirements explicitly
When creating or editing an Xray Test, link it to the Jira story it verifies. Avoid relying on “we mentioned `PROJ-884` in a comment once.” Comments are not coverage.
One Test, multiple requirements—use sparingly
Shared platform behavior can map to several stories. List all of them. If a Test claims six stories, suspect a mega-test and split—see Xray best practices.
Coverage reports as the living RTM
Xray coverage views replace the spreadsheet refresh ritual when links and Executions are healthy.
What to read in a coverage report
| Signal | Interpretation | Action |
|---|---|---|
| Requirement with 0 Tests | Untested | Write or link cases |
| Tests with no recent Execution | Paper coverage | Schedule a run |
| Fail on P0/P1 | Release risk | Defect + retest gate |
| Only positive Tests | Lopsided design | Add negatives/edges |
| Pass without build field | Weak evidence | Fix Execution hygiene |
Treat “not covered” as a first-class row in any export you still keep for auditors. Omitting gaps makes the matrix look healthier than reality—the classic RTM failure mode described in the requirements traceability matrix guide.
Build-level evidence
A Pass that is not tied to a build is a rumor. Every Test Execution should record:
- Build or version (
2026.08.3, image tag, or commit SHA) - Environment (
staging,preprod) - Scope (which Set or filter)
Create a new Execution per meaningful run. Overwriting last week’s statuses destroys the historical half of traceability. Logistics: Xray Test Execution.
Evidence attachments on Fail
Link `BUG-2291`, screenshots, logs. Traceability is not only “which Test”—it is “what broke and where is the proof.”
Regulated vs agile: same spine, different ceremony
| Concern | Agile product team | Regulated / audit-heavy |
|---|---|---|
| Requirement source | Jira stories | Stories + controlled requirement IDs |
| Criterion IDs | Strongly recommended | Mandatory |
| Execution retention | Recent releases | Policy-defined retention |
| Export format | Dashboard + filters | Formal RTM export per release |
| Sign-off | Squad recommendation | Named approver + evidence pack |
| Non-functional reqs | Often informal | Explicit rows with Tests |
Agile teams should not wait for an auditor to invent criterion IDs. The cost of adding AC-n while writing the story is near zero; the cost of reconstructing them after a incident is not.
Worked example: checkout discount codes
Story `PROJ-884` sits under epic `PROJ-800` (Checkout resilience). Criteria AC-1..AC-3 as above. Related invoice story `PROJ-885`.
Traceability table (RTM view)
| Req ID | AC | Summary | Test IDs | Type | Pri | Execution | Status | Build | Defect |
|---|---|---|---|---|---|---|---|---|---|
PROJ-884 | AC-1 | Valid code reduces total after tax | CHK-101 | Positive | P1 | TEX-2026-08-3-CHK | Pass | 2026.08.3 | — |
PROJ-884 | AC-1 | Valid code reduces total after tax | CHK-102 | Edge | P2 | TEX-2026-08-3-CHK | Pass | 2026.08.3 | — |
PROJ-884 | AC-2 | Expired code rejected recoverably | CHK-110 | Negative | P1 | TEX-2026-08-3-CHK | Fail | 2026.08.3 | BUG-2291 |
PROJ-884 | AC-2 | Expired code rejected recoverably | CHK-111 | Negative | P2 | TEX-2026-08-3-CHK | Pass | 2026.08.3 | — |
PROJ-884 | AC-3 | Only one code per order | CHK-120 | Negative | P1 | TEX-2026-08-3-CHK | Blocked | 2026.08.3 | BUG-2288 |
PROJ-884 | AC-3 | Only one code per order | — | — | — | — | Not covered | — | — |
PROJ-885 | AC-1 | Discount as separate invoice line | INV-044 | Positive | P2 | TEX-2026-08-3-INV | Pass | 2026.08.3 | — |
How to read it in five minutes
- AC-2 is not Done: P1 Fail with
`BUG-2291`. - AC-3 is dangerous: Blocked plus an explicit not-covered row.
`PROJ-885`is only positively covered—refund interaction still missing.
In Xray, the same facts should be reachable without the spreadsheet: open `PROJ-884`, inspect linked Tests, open Execution TEX-2026-08-3-CHK, filter Fail/Blocked.
Set composition for this feature
SET-CHECKOUT-DISCOUNT— feature Tests for the story- Promote
`CHK-101`and`CHK-110`intoSET-REGRESSION-COREafter they prove durable - Smoke stays thin—do not dump every edge into smoke
Set design details: Xray Test Sets. Regression promotion: regression test cases.
Building the chain step by step
1. Write atomic acceptance criteria
One criterion, one falsifiable behavior. Vague criteria produce vague Tests. Use acceptance criteria examples.
2. Choose coverage depth
Match Basic / Standard / Deep to risk—payments and auth skew Deep. Framework: Basic, Standard, or Deep coverage.
3. Author Tests with trace fields
Titles, steps, expected results, priority (test case priority), and requirement/AC references. Craft guide: how to write QA test cases.
4. Link and place in Sets
Link to `PROJ-884`, add to the feature Set, avoid release mega-Sets (Xray best practices).
5. Execute on a named build
Create Execution, set build/env, record honest statuses (Xray Test Execution).
6. Publish risk, not only percentages
Stakeholder summary: Fail/Blocked on P0/P1, uncovered ACs, deferred TODOs.
7. Regenerate the matrix when asked
Export or screenshot coverage for the release tag. Do not maintain a parallel forever-spreadsheet unless regulation forces a signed artifact—and even then, generate it from Xray.
Common gaps (and how they show up)
| Gap | Symptom | Fix |
|---|---|---|
| Story-level only linking | “Covered” with untested ACs | Criterion IDs on Tests |
| Tests without Executions | Green coverage, no evidence | Require Execution before Done |
| Missing build on Execution | Unusable audit trail | Mandatory build field |
| Orphan Tests | Suite bloat | Block create without requirement link |
| Mega-tests | Opaque Failures | Split to one behavior |
| Pass used for “skipped” | Fake readiness | Keep TODO + report gap |
| Confluence duplicate RTM | Drift within a sprint | Single source: Jira/Xray links |
| No negatives | Happy-path false confidence | Design negatives per AC |
If you are still deciding whether you need Xray for this chain, read Jira vs Xray. Light Jira-only checklists can carry early teams; they rarely survive audit or multi-squad regression without becoming a shadow TM tool.
Gap deep-dive: “covered” that is not executed
The most expensive false signal is a requirement with linked Tests that have never run on the candidate build. Coverage reports that only count links will look green. Always pair coverage with Execution filters for the release version. If your process allows “link equals Done,” you have replaced testing with filing.
Gap deep-dive: criterion drift after story edits
Product rewrites AC-2 in the story body but Tests still describe the old rule. Traceability then proves the wrong thing. Mitigate by requiring a Test review checkbox on story edits that touch ACs, and by storing the AC ID plus a short summary on the Test so mismatches are visible without opening Jira history.
Forward and backward review rituals
Before development Done
Forward check: every AC has at least one linked Test (or an explicit waiver). Waivers should be explicit issues or comments with an owner and expiry—not silent omissions. A missing row that everyone “knows about” is not traceability.
Before release
Execution check: P0/P1 Tests for in-scope requirements show Pass on the release build, or Fail with accepted defects. Export or snapshot the coverage view for the release tag so the evidence pack matches the bits you shipped, not last Tuesday’s staging run.
Monthly suite hygiene
Backward check: sample Tests and confirm their requirement links still exist and make sense after refactors. Delete or archive Tests whose stories were abandoned. Relink Tests when a story was split and the old key no longer represents the behavior.
These rituals take less time than rebuilding an RTM from memory after a production incident.
Sample release evidence checklist
- Every in-scope story has numbered ACs
- Every AC is linked to at least one Test or an explicit waiver
- Test Execution names the release build and environment
- Failures link defect keys
- Unexecuted P0/P1 cases are listed in the release note
- Coverage export (if required) is stored with the release folder
Keep the checklist short enough that people will run it. Long compliance theater documents get skipped; a half-page gate gets used.
Tooling assistance without breaking ownership
Drafting Tests from stories is faster when acceptance criteria are already numbered. Generate structured cases, review them, then push or create linked Xray Tests so traceability starts at authoring time rather than as archaeology. Setup and export flow: Docs. Plan limits for assisted generation: Pricing. The human still owns risk calls and release recommendations.
For end-to-end Jira QA operating models, return to the Jira test management guide. For hands-on Xray setup, use the Xray tutorial.
Conclusion
Requirements traceability with Jira and Xray is RTM thinking implemented as links and Executions: stories hold numbered criteria, Xray Tests link to those requirements, coverage reports expose gaps, and build-tagged Executions turn Pass/Fail into evidence. Keep criterion-level IDs, refuse story-only false coverage, and regenerate matrices from the tool instead of hand-maintaining a second truth. Done this way, traceability supports both agile speed and regulated proof without becoming a spreadsheet cult.
FAQ
Do we still need a spreadsheet RTM if we use Xray?
Usually no for day-to-day work. You may export a formal table per release for auditors. Keep Xray as the system of record so the export cannot drift.
Can epics replace stories for linking?
Epics are fine as rollups, but linking only at epic level hides story and criterion gaps. Prefer story (or dedicated requirement) links.
How granular should criterion IDs be?
One ID per independently verifiable rule. If two rules can fail independently, they need separate IDs and usually separate Tests.
What if a requirement changes mid-sprint?
Version the criterion text, mark linked Tests for review, and keep prior Execution history intact. Traceability includes change history, not only the latest happy path.
How do non-functional requirements fit?
Create explicit criteria for performance, accessibility, and security, and link Tests the same way. They are often the first “not covered” rows—exactly why they belong in the matrix.
Is Jira alone enough for traceability?
For tiny teams, a careful checklist can approximate it. For reusable evidence across builds and squads, Jira + Xray (or equivalent TM) is the realistic path—see Jira vs Xray.
Improve your QA workflow faster
QA Workflow Assistant helps QA engineers generate structured test cases from Jira stories, improve coverage, and organize testing workflows.
Stay ahead in QA
Get practical QA guides, Jira & Xray tutorials, testing checklists, AI testing insights, and occasional product updates.
Related articles
How to Create Test Cases in Jira (With Xray Fields, Steps, and Examples)
Create test cases in Jira with Xray: build Test issues, write manual steps, link stories, apply labels, import from sheets, and avoid common setup mistakes.
August 17, 2026 · 12 min read
Jira Test Management: Complete Guide for QA Teams Using Jira and Xray
Learn jira test management from issue types to execution and reporting—when native Jira is enough, when Xray helps, and how to link stories to reusable tests.
August 16, 2026 · 14 min read
Jira Test Execution Guide: Statuses, Evidence, Defects, and Release Gates
Master jira test execution: Pass, Fail, Blocked, and TODO lifecycle, evidence, defects from fails, smoke vs full runs, and Xray Test Execution practice.
August 7, 2026 · 12 min read