How to Create and Manage Test Cases in Jira (With Templates)
Struggling to organize your testing efforts? Learn how to structure jira test cases using native tools and top plugins.

Your team already lives in Jira for sprints, bugs, and feature requests. But the moment someone asks "where are our test cases?" the chaos begins. Scattered spreadsheets. Orphaned Confluence pages. A shared Google Doc that nobody updates.
This guide shows you how to build, organize, and manage jira test cases inside the platform your team already knows. You will learn three distinct architectural approaches, see real configuration steps, and walk away with a free template you can import today.
Why Manage Test Cases in Jira Directly?
The simplest reason is context. When a test case lives in the same workspace as the user story it validates, traceability becomes automatic. A developer can click from a failed test directly into the linked bug, then back to the original requirement. No tab-switching. No "which spreadsheet was that in?"
This centralized approach to test management in jira also unlocks native reporting. Product managers can build JQL-powered dashboards that show real-time pass/fail metrics across every sprint. No manual spreadsheet compilation required.
Finally, consolidation eliminates the permission sprawl that plagues multi-tool setups. One workspace means one access control policy, one audit log, and one source of truth for compliance reviews.

With that foundation in place, let us define exactly what we are building.
What Is a Test Case in Jira?
A test case in Jira is a structured issue that documents a single, verifiable check against your application. It typically contains five elements:
- Summary - a concise, searchable title (e.g., Verify SSO login with valid enterprise credentials)
- Preconditions - the exact system state required before execution
- Test Steps - numbered, atomic actions the tester performs
- Expected Results - the specific outcome that defines success for each step
- Test Data - the input values needed (credentials, URLs, mock records)
A test case is not a bug report or a user story. It is a repeatable validation script, whether executed manually or programmatically, that confirms a single piece of functionality works as designed.
Understanding what is a test case in jira matters because the structure you choose dictates how searchable, traceable, and maintainable your test library becomes over time.
Now, there are three fundamentally different ways to store these inside Jira. Each has clear trade-offs.
Method 1: Native Jira Test Cases Without Plugins
If your team has fewer than five engineers and a limited budget, you can configure native jira test cases using only the built-in settings. No marketplace apps. No extra licensing. Just custom issue types and fields.
Creating the Custom Issue Type
Navigate to Jira Settings > Issues > Issue Types. Create a new type called Test Case. Optionally, create a second type called Test Execution to separate the definition from the run. This separation prevents historical data from being overwritten when you re-run the same test case against a new build.
Adding the Required Custom Fields
Standard Jira fields will not capture everything a proper test case demands. Add these custom fields to your Test Case issue type:
- Preconditions (multi-line text)
- Test Steps (multi-line text)
- Expected Results (multi-line text)
- Actual Results (multi-line text, filled during execution)
Note: Use Jira's multi-line text field rather than the single-line text field for steps and results. Single-line fields truncate content and make tickets unreadable on mobile.
Linking Issues for Traceability
Use the built-in issue linking feature aggressively. Link every test case back to its parent user story using the tests relationship type. If a test case fails, create a bug ticket and link it using the is caused by relationship. This manual linking is tedious, but it is the only way to build a traceability matrix without plugins.
Enforce mandatory linking through workflow transition validators. If your Jira admin configures validators on the Done transition, no test case can be closed without a linked story.
Where Native Jira Test Cases Break Down
This approach works until it does not. Around 50-100 test cases, you will hit three walls:
- No reusability. You cannot share steps across test cases without copy-pasting.
- No execution tracking. There is no native pass/fail status workflow for test runs.
- No coverage reports. Building a traceability matrix requires manual JQL queries and spreadsheet exports.
Teams that outgrow native tracking typically migrate to a dedicated plugin. The good news is that your custom issue types and data transfer directly.
Method 2: Jira Test Case Plugins (Xray, Zephyr, AIO Tests)
Marketplace plugins transform Jira into a full test management in jira command center. They add dedicated issue types, execution engines, folder-based organization, and coverage dashboards directly inside your existing projects.
Here is how the three leading plugins compare:
| Feature | Xray | Zephyr Scale | AIO Tests |
|---|---|---|---|
| Issue Types | Test, Test Set, Test Plan, Test Execution, Precondition | Separate test module (not Jira issues) | Test Case, Test Cycle |
| JQL Support | Full JQL for all test artifacts | Limited (separate query interface) | Full JQL support |
| Folder Organization | Via Test Sets and Test Plans | Built-in hierarchical folder tree | Folder-based |
| CI/CD Integration | REST API + XML import | REST API + XML import | REST API |
| Best For | Teams wanting everything as Jira issues | Large legacy regression suites | Teams wanting simplicity |
Xray
Xray creates five dedicated issue types: Test, Test Set, Test Plan, Test Execution, and Precondition. Because every artifact is a native Jira issue, you can query them using JQL. For example, filtering all failed jira test cases from the last sprint becomes:
issueType = "Test Execution" AND status = FAIL AND sprint = "Sprint 24"
This deep integration also means standard Jira dashboards, filters, and automation rules work directly with your test data.
Zephyr Scale
Zephyr takes a different architectural approach. Instead of creating Jira issue types, it adds a separate Tests tab inside each project. This gives you a hierarchical folder tree that feels familiar if your team previously used TestRail or HP ALM.
Zephyr excels at organizing massive regression suites. If your team handles test data management across thousands of scenarios, the folder-based structure keeps everything navigable.
AIO Tests
AIO Tests strips away the complexity of older plugins. It provides a fast, modern interface with a minimal learning curve. Teams migrating from spreadsheets particularly appreciate its built-in import tools and clean UI.
Tip: All three plugins offer 30-day free trials on the Atlassian Marketplace. Test each one against your actual CI/CD pipeline before committing. Pay close attention to how results from your automation framework map into the plugin's pass/fail workflow.
Automated Test Result Integration
The biggest advantage of premium plugins is automated result ingestion. Configure your ci cd pipeline to push JUnit XML or Cucumber JSON results directly into the plugin after every build. This updates the status of your jira test cases automatically, without any human intervention.
This single feature justifies the licensing cost for teams running heavy automation testing suites.
Plugins solve the reporting and organization gaps, but they are locked to the Atlassian ecosystem. If your quality operations span multiple platforms, you need a different architecture.
Method 3: Standalone Platforms with Jira Integration
Standalone test platforms exist entirely outside of Jira. They provide their own dedicated web interface for test management, analytics, and execution. Data flows back to Jira through API integrations - typically as automatically generated bug tickets.
When Standalone Makes Sense
Choose this approach when your QA department operates across multiple project management tools. If half your company uses Jira and the other half uses Linear or Asana, no native plugin can unify them. A standalone platform becomes the single source of truth for all test reporting, decoupled from any one vendor.
Deep AI-Powered Analytics
Because standalone tools control their own infrastructure, they can run computationally expensive analysis that Atlassian's database constraints prohibit. This includes automatic identification and quarantine of flaky tests, trend analysis across thousands of historical runs, and AI-powered root cause suggestions.
If your team needs cutting-edge ai tools for test intelligence, standalone platforms are generally superior. You can quantify the yearly cost of flaky tests using TestDino's free engineering calculators.
The Synchronization Trade-Off
The main drawback is data synchronization. If the API connection breaks, developers lose visibility into quality metrics. You also pay for duplicate user seats across two platforms, and managing permissions across multiple tools increases administrative overhead.

