59Jira for SDET
What you will master here
- Jira hierarchy: Epic → Story → Task → Bug → Subtask
- Workflow states + transitions
- Writing a great bug report (template + example)
- JQL — the query language every SDET should know
- Sprints, boards (Scrum vs Kanban), velocity
- Linking test cases (Zephyr / Xray / Tricentis)
- Automating Jira from CI (Jira REST API)
59.1 Hierarchy + issue types
| Type | What |
|---|---|
| Epic | Large body of work spanning multiple sprints |
| Story | User-facing feature delivered in one sprint |
| Task | Engineering work without a direct user story |
| Bug | Defect found by QA / users / monitoring |
| Subtask | Decomposition of a story/task |
59.2 Common workflow states
Open → In Progress → In Review → Ready for QA → In QA → Done. Variations per team. Each transition can have rules (must have PR linked, must have AC met).
59.3 Writing a great bug report
Title: [Checkout] Quantity stepper accepts negative values Environment: staging, Chrome 130, build a3f5b2 Steps: 1. Add SKU-42 to cart. 2. Click Decrement (–) twice on the quantity stepper. 3. Click Checkout. Expected: Quantity cannot go below 1; minimum-quantity warning shown. Actual: Quantity becomes -1; checkout proceeds with subtotal -49.99. Severity: High Priority: High Frequency: 100% Reproducible: Yes (3/3 attempts) Attachments: - screenshot: cart-negative.png - video: checkout-flow.webm - console errors: console.log - trace: trace.zip (Playwright) Related: epic ACME-1234, similar to ACME-5670 (closed wontfix)
Three things that make a great bug report(1) Reproducible steps a stranger can follow. (2) Concrete expected vs actual with numbers/values, not "doesn't work". (3) Attachments (screenshot, video, trace, logs).
59.4 Severity vs Priority (Jira fields)
| Severity | Priority | |
|---|---|---|
| Decided by | QA / engineering | PM / business |
| About | Technical impact | Business urgency |
| Scale | Critical / High / Medium / Low | P0 / P1 / P2 / P3 |
| Example | Login crashes for all users = Critical | Typo on launch landing page = P0 even if Low severity |
59.5 JQL — Jira Query Language
# My open bugs assignee = currentUser() AND type = Bug AND status != Done # High-severity bugs in current sprint sprint in openSprints() AND priority = High AND type = Bug # Bugs created in last 7 days created >= -7d AND type = Bug ORDER BY created DESC # Stories without test cases linked (custom field) type = Story AND "Test Cases" is EMPTY # Flaky tests quarantined labels = quarantine AND status != Done # Released in 2026.06 fixVersion = "2026.06"
59.6 Sprints + boards
- Scrum board — fixed sprint length (1-3 weeks); issues moved through columns; sprint goal + retrospective.
- Kanban board — continuous flow; WIP limits per column; no sprints; cycle time matters.
- Velocity — average story points completed per sprint. Don't fetishise it; teams game it.
- Burndown — remaining work over time in the sprint.
- Cumulative Flow Diagram — work in each state over time; spots bottlenecks.
59.7 Test case management add-ons
| Tool | Notes |
|---|---|
| Zephyr (Squad/Scale) | Most common Jira-native test mgmt |
| Xray | Competitor; also Jira-native |
| Tricentis qTest | Enterprise; integrates with Jira |
| TestRail | Standalone; links to Jira via app |
Test cases live in the add-on; results execute against a "test run" linked to a story or release. SDETs can push automated test results from CI via the add-on's REST API.
59.8 Automating Jira from CI
# Comment on a Jira issue when a test fails
curl -X POST -u $JIRA_USER:$JIRA_TOKEN \
-H "Content-Type: application/json" \
-d '{"body":"Test failed in build #'$BUILD'. See: '$BUILD_URL'"}' \
"$JIRA_HOST/rest/api/3/issue/$ISSUE/comment"
# Create a Bug automatically
curl -X POST -u $JIRA_USER:$JIRA_TOKEN \
-H "Content-Type: application/json" \
-d '{"fields":{"project":{"key":"ACME"},"summary":"Auto: '$TEST' failed","issuetype":{"name":"Bug"},"priority":{"name":"Medium"}}}' \
"$JIRA_HOST/rest/api/3/issue"
59.9 Linking strategy
- Bug fix PR — link to the original bug
- Story — link to its epic; link to a test plan in Zephyr
- Production incident — link to root-cause bug + post-mortem doc
- Use Jira links (blocks, is blocked by, relates to) to make dependencies visible
Module 58 — Jira Q&A
What's the Jira issue hierarchy?
Epic → Story → Task → Bug → Subtask. Epic groups multiple stories across sprints. Story is one user-facing feature within a sprint. Task is engineering work without direct user value. Bug is a defect. Subtask is decomposition of any of them.
What's in a great bug report?
Clear title with [Area]. Environment. Reproducible steps. Expected vs actual with concrete values. Severity + priority. Attachments (screenshot, video, trace, logs). Links to related issues. A stranger should reproduce it from your text alone.
What's JQL and one common query you use?
Jira Query Language — SQL-like filter syntax. Example:
assignee = currentUser() AND type = Bug AND status != Done shows my open bugs. Saved as filters → dashboards.Severity vs priority?
Severity: technical impact (Critical/High/Medium/Low) — decided by QA/eng. Priority: business urgency (P0/P1/P2/P3) — decided by PM. Same bug can be Low severity, High priority (typo on launch page) or vice versa.
Scrum vs Kanban?
Scrum: time-boxed sprints, fixed scope per sprint, ceremonies (planning, review, retro). Kanban: continuous flow, WIP limits, no sprints, optimise cycle time. Scrum suits feature delivery; Kanban suits support/ops.
What's velocity and is it a good metric?
Average story points completed per sprint. Useful for capacity planning, dangerous as a target (teams inflate points). Don't compare velocity across teams — points are estimated differently.
How do you link automated test failures back to Jira?
Either manually file a bug with the failing test info + trace, or automate via Jira REST API in CI — when a tagged test fails, post a comment to its issue or create a new bug. Avoid noise — only on persistent failures, not first flake.
What's a fix version?
Jira field representing the release the issue is targeted for or fixed in. Used to build release notes and to scope regression testing for a release.
How would you find tests that don't have a Jira story linked?
In Zephyr/Xray, query test cases where the "Linked Issues" field is empty. Reveals coverage gaps. Combine with stories without test cases linked for a two-way audit.