Skip to content
QA Workflow Assistant

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.

QA Workflow Assistant12 min read
  • 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.

Use: [Area] [Actor/condition] [observable outcome].

Weak titleStronger title
Login worksAuth: active user signs in with email/password and reaches dashboard
Coupon bugCheckout: expired discount code is rejected with recoverable error
API testPayments 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:

LabelMeaning
smokeMust pass before deeper packs run
regression-coreAlways-on release pack
regression-extendedNightly or pre-major only
manual-onlyNot a candidate for automation yet
flaky-candidateNeeds 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.

Set typeExample nameContentsCadence
SmokeSET-APP-SMOKECritical path onlyEvery build
FeatureSET-CHECKOUT-DISCOUNTCases for one capabilityPer story / epic
Regression coreSET-REGRESSION-COREDurable high-value casesPre-release
Regression extendedSET-REGRESSION-EXTENDEDEdges, rare locales, browsersNightly / major
ComplianceSET-AUDIT-PAYMENTSEvidence-heavy regulated checksRelease + 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.

StatusMeansDoes not mean
PassObserved result matched expected for this build“Looks fine, didn’t finish steps”
FailAt least one expected result was violatedPreference disagreement
BlockedCannot run due to dependency, data, or environment“We ran out of time”
TODO / Not executedIn scope but not run yetForgotten forever without comment
AbortedRun started then stopped intentionallySilent 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

QuestionAnswer 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-patternWhy it hurtsReplace with
Mega-testsOpaque failures, unassignable ownershipOne behavior per Test
Release mega-SetsUnmaintainable scopeComposed Sets by purpose
Overwriting ExecutionsLost historyNew Execution per run
Pass-to-closeFake readinessHonest TODO + risk note
Orphan TestsSuite bloatRequire requirement or epic link
Label sprawlFilters stop workingControlled vocabulary
Automating everythingFlaky CI, brittle scriptsAutomate stable high-value cases
No review gatePermanent junk in JiraPeer 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:

  1. 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.
  2. Link each Test to `PROJ-884` and, where possible, to criterion IDs (AC-1, AC-2, AC-3) in description or custom fields.
  3. Add them to SET-CHECKOUT-DISCOUNT and promote the durable refusal cases into SET-REGRESSION-CORE after the first clean release.
  4. Create Test Execution TEX-2026-08-3-CHECKOUT with build 2026.08.3 on staging.
  5. Fail `CHK-110` with defect `BUG-2291`; leave a low-priority edge as TODO if the window closes; never mark it Pass.
  6. 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.

→ Try QA Workflow Assistant

Stay ahead in QA

Get practical QA guides, Jira & Xray tutorials, testing checklists, AI testing insights, and occasional product updates.

No spam. Unsubscribe anytime.