Regardless of which architecture you choose, the process of writing a good test case remains the same. Here is the exact workflow.
Step-by-Step: How to Create a Test Case in Jira
A poorly written test case causes confusion, false failures, and wasted sprint cycles. Follow these four steps to write jira test cases that any engineer can execute without asking clarifying questions.

Step 1: Define the Scope and Summary
The summary field is the most important line in your test case. It must be specific, searchable, and unambiguous.
Bad: Check login
Good: Verify successful SSO login using valid enterprise credentials on Chrome 120+
A good summary tells the tester exactly what feature, what scenario, and what boundary conditions are being validated.
Step 2: Write Clear Preconditions
Preconditions define the exact system state required before the first action. Missing preconditions are the leading cause of false-positive test failures.
Be explicit. Instead of user is logged in, write: User with Admin role exists in the database, is not locked, and has a verified email address.
Step 3: Detail the Execution Steps
Break execution into atomic, numbered actions. Each step should describe exactly one user interaction.
// login-test.js - Playwright example of atomic test steps
test('enterprise SSO login', async ({ page }) => {
// Step 1: Navigate to login page
await page.goto('/login');
// Step 2: Click SSO provider button
await page.getByRole('button', { name: 'SSO' }).click();
// Step 3: Enter company email
await page.getByLabel('Company Email').fill('[email protected]');
// Step 4: Submit the form
await page.getByRole('button', { name: 'Sign In' }).click();
// Step 5: Verify redirect to dashboard
awaitexpect(page).toHaveURL('/dashboard');
});
Tip: Start every step with an action verb: Click, Navigate, Enter, Select, Verify. If a step requires two verbs, split it into two steps. If a step contains the word and, it is testing two things at once.
Step 4: Define Expected Results
Every step needs a corresponding expected result. Never assume the tester knows what correct looks like.
| Step | Action | Expected Result |
|---|---|---|
| 1 | Navigate to /login | Login page loads with SSO button visible |
| 2 | Click SSO Provider | Redirect to identity provider page |
| 3 | Enter [email protected] | Email field accepts input, no validation error |
| 4 | Click Sign In | Loading spinner appears |
| 5 | Wait for redirect | URL changes to /dashboard, welcome toast displays |
Note: For negative test cases, specify the exact error message text. Instead of error is shown, write: Banner displays 'Invalid credentials. Please try again.' in red text below the email field.
Now that you know how to create individual jira test cases, the next challenge is maintaining them at scale.
Best Practices for Managing Jira Test Cases at Scale
Creating test cases is straightforward. Maintaining a library of hundreds or thousands of them over multiple releases is where most teams fail. Here are five practices that prevent your test case repository from becoming a graveyard of outdated documentation.
1. Use Components and Labels for Organization
Tag every test case with a Jira component (e.g., Checkout Flow, User Auth) and a priority label (Smoke, Regression, Edge Case). This tagging taxonomy lets you build targeted execution suites using JQL:
issueType = "Test Case" AND component = "Checkout Flow" AND labels = "Smoke"
2. Audit Your Repository Every Release Cycle
Schedule a mandatory review at the end of every major release. Delete test cases for deprecated features. Consolidate overlapping scenarios. A lean, accurate repository always outperforms a massive, outdated one.
3. Automate Stable, Repetitive Tests
Identify manual test cases that run every sprint without changing. These are prime candidates for conversion into playwright testing scripts. Once automated, link the script output back to the original manual test case for historical continuity.
4. Version Your Test Cases with Sprints
Assign test cases to specific fix versions or sprints. This creates a natural audit trail that shows exactly which test cases were executed against each release. It also simplifies regression planning - you can filter by version to see what was last validated.
5. Track Flaky Test Cases Separately
Flag test cases that produce inconsistent results with a dedicated Flaky label. Quarantine them from your main regression suite and investigate root causes before they erode team confidence in the entire test management in jira process.
Standardized templates make all five practices easier to enforce. Here is a ready-to-use jira test case template.
Free Jira Test Case Templates
To maintain consistency across your entire engineering team, mandate a strict jira test case template for every new ticket. The following structure works with native custom fields, Xray, Zephyr, and AIO Tests:
| Field Name | Description | Example Data |
|---|---|---|
| Summary | Specific, searchable title | Verify password reset email delivery within 30 seconds |
| Preconditions | Required system state | User account exists, is locked after 3 failed attempts |
| Test Data | Specific inputs required | [email protected], password: Test1234! |
| Steps | Numbered atomic actions | Navigate to /forgot Enter email Click Reset |
| Expected Result | Explicit success criteria | System displays Email sent banner; email arrives within 30s |
| Priority | Execution priority | Smoke / Regression / Edge Case |
| Linked Story | Parent requirement | PROJ-104: User can reset password via email |
Here is a complete, filled-out jira test case example for reference:
Summary: Verify that a locked user receives a password reset email within 30 seconds
Preconditions:
- User [email protected] exists in the database
- Account is locked after 3 failed login attempts
- Email service is operational (check /health endpoint)
Steps:
- Navigate to https://app.example.com/forgot
- Enter [email protected] in the email field
- Click the Send Reset Link button
- Open the email inbox for [email protected]
- Verify the reset email has arrived
Expected Result: Reset email arrives within 30 seconds. Email contains a valid, single-use reset link that expires in 24 hours.
You can adapt these jira test case examples to fit any project. The key is enforcing the same structure across every ticket, regardless of who writes it.
Templates standardize your manual efforts, but when your automated suites start failing at scale, you need a system that creates bug tickets automatically.
Automate Bug Creation from Failed Jira Test Cases
When your automation suite runs hundreds of jira test cases every night, triaging failures manually becomes an overwhelming bottleneck. Engineers waste hours parsing CI logs just to figure out which test broke, why, and what the browser was showing at the moment of failure.
TestDino eliminates this manual triage entirely. It acts as an intelligent test analysis layer between your automation framework and Jira.

