Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How to Write a Good Test Case? 2025 Guide for Testers in Jira

A good test case is like a well-written, detailed recipe - you understand it and follow it without hesitation at each step. So, learning how to write a good test case is comparable to mastering a great recipe. A test case requires the right ingredients as well as clear instructions and a systematic approach. This guide will show you how to create a test case that delivers consistent, valuable results every time.

What Makes a Good Test Case Actually Good?

First of all, let’s define a ‘test case’. In a nutshell, it is your detailed instruction manual for testing a specific feature. It outlines the what, where and why of your test. Think of it as a quality insurance policy for your product. Every good test case has these essential parts:

  • Objective: What are you trying to verify?
  • Preconditions: What needs to be in place before you start?
  • Test steps: The clear, numbered actions to take.
  • Expected Result: What should happen at the end?
  • Pass/Fail Criteria: How do you know if the test succeeded?

But Wait, Which Kind of Test Case Are You Writing?

However, before you figure out how to create a test case, knowing the type of test you’re writing is also helpful. You can think of your product like a fortress - it needs different tests for a variety of security checks. According to widely accepted standards, like those established by the ISTQB (International Software Testing Qualifications Board), your test cases will generally fall into these crucial categories:

  1. Functional Test Cases: These confirm what the system does (e.g., Does the button submit the form correctly? Can the user successfully log in?). Generally, if it's about a specific feature's operation, it's functional.
  2. Non-functional Test Cases: These confirm how well the system does it. This covers things like performance (Is the page fast enough?), security (Is the user protected from data breaches?) and usability. For users to have a good experience with the product, these requirements are just as vital.

Moreover, we can divide these main categories further into another two approaches - positive and negative testing. Positive test cases verify the system works as expected with valid data, testers call it the "happy path". On the other hand, negative test cases are your attempts to “break the system”. Here, you provide invalid input or exceed limits, ensuring graceful error handling. It’s important to realize that you need both to guarantee true reliability.

Knowing the type of test you're writing is the first step toward setting up a good test case template. That’s how you ensure you’re structuring tests for comprehensive coverage.

Above all, a truly good test case is more than just a list. It should also be:

  • Independent: It can be run on its own without relying on other tests.
  • Traceable: It links directly back to a specific requirement or user story.
  • Clear: It avoids ambiguity and leaves no room for guesswork.
  • Appropriate: It has just enough detail to be effective, but not so much that it's a chore to maintain.

Although it may seem overwhelming to upkeep, you can easily manage these requirements with the right Jira test case management tool.

The Golden Rules of Writing Actionable Test Cases

So, how to write a test case that truly works? Even though it's part science, sometimes part art, a set of rules can become helpful.

1. Write Like You're Teaching a Replacement 

Imagine you're leaving for a tropical vacation tomorrow and a new teammate needs to run your test cases. Would they understand exactly what to do? If the answer is "maybe", then you definitely need more detail. Good test cases should be self-sufficient. It means that they include all necessary setup, data and cleanup steps. The overall goal is a high-level of clarity, so that anyone can execute them successfully and get the same results.

2. Follow the "One Test, One Purpose" Rule 

Each test case should focus on one specific piece of functionality or validation. It’s tempting to create a test case that's a "mega-test" checking everything from login to checkout in one go. However, when a complex, multi-step test fails, you’ll waste valuable time debugging what actually broke. Separate, focused tests are much easier to isolate, maintain, and later to debug. This way, you ensure your failure reports are precise.

3. Use Action-Oriented Language 

Your test steps should use strong, active verbs to provide clear, actionable instructions. Think of it as writing code for a robot. When writing test steps, use strong, active verbs such as "Enter" (for data input), "Click" (for buttons) and "Verify" (for expected results). Passive and vague descriptions leave room for major interpretation errors, whereas specific language eliminates them.

4. Plan for Both Happy and Unhappy Paths 

Don't just test what's supposed to happen (the Positive path). Users are brilliant at finding unexpected ways to use, and break, your software. In such a case, your job is to anticipate every scenario. Always include "negative" tests that cover edge cases, boundary and error conditions. A good test case should prove that the system handles failure gracefully.

5. Review and Refactor Regularly 

Like code, test cases can develop technical debt. Features change, requirements shift and tests can become outdated. So schedule regular reviews, just like a spring cleaning for your test suite. At that time you remove obsolete tests, update outdated steps and consolidate similar ones. All of these efforts ensure your test cases remain an accurate, valuable reflection of your product's current state. This makes your overall test suite more efficient to execute and maintain.

The Worst Test Case Template

Now that you've learned the rules, let's see what happens when they're all ignored. Take a look at this actual bad test case example. If this image gives you anxiety, you're not alone. The sheer number of errors here shows you exactly why clarity is non-negotiable.

