ShotMark
Skip to Content
Templates processes 8 min read

Test Case Template: Free Download for Manual and Automated QA

Download a free test case template with examples for both manual and automated testing. Includes fields for steps, expected results, and priority.

Rumana Parvin
Rumana ParvinFounder & QA Engineer
Test Case Template: Free Download for Manual and Automated QA

A test case template is only useful if someone can follow it and get a clear pass/fail result. Yet most test cases we’ve reviewed fall into two extremes: too vague (“Test login works”) or too verbose (30 steps for a single flow). This template strikes the balance. It is structured enough for consistency and concise enough that testers actually use it.

We’ve included separate formats for manual test cases and automated test case specifications, because the information each audience needs is different.

What Makes a Good Test Case

A good test case has five qualities.

Clear preconditions: The tester knows the exact starting state. “User is logged in with a standard account” is a precondition. “Open the app” is not.

Discrete steps: Each step describes one user action. “Click the Submit button” is one step. “Fill in the form and submit it” is multiple steps crammed together.

Expected results: Every step (or at minimum the final step) has a stated expected outcome. Without this, the tester is guessing what “correct” looks like.

One scenario per case: A test case that covers login, password reset, and session timeout is three test cases pretending to be one. Split them.

Traceability: Each test case maps back to a requirement, user story, or acceptance criterion. If no requirement exists, ask why the test case does.

Before going further, let’s clarify three terms that teams often use interchangeably. A test case is a specific set of inputs, conditions, and expected results. A test scenario is a high-level description of what to test (e.g., “User login”). A test script is an automated implementation of a test case in code.

Test Case Template (Manual Testing)

Here is the manual test case template with every field explained.

FieldDescriptionExample
Test Case IDUnique identifierTC-LOGIN-001
TitleShort, descriptive nameVerify successful login with valid credentials
Module/FeatureArea of the applicationAuthentication
PriorityP0 (blocker) through P3 (low)P0
TypeFunctional, regression, smoke, or edge caseFunctional
PreconditionsRequired state before executionUser account exists with email test@example.com
Test StepsNumbered actions1. Navigate to /login 2. Enter email 3. Enter password 4. Click “Sign In”
Expected ResultWhat should happenUser redirected to dashboard, welcome message displays
Actual ResultWhat actually happened (filled during execution)(Filled during execution)
StatusPass / Fail / BlockedPass
TesterWho executed the testJane D.
DateExecution date2026-04-17
NotesEdge observations, screenshots, environment detailsTested on Chrome 125, macOS

The Priority field matters more than most teams realize. P0 test cases block the release if they fail. P3 test cases document known limitations. When time is short (and it always is), priority tells the team what to run first.

Download this template in Excel, Google Sheets, or as a Notion database to get started immediately.

Test Case Template (Automated Testing)

Automated test cases need different metadata. A developer writing a Playwright or Cypress test needs to know the data requirements, setup/teardown procedures, and assertion criteria, not just the manual steps.

FieldDescriptionExample
Test Case IDSame ID as manual counterpartTC-LOGIN-001
TitleSame descriptive nameVerify successful login with valid credentials
Automation StatusAutomated / Manual / CandidateAutomated
Test Data RequirementsData needed for the testUser with email test@example.com, password “Test1234!”
Setup StepsPre-test environment prepSeed test user in database, clear session cookies
Teardown StepsPost-test cleanupDelete test user, clear cookies
Assertion CriteriaSpecific checks in codeURL contains “/dashboard”, h1 text is “Welcome back”
FrameworkAutomation toolPlaywright
Run FrequencyWhen this test runsEvery CI/CD pipeline run

When to automate vs. keep manual: Automate test cases that run frequently (smoke tests, regression suites), involve repetitive data entry, or need to run across multiple browsers. Keep manual the test cases that require visual judgment, explore new features, or change too rapidly to maintain automation scripts.

A good rule: if a test case runs more than twice per sprint, it’s a candidate for automation. If it runs once per release and tests a rapidly changing feature, keep it manual.

Test Case Template: Free Download for Manual and Automated QA infographic

How to Write Test Cases That Find Bugs

Most test cases confirm that the happy path works. That’s necessary but insufficient. The test cases that find bugs are the ones that test what happens when things go wrong.

