Modern QA2026Anatomy of a Good Test Case — tiles
Log inJoin
2 / 71 · 11 Manual Testing Fundamentals · Writing Test Cases← prev⊞ allnext →☰ Read as one page

1.2Anatomy of a Good Test Case

Every test case, regardless of your tooling (TestRail, Zephyr, Google Sheets, or plain Markdown), should include these fields:

Field Purpose Example
ID Unique reference for traceability TC-LOGIN-004
Title One-line summary of what is being verified Verify login fails with expired password
Preconditions State the system must be in before starting User account exists with password expired 1 day ago
Steps Numbered, atomic actions 1. Navigate to /login 2. Enter email 3. Enter expired password 4. Click Submit
Expected Result Observable, measurable outcome Error message "Your password has expired" is displayed; user is not redirected to dashboard
Actual Result Filled during execution (blank until run)
Test Data Specific values needed Email: expired@test.com, Password: OldPass123!
Priority Execution order importance High

The ID Convention

Use a consistent naming pattern across your project. Common formats:

  • TC-MODULE-NNN (e.g., TC-LOGIN-004, TC-CART-012)
  • FEATURE.SCENARIO.NNN (e.g., AUTH.EXPIRED_PW.001)
  • Auto-incrementing numeric IDs from your test management tool

The format matters less than consistency. Pick one and enforce it.

Title Best Practices

The title should answer "what is being verified?" in one line. Start with a verb:

  • Good: "Verify login fails with expired password"
  • Good: "Confirm item quantity updates in cart after increment"
  • Bad: "Login test" (too vague)
  • Bad: "Test that when a user who has an expired password tries to log in the system shows an error" (too long)