Bad Test Case Example.png

Example of a poorly written test case - vague descriptions, missing data,
and unclear steps make it difficult to reproduce or verify results.

 

This test case violates every major rule:

  • Zero Clarity 

The summary is a vague "Check if it works", the steps are non-actionable "Click around until you find the page" and the expected result is subjective ("looks good," "should be fast"). It makes it impossible to pass or fail deterministically. Furthermore, it’s a "mega-test" that combines mobile checks, emails, and database jobs. It violates the "One Test, One Purpose" rule.

  • Zero Traceability & Security Risk

There is no link back to a specific requirement and the environment is entirely ambiguous ("Prod-ish? Café Wi-Fi"). Worst of all, the test data section is a massive security breach.  It shares hard-coded credentials ("Password123") and references sensitive tokens in unshared local files. As a result, it completely undermines data security protocols.

  • Zero Repeatability

The instructions tell the tester to "retry until it passes", which from the start biases the result. Additionally, precondition fields contradict themselves ("cache warm or cold") and rely on guessing external dependencies ("run the cron (?) if needed"). This absolutely isn't a repeatable procedure. In fact, it's a frantic scavenger hunt that guarantees inconsistent results every single time it's run.

A good test case is the opposite of this disaster. It’s a reliable asset, not a security risk or a time sink. Now, how do we make sure our own processes never lead to a mess like that? The answer often lies in abandoning outdated methods and turning to modern test management tools.

Leveraging Modern Tools for Better Management

“A modern test management tool enables QA specialists to actively collaborate on security with the entire team, rather than functioning as a separate gatekeeper.”


- Konrad Koralewski, a QA Specialist at Appsvio

While you can technically manage test cases in spreadsheets, modern development teams benefit from integrated solutions. A Jira agile test management tool like Appsvio Test Management (ATM) is built directly into Jira. This way, it aligns testing with the rest of your development workflow.

All in all, when choosing a solution, look for features that make your life easier:

  • Standardized Templates: Ensure every test case your team writes follows the same format.
  • Requirement Traceability: Link test cases directly to user stories to ensure you're always testing what matters most.
  • Reusable Steps: Save time by reusing test steps. 

ATM: Enforcing Good Habits Directly in Jira

The principles of writing a good test case - clarity, traceability and consistency - are only easy to follow with the support of the right tool. This is where Appsvio Test Management (ATM) shines, as it turns Jira into a Jira agile test management hub.

As ATM is built on Forge, Test Cases are native Jira work items. So, linking a Requirement (like a User Story) to the corresponding test becomes a simple, intuitive action. This guarantees the necessary Requirement Traceability for audits and analysis, which directly feeds into the Traceability and Coverage Reports. These reports allow testers to easily identify scope gaps and improve the overall coverage of their test suite. 

Coverage Report in ATM.png

Writing test cases isn’t just documentation - it’s quality in progress.
Coverage Reports in ATM make it easy to track what’s covered and what’s not.

 

Furthermore, to solve the maintenance challenge seen in bad examples, ATM supports Test Steps Versioning. The Versions allow you to update steps without losing historical context. What’s more, the Test Case Execution object also saves a specific snapshot of the test version used, ensuring you always know exactly what was tested. Finally, practical elements such as custom fields for Environment and the "Call Tests" functionality help enforce the test case template structure. These features promote consistency and reusability, which keeps the test suite clean and efficient.

The Path Forward: Building Your Expertise

Learning how to create test case effectively is a continuous process. Start with these fundamentals and later on, you’ll find that effective test case creation becomes second nature.

The time you invest in writing quality test cases definitely pays off. How? With reduced debugging time, improved test coverage and ultimately - higher quality software. Test cases are not just documentation, more like a foundation of reliable, repeatable quality assurance.

To put these best practices directly into your workflow and stop fighting spreadsheets - explore Appsvio Test Management (ATM) for Jira. See how easy it is to enforce these golden rules and write a good test case within your existing Jira environment.

2 comments

Erick Miranda Márquez
Contributor
October 20, 2025

Great explanation @Ola Sokolowska_Appsvio_ 

Also, as a note, I think we need to mention somewhere that a test should have a conscious story, sometimes the issues don't come from a nasty test, but from a bad story though.

 

Ola Sokolowska_Appsvio_
Atlassian Partner
October 20, 2025

Thanks! That's a great point regarding the user story - sometimes, something's wrong right from the start. We also tackled that issue in our article right here, if anyone's interested to dive in to the topic of 'good user stories' :)

https://www.appsvio.com/blog/user-story-template-jira

Comment

Log in or Sign up to comment
TAGS
AUG Leaders

Atlassian Community Events