Start from acceptance criteria, not from the UI: If the story says “Users can upload files up to 10MB,” your test cases should include a 10MB file, a 10.1MB file, a 0-byte file, and a file with a malicious filename. The UI might accept all of them. The acceptance criteria tell you which ones should fail.

Cover the happy path first, then edge cases: Write the test case for the normal flow. Then ask: What if the input is empty? What if it’s the maximum length? What if the user double-clicks? What if they navigate away mid-action?

Include negative test cases: These test cases verify that the system rejects invalid input. Try logging in with the wrong password. Try accessing an admin page as a regular user. Try submitting a form with a script tag in the name field.

Test boundaries: Boundary values are where bugs hide. If a field accepts 1 to 255 characters, test at 0, 1, 255, and 256. If an API paginates at 50 items, test with 0, 49, 50, and 51.

Test Case Examples by Category

Functional Test Case Example

TC-CHECKOUT-001: Verify successful checkout with valid credit card

  • Priority: P0
  • Preconditions: User logged in, 1 item in cart
  • Steps: 1. Navigate to cart 2. Click “Checkout” 3. Enter valid card details 4. Click “Place Order”
  • Expected Result: Order confirmation page displays with order number. Email confirmation sent within 2 minutes.

Regression Test Case Example

TC-SEARCH-042: Verify search handles special characters

  • Priority: P2
  • Preconditions: Product catalog contains item “O’Brien’s Widget”
  • Steps: 1. Enter O'Brien's in search bar 2. Press Enter
  • Expected Result: Search returns the matching product. No SQL error or blank page.
  • Regression Note: Previously caused 500 error (fixed in v2.3.1)

Edge Case / Boundary Test Case Example

TC-UPLOAD-007: Verify file upload rejects files exceeding size limit

  • Priority: P1
  • Preconditions: Upload limit set to 10MB
  • Steps: 1. Click “Upload File” 2. Select a 10.1MB file 3. Confirm upload
  • Expected Result: Error message displays: “File exceeds the 10MB limit.” File is not uploaded.

Exploratory Testing Charter Example

Exploratory testing doesn’t use traditional test cases. Instead, it uses charters.

Charter: Explore the checkout flow on mobile Safari with intermittent network connectivity. Focus on what happens when the payment API call times out mid-transaction. Time box: 30 minutes. Notes area: Document any unexpected behavior, capture screenshots and console logs.

Organizing Test Cases at Scale

When your test suite grows past 200 cases, organization determines whether the suite stays useful or becomes abandoned.

Group by module, then by feature: Authentication > Login, Authentication > Password Reset, Authentication > Session Management. This structure makes it easy to find related tests and assign ownership.

Tag for suite type: Mark each test case as belonging to the smoke suite (critical path, runs on every build), the regression suite (comprehensive, runs before releases), or the full suite (everything, runs nightly). A developer should be able to run the smoke suite in under 10 minutes.

Version your test cases: Store them alongside your code in the repository, or use a test management tool that tracks history. When the feature changes, the test case changes in the same sprint.

Retire old test cases: If a feature was removed 3 releases ago, delete its test cases. Dead test cases add noise and slow down triage. Review and prune quarterly.

Building these practices into your workflow takes planning. If you’re starting from scratch, our guide on building a QA process walks through the full setup. You can also pair this template with a test plan that defines scope, schedule, and resources, and a QA checklist for final pre-release verification.

From Template to Practice

A test case template gives your team a shared format. The real value comes from writing test cases that are specific, traceable, and maintained over time. Start with the manual template for your current sprint. Identify the top 10 test cases that run every release, and automate those first. Expand from there.

When a test case fails and you need to file a bug, context is everything. ShotMark  captures screenshots, console logs, and network requests in one click, so the developer fixing the issue sees exactly what the tester saw. No copy-pasting error messages. No “works on my machine.” Join the waitlist .

Newsletter

Get new posts in your inbox.

One email when we publish: notes on QA, AI, and shipping faster. No spam, unsubscribe anytime.

Early access

Be first to ship bugs straight to your agent.

One email when ShotMark is ready, plus founding pricing locked in and the occasional build-in-public post. No spam, unsubscribe anytime.

Private beta accessFounding pricing lockNo spam ever