Blog
Xray Best Practices: Naming, Test Sets, Execution Hygiene, and Reporting
Practical Xray best practices for Jira teams—naming conventions, Test Set strategy, execution hygiene, status discipline, versioning, review gates, and stakeholder reporting.
- xray
- jira
- test-management
- qa
- best-practices
Most Xray projects do not fail because the plugin is weak. They fail because teams import the same habits that already made spreadsheets unmaintainable: mega-tests, unclear titles, one giant Test Set per release, and execution statuses that mean three different things depending on who clicked them. Xray amplifies whatever process you give it. Give it discipline and you get living coverage. Give it chaos and you get an expensive ticket graveyard.
This guide is a working set of Xray best practices for teams that already use Jira and want structured test management without turning every sprint into a taxonomy debate. It sits beside the broader Jira test management guide. For setup walkthroughs, see the Xray tutorial; for suite structure, Xray Test Sets; for run logistics, Xray Test Execution. If you are still deciding whether you need Xray at all, read Jira vs Xray. For linking stories to evidence, use requirements traceability with Jira and Xray.
Naming conventions that survive six months
Titles are the primary search surface in Xray. A title that only makes sense to the author who wrote it on a Friday afternoon becomes invisible debt by the next quarter.
Recommended title pattern
Use: [Area] [Actor/condition] [observable outcome].
| Weak title | Stronger title |
|---|---|
| Login works | Auth: active user signs in with email/password and reaches dashboard |
| Coupon bug | Checkout: expired discount code is rejected with recoverable error |
| API test | Payments API: webhook with invalid signature returns 401 and does not capture |
Keep the area prefix stable across the project (Auth, Checkout, Billing, Admin). Avoid ticket keys in titles (PROJ-100 login)—keys belong in links and custom fields, not in the human-readable name that will outlive the story.
Issue keys and IDs in prose
When you reference cases in comments, Confluence, or chat, wrap keys in backticks so they stay copyable and MDX-safe: `AUTH-014`, `PROJ-884`, `SET-CHECKOUT-SMOKE`. Never leave bare brace placeholders in documentation that will be rendered as MDX—wrap any brace-delimited tokens in inline code.
Labels and components
Prefer a small controlled vocabulary over free-form labels. A useful starter set:
| Label | Meaning |
|---|---|
smoke | Must pass before deeper packs run |
regression-core | Always-on release pack |
regression-extended | Nightly or pre-major only |
manual-only | Not a candidate for automation yet |
flaky-candidate | Needs investigation before next promotion |
Components should mirror product modules, not teams. Team ownership changes; module boundaries change less often.
Granularity: one behavior per Test
The most common anti-pattern in Xray is the mega-test: thirty steps that validate signup, email, profile, and first purchase in one issue. When it fails at step 22, nobody knows which requirement broke, and the entire chain is blocked for retest.
Good granularity signals
- One primary assertion family (auth success, refusal message, price calculation).
- Failure points to a single defect class.
- The case can be prioritized independently using test case priority rules.
- A second tester can finish it in a predictable timebox (often under 10 minutes for UI manual cases).
Split candidates
If a Test title needs the word “and” twice, draft a split. Example: “User resets password and updates profile and receives welcome email” becomes three Tests linked to the same story, each with its own expected result.
Writing craft for individual cases still matters inside Xray. Keep how to write QA test cases next to your project conventions, and match depth to risk with Basic, Standard, or Deep coverage.
Test Set strategy that scales
A Test Set is a reusable collection. It is not an execution record, and it is not a release plan. Treat Sets as curated menus; treat Test Executions as dated meals.
Recommended Set taxonomy
| Set type | Example name | Contents | Cadence |
|---|---|---|---|
| Smoke | SET-APP-SMOKE | Critical path only | Every build |
| Feature | SET-CHECKOUT-DISCOUNT | Cases for one capability | Per story / epic |
| Regression core | SET-REGRESSION-CORE | Durable high-value cases | Pre-release |
| Regression extended | SET-REGRESSION-EXTENDED | Edges, rare locales, browsers | Nightly / major |
| Compliance | SET-AUDIT-PAYMENTS | Evidence-heavy regulated checks | Release + audit |
Keep feature Sets thin and owned by the people who change that feature. Promote cases into regression Sets only after they survive at least one release without becoming obsolete. Promotion criteria belong in your handbook; selection tactics are covered in regression test cases. Deeper Set design patterns live in Xray Test Sets.
Anti-pattern: the release mega-Set
Creating SET-RELEASE-2026-08 that contains every Test ever written looks organized until day two, when half the cases are irrelevant and nobody dares remove them. Prefer composing a release from smoke + feature Sets + a frozen regression core.
Execution hygiene
Executions are evidence. Sloppy Executions make coverage reports lie.
One Execution, one context
Each Test Execution should declare:
- Build or version (
2026.08.3, commit SHA, or deploy tag) - Environment (
staging,preprod, not “QA laptop”) - Scope (which Sets or filters were intended)
- Owner or squad
Do not reuse yesterday’s Execution and overwrite statuses. Create a new Execution per meaningful run so history remains queryable. Walkthroughs for run setup are in Xray Test Execution.
Status discipline
Agree on what each status means, then refuse creative variants.
| Status | Means | Does not mean |
|---|---|---|
| Pass | Observed result matched expected for this build | “Looks fine, didn’t finish steps” |
| Fail | At least one expected result was violated | Preference disagreement |
| Blocked | Cannot run due to dependency, data, or environment | “We ran out of time” |
| TODO / Not executed | In scope but not run yet | Forgotten forever without comment |
| Aborted | Run started then stopped intentionally | Silent abandon |
When time runs out, leave cases TODO and report the unexecuted set explicitly. Relabeling them Pass to green a dashboard is the fastest way to destroy trust in Xray.
Evidence on Fail and Blocked
Attach or link: screenshot, HAR, log snippet, defect key. A Fail without a defect or comment forces the next person to rediscover the same failure. Link defects with issue keys such as `BUG-2291` in the execution comment.
Versioning environments and configurations
Xray results without environment context are anecdotes. Standardize environment fields and keep configuration notes short but mandatory for anything non-default: feature flags, payment sandbox mode, locale, browser matrix.
Practical rule
If two runs could disagree because of config, that config belongs on the Execution. “Passed on Chrome” is incomplete if the customer base is 40% Safari and the bug is WebKit-only.
Data hygiene
Prefer synthetic fixtures named after the case or Set. Shared “god accounts” that every tester mutates create false Failures and false Passes. Rotate credentials through your secrets store; never paste long-lived tokens into Test steps.
Review gates before Tests become durable assets
Generation and fast drafting are fine. Publishing weak Tests into Xray is how projects drown.
Minimum review checklist
- Title names one observable behavior
- Preconditions are complete
- Steps are atomic and free of hidden setup
- Expected result is falsifiable
- Priority reflects risk, not author preference
- Story / AC link is present when required
- Duplicate of an existing case? If yes, merge or justify
- Automation candidate flagged honestly
Treat push or create as a delivery step, not a brainstorming dump. Human review before bulk create saves weeks of cleanup. If you draft from stories with tooling, review still owns the gate—see Docs for integration flow and Pricing for plan limits on assisted generation.
Choosing automation candidates inside Xray
Not every manual Test should become an automated script. Tag candidates deliberately.
Strong automation candidates
- Stable UI or API contracts
- High frequency (smoke, regression core)
- Clear oracles (status codes, totals, redirects)
- Low setup cost once fixtures exist
Weak automation candidates
- Visual polish judgments
- One-off exploratory charters
- Flows that change every sprint
- Cases whose oracle is “looks right to a human”
Keep a label such as automation-ready only after a case has been stable through at least one release. Premature automation freezes a bad Test into CI.
Reporting for stakeholders
Engineers want case-level detail. Stakeholders want risk. Xray can serve both if you stop pasting raw status grids into release notes.
Stakeholder-ready summary template
| Question | Answer from Xray |
|---|---|
| What ran? | Execution name + build + environment |
| What mattered? | P0/P1 Fail and Blocked counts |
| What is uncovered? | Requirements with zero linked Tests (see coverage) |
| What is deferred? | TODO cases with priority |
| What is the recommendation? | Ship / ship with known issues / hold |
Lead with Fail and Blocked on critical paths. A wall of green Passes on low-priority cosmetic cases does not reassure anyone who asked about checkout.
Coverage and requirement linkage reporting are covered in depth in requirements traceability with Jira and Xray. Keep the comparison of light Jira-only workflows vs structured Xray workflows in Jira vs Xray when leadership asks why the process exists.
Anti-patterns to retire early
| Anti-pattern | Why it hurts | Replace with |
|---|---|---|
| Mega-tests | Opaque failures, unassignable ownership | One behavior per Test |
| Release mega-Sets | Unmaintainable scope | Composed Sets by purpose |
| Overwriting Executions | Lost history | New Execution per run |
| Pass-to-close | Fake readiness | Honest TODO + risk note |
| Orphan Tests | Suite bloat | Require requirement or epic link |
| Label sprawl | Filters stop working | Controlled vocabulary |
| Automating everything | Flaky CI, brittle scripts | Automate stable high-value cases |
| No review gate | Permanent junk in Jira | Peer review before create |
Worked walkthrough: discount codes on checkout
Suppose story `PROJ-884` adds discount codes with three acceptance criteria. A healthy Xray shape looks like this:
- Create Tests
`CHK-101`through`CHK-120`at Standard depth for the happy path and main refusals; expand to Deep only for tax interaction and multi-code abuse. - Link each Test to
`PROJ-884`and, where possible, to criterion IDs (AC-1,AC-2,AC-3) in description or custom fields. - Add them to
SET-CHECKOUT-DISCOUNTand promote the durable refusal cases intoSET-REGRESSION-COREafter the first clean release. - Create Test Execution
TEX-2026-08-3-CHECKOUTwith build2026.08.3onstaging. - Fail
`CHK-110`with defect`BUG-2291`; leave a low-priority edge as TODO if the window closes; never mark it Pass. - Report: “Discount happy path Pass; expired-code refusal Fail with
`BUG-2291`; multi-code edge not executed.”
That narrative is what Xray is for—not a green percentage alone.
Operating rhythm that keeps Xray healthy
Weekly: prune labels, close obsolete Tests, review flaky-candidate tags.
Per release: freeze regression core, create fresh Executions, publish a stakeholder summary.
Quarterly: audit mega-tests, check Set ownership, retire Sets that nobody can explain.
If your team is still establishing writing standards, pair this article with how to write QA test cases and test case priority. For the product-level map of Jira-based QA, return to the Jira test management guide.
Conclusion
Xray best practices are mostly process practices with a clear object model: name Tests for skimming, keep one behavior per Test, curate Sets by purpose, create Executions as dated evidence, enforce status meanings, version environments, review before publish, automate only what earns it, and report risk instead of green noise. Do those consistently and Xray becomes the queryable spine of QA. Skip them and you have reinvented a spreadsheet inside Jira with more clicks.
FAQ
What is the single highest-leverage Xray practice?
Split mega-tests and stop overwriting Executions. Granular Tests plus dated Executions make every other report trustworthy.
How many Test Sets should a mid-size project have?
Dozens of small purposeful Sets beat a handful of giant ones. Aim for smoke, regression core, regression extended, plus feature Sets per major capability—not one Set per sprint by default.
Should every Jira story become an Xray Test?
No. Low-risk copy changes may only need a checklist comment. Use Xray when you need reusable steps, execution history, or requirement coverage. Depth guidance: Basic, Standard, or Deep coverage.
How do we handle flaky manual Tests?
Tag them, investigate environment and data first, and keep them out of smoke until stable. Do not “Pass with notes” as a habit.
Where do exploratory sessions fit?
Keep exploratory charters outside scripted Test issues, or use a dedicated issue type/label so they do not pollute Pass/Fail metrics. Promote findings into scripted Tests only when the risk is durable.
Is Xray enough for regulated industries?
Xray can hold the links and execution evidence, but you still need criterion-level IDs, build references, and retention policies. See requirements traceability with Jira and 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
Jira vs Xray: When Jira Alone Is Enough and When You Need Xray
Honest comparison of Jira alone vs Jira + Xray for QA—feature table, cost and complexity tradeoffs, when not to buy Xray, migration path, myths, and FAQ.
August 7, 2026 · 12 min read
Jira Test Case Management: A Practical Guide for QA Teams
How QA teams manage test case lifecycle in Jira—structure, story traceability, review, and a practical workflow from draft to Xray delivery.
August 18, 2026 · 12 min read
Xray Test Plan vs Test Execution: What's the Difference?
Xray Test vs Test Set vs Test Plan vs Test Execution explained—what each object is for, how they relate in UAT and regression, and common mix-ups to avoid.
August 18, 2026 · 10 min read