How the Playwright Integration Works
TestDino is purpose-built for modern frameworks. When a Playwright test fails, TestDino automatically captures the DOM snapshot, network trace, console logs, and a screenshot at the exact millisecond of failure. It organizes all of this into a shareable dashboard - no more parsing raw CI output.
![]()

Pushing Rich Context to Jira
Instead of manually copying error logs, click one button inside TestDino. It uses its Jira API integration to generate a fully populated bug ticket, pre-filled with the error message, environment details, and direct links to the failure trace and DOM snapshot.

Set it up in two steps:
# Step 1: Install the reporter
npminstall@testdino/playwright-reporter--save-dev
// Step 2: Add to playwright.config.ts
import { defineConfig } from'@playwright/test';
exportdefaultdefineConfig({
reporter: [
['list'],
['@testdino/playwright-reporter', {
apiKey: process.env.TESTDINO_API_KEY,
projectId: 'your-project-id',
}],
],
});
Eliminating Triage Friction
With this setup, every failed test case generates a Jira ticket that contains the full debugging context. Developers never have to ask QA to reproduce the issue. The DOM snapshot, network trace, and console logs are already attached.

This workflow leverages the best automation tools to eliminate the human communication bottleneck between QA and development. Track these automated failures using playwright metrics dashboards. Use the playwright automation checklist to make sure your pipeline configuration is complete.
Conclusion
Managing jira test cases effectively comes down to five decisions:
- Pick the right architecture. Native custom issue types for small teams. Plugins like Xray or Zephyr for mid-size to enterprise. Standalone platforms when you span multiple tools.
- Structure every test case consistently. Use the template above with Summary, Preconditions, Steps, Expected Results, Test Data, and a linked user story.
- Automate everything you can. Convert stable manual jira test cases into Playwright scripts and feed results back into Jira automatically.
- Audit ruthlessly. Delete deprecated test cases every release cycle. Tag flaky ones separately.
- Close the feedback loop. Use TestDino to push rich failure context from CI pipelines directly into Jira tickets so developers never debug blind.
Your test management in jira process does not have to be chaotic. Start with the template in this guide, pick the method that fits your team size, and build from there.
FAQs

Krupa Gandhi
QA Tester



