PRACTICAL GUIDE / testrail tutorial
TestRail Tutorial: Organize QA Test Cases and Runs
TestRail tutorial for QA teams: learn projects, suites, cases, runs, milestones, reports, dashboards, and practical test management workflows.
In this guide9 sections
- The test run was complete but could not support signoff
- Choose a project boundary and repository model
- Shape the case repository around product behavior
- Write cases for repeatable evidence
- Connect milestones, plans, and runs to delivery
- Record results as handoff-quality observations
- Review the run by risk, not only by status
- Build reports around explicit questions
- Govern the repository as an operational system
What you will learn
- The test run was complete but could not support signoff
- Choose a project boundary and repository model
- Shape the case repository around product behavior
- Write cases for repeatable evidence
The test run was complete but could not support signoff
A team finished a TestRail run with 312 results. The release manager still could not tell which candidate was tested, whether the blocked cases affected checkout, or why 47 cases were excluded. Several failures linked to chat messages instead of defects, and automated results used a custom status nobody outside QA understood.
TestRail had stored activity, but the team had not designed traceability.
A credible TestRail workflow connects four things: the maintained test case, the release or milestone, the selected execution run, and the evidence behind each result. Set up those relationships before importing a large spreadsheet. A smaller repository with consistent decisions is more useful than thousands of cases no one trusts.
Choose a project boundary and repository model
Map a TestRail project to a software product or service with a coherent ownership and release model. Do not create one project per sprint; that fragments case history. Do not place unrelated products into one project merely to simplify administration.
TestRail supports different repository structures, including a single repository, a single repository with baseline support, and projects organized with multiple test suites. Choose based on versioning and execution needs.
- A single repository is straightforward for most products with one active mainline.
- Baseline support can help when maintained product versions need divergent cases.
- Multiple suites can separate large functional areas, but suite boundaries affect how cases can be combined into runs.
Make the decision with a concrete scenario. If the team must run authentication, catalog, and checkout cases together for every release, sections in one repository may be simpler than separate suites. If two supported release lines have materially different behavior, a version-aware model may be justified.
Document project administrators, case maintainers, result contributors, and report consumers. Restrict structural changes to people who understand downstream runs and reports.
Shape the case repository around product behavior
Use sections for stable domains and subsections for user capabilities or system boundaries. Avoid mirroring the current team chart or every navigation menu. Teams and screens change faster than behavior.
One storefront hierarchy could be:
- Identity
- Registration and verification
- Session and recovery
- Catalog
- Search and filtering
- Product availability
- Checkout
- Cart calculations
- Payment authorization
- Order confirmation
- Operations
- Refunds
- Fulfilment exceptions
Agree on a small field set before bulk creation. Useful fields often include priority or risk, test type, automation state, owner, requirement reference, precondition, and data profile. Every custom field increases authoring and cleanup cost. Add one only when it supports selection, execution, or reporting.
Define controlled values. “High,” “P1,” and “Critical” should not all mean roughly important. If automation status includes Automated, Candidate, Not suitable, and Unknown, publish the decision rules.
Import in batches by section. Review ten representative cases after import before moving thousands. Check line breaks, step mapping, references, priorities, and ownership.
Write cases for repeatable evidence
A case should express one coherent verification objective and enough setup for another tester to reproduce it. It should not narrate every mouse movement.
For “Apply a fixed-value promotion to a mixed-tax cart,” record:
| Field | Content |
|---|---|
| preconditions | promotion FIXED10 active; one standard and one reduced-tax SKU |
| data | named fixture or seed instruction |
| steps | add both items; apply promotion; open review |
| expected | discount allocated by agreed rule; tax and payable total match examples |
| references | pricing rule and delivery ticket |
| risk | High, financial calculation |
| automation | service check automated; UI composition manual |
Make expected results observable. “Works correctly” cannot be reviewed after failure. If a value depends on a formula, include the exact example or link the approved rule.
Do not create one case for every data combination. Use representative partitions and attach a dataset where the execution method supports it. Conversely, do not compress an entire customer journey into a case so large that a failure location is ambiguous.
Review cases when requirements change, an escaped defect exposes a missing condition, or repeated results show the case is unclear. A case repository is maintained product knowledge, not an archive of everything QA has ever tried.
Connect milestones, plans, and runs to delivery
Use a milestone for a meaningful delivery objective such as a release, major phase, or business event. It provides a stable grouping for associated plans, runs, and reporting.
A test run represents a selected set of cases executed for one purpose. Name it with the decision context:
Store candidate identity, environment, included scope, exclusions, and entry assumptions in the run description or agreed custom fields. “Sprint 14 testing” is too vague six months later.
Use a test plan when several related runs must be coordinated, especially across configurations such as browsers, devices, environments, or suites. A plan for a web release might contain:
- critical journey run on desktop Chrome
- responsive run on mobile Safari configuration
- payment integration run against the provider sandbox
- accessibility review run for changed components
Do not multiply configurations mechanically. Select them from support commitments and risk. Each run creates execution and reporting work.
Link the plan or runs to the milestone. Before execution, filter the case selection by risk, change impact, and agreed regression scope. Save the reason for exclusions so an untested area cannot disappear behind a completion percentage.
Record results as handoff-quality observations
Publish status definitions and the next action each status implies.
| Status | Meaning | Required addition |
|---|---|---|
| Passed | expected result observed on named candidate | concise evidence for critical cases |
| Failed | product behavior contradicts expectation | actual result and defect reference |
| Blocked | prerequisite prevents evaluation | blocker, owner, and next check |
| Retest | correction requires another execution | fix or candidate reference |
| Untested | no accepted result exists | no implication of quality |
Use the statuses configured for the project, but keep the semantic set small. A custom status should change routing or reporting, not merely express frustration.
Result comments should add facts not already in the case: actual amount, log correlation, screenshot, response, device, or build variation. Remove credentials and personal data. Link a defect from the result so later reports connect the failure with its resolution.
Assignments expose ownership but should not become static. Rebalance blocked or overloaded runs during the cycle. Require testers to update results close to execution time; bulk updates at day end lose evidence and make progress views stale.
For automated integration, map framework outcomes deliberately. Setup failure, skipped test, assertion failure, and infrastructure error should not all become Failed. Preserve the automation run URL and candidate identity. Use stable case identifiers so refactoring test names does not create duplicate records.
Review the run by risk, not only by status
At each checkpoint, filter results to answer operational questions:
- Which high-risk cases have no accepted result?
- Which failures lack linked defects?
- What has been blocked longest, and who owns the dependency?
- Did a new candidate invalidate earlier results?
- Which requirements have no selected cases?
- Are results concentrated on one configuration while another is untouched?
A run can show 90 percent complete while every remaining case depends on an unavailable payment provider. Add a written interpretation to stakeholder updates.
When a new build arrives, perform impact analysis. Retest failed cases against the fix, repeat neighboring risk coverage, and decide which earlier passes remain valid. Do not reset the whole run reflexively or assume every pass transfers.
Close a run only after its decision is complete and result corrections are recorded. Closure should preserve history. Reuse maintained cases in a new run for the next candidate or cycle rather than reopening an old record to overwrite the past.
Build reports around explicit questions
TestRail offers reports for cases, results, defects, summaries, references, and workload. Select a report because it answers a review question.
Examples:
- Coverage for References: which requirements lack linked cases?
- Results comparison: which cases or configurations differ across runs?
- Defect summary: which defects originate from the selected milestone or runs?
- Run or milestone summary: what is the current result distribution and activity?
- Property distribution: are high-priority or automation-candidate cases represented as expected?
Check report scope, filters, result freshness, and access before sharing. A polished chart built from completed runs only may omit the active blocker.
Pair generated output with a release note containing candidate, major gaps, high-impact defects, exceptions, and recommendation. Reports aggregate; they do not interpret residual risk.
Schedule recurring reports only for recurring decisions. An unread weekly attachment creates noise. For external audit or archival needs, agree on retention, permissions, and the authoritative exported artifact.
Govern the repository as an operational system
Assign section owners and a maintenance cadence. Useful health checks include cases not executed for several releases, cases with frequent Blocked or Retest outcomes, duplicates, missing references, unclear expected results, and stale automation status.
Sample records rather than trusting counts. Ten well-maintained high-risk cases can be more informative than a rising repository total.
When deleting or replacing a case, consider historical traceability. Mark obsolete content with a reason and move it through the team’s archive process. Avoid reorganizing sections during a critical run unless the benefit outweighs confusion.
Audit permissions and integrations after team or tool changes. Confirm that defect links still resolve, automated result mapping uses current identifiers, and report recipients can access the underlying evidence.
The TestRail implementation is successful when a reviewer can move from release milestone to run, from run to result, from result to case and defect, and back to the requirement without guessing. That chain turns execution records into durable release evidence.
// FIELD DISPATCH
Get the QA Field Notes
Weekly QA battles, AI testing guides, and interview drills. Free on Substack.
PRIMARY REFERENCES
Verify the details at the source
QABattle guides are practical explanations. Product behavior, standards, and APIs can change, so use these primary references for the canonical details.
- 01ISTQB glossary
ISTQB
Shared testing terminology for test design, defects, levels, and lifecycle concepts.
FAQ / QUICK ANSWERS
Questions testers ask
How should a team choose its TestRail repository structure?
Start from product ownership, release lines, and which cases must be combined in execution. One repository usually suits a single active mainline; version-aware baselines help genuinely divergent maintained releases; multiple suites fit durable functional boundaries. Do not create projects per sprint or split suites so normal cross-domain runs become difficult.
How should automated outcomes map into TestRail results?
Map assertion failure, setup failure, skipped execution, and infrastructure error deliberately rather than labeling all of them Failed. Preserve the automation run link, candidate identity, stable case identifier, and sanitized evidence. Keep status meanings few and published so every result implies a known handoff or next action.
Should earlier passing results remain valid after a new candidate arrives?
Only after impact analysis. Retest corrected failures, repeat neighboring risk coverage, and identify which earlier evidence the change invalidates. Do not reflexively reset everything or transfer all passes. Name each run with candidate, environment, and purpose so history cannot be overwritten by reopening an old execution record.
What should accompany a TestRail report used for signoff?
Check scope, filters, freshness, access, exclusions, and whether active blockers are included. Pair the generated aggregation with a short interpretation naming candidate, high-impact defects, evidence gaps, exceptions, and recommendation. A polished completion chart cannot explain residual risk or why a critical case was excluded.
When is a new custom field justified in TestRail?
Add one only when its controlled values support case selection, execution routing, ownership, or reporting. Define the decision rules before bulk import and inspect a small representative batch for mapping errors. Every field adds authoring and cleanup cost, so similar values such as High, P1, and Critical should not coexist ambiguously.
RELATED GUIDES
Continue the learning route
GUIDE 01
How to Write Test Cases: Complete Guide with Examples
Learn how to write test cases with practical steps, examples, a QA template, common mistakes, and review tips for reliable software coverage.
GUIDE 02
Test Metrics and KPIs: QA Measurement Guide
Test metrics and KPIs guide for QA teams: learn quality measures, dashboards, formulas, defect trends, reporting examples, and metric risks.
GUIDE 03
Defect Life Cycle Explained: Bug Status Workflow
Defect life cycle explained for QA teams: learn bug statuses, triage, severity, priority, retesting, closure rules, and practical workflow examples.
GUIDE 04
STLC: The 6 Phases of the Software Testing Life Cycle
Learn the software testing life cycle (STLC) phases with entry and exit criteria, Agile vs Waterfall tips, test closure activities, and practical examples.