Bulk Import Test Cases into QTest Using CSV
Step‑by‑step guide to bulk import test cases into QTest from a CSV file, including prerequisites, import procedure, validation checks, and recovery options.
01 Oct 2025, 16:06 UTC

Desired outcome
Create or update test cases in a QTest project from a CSV file while preserving fields such as External ID, Title, Description, Steps, Expected Result, Owner, and Component.
Prerequisites
- QTest account with Project Admin or Tester role in the target project.
- Access to the Import module (Project → Module → Import → Test Cases).
- A CSV file encoded in UTF‑8 without BOM that follows QTest’s template:
External ID,Title,Description,Step Description,Expected Result,Owner,Component. - Optional: download the sample template from the Import screen to verify column order.
Procedure
- Log in and navigate
Sign in to QTest, select the desired project, then go to
Module → Import → Test Cases. - Prepare the CSV
If you do not have a template, click Download Sample Template, open it in a spreadsheet editor, and fill rows with your test‑case data. Ensure:
- No extra commas inside a field unless the field is wrapped in double quotes.
- Each row corresponds to one test case; blank rows are ignored.
- The
External IDcolumn is unique unless you intend to update existing cases.
Save the file as
testcases.csv. - Start the import
Click Choose File, select
testcases.csv, and press Open. QTest will attempt to auto‑map columns; verify that each header matches the expected field. If any column is unmapped, use the dropdown to assign it manually. - Run the import
Click Start Import. A progress bar appears; do not navigate away until the process finishes. When complete, a notification shows the number of processed rows and any errors.
Expected checks
- Open the Import History (Project → Module → Import → History) and locate the most recent job. Confirm:
- Status =
Completed. - Processed rows = number of non‑header lines in your CSV.
- Error count = 0.
- In the Test Design module, apply a filter for the
External IDvalues you imported. Open a few records and verify that Title, Description, Steps, Expected Result, Owner, and Component match the CSV. - If you enabled the “Update existing” option, open a test case that existed before the import and confirm its fields were overwritten as intended.
Recovery options
If the import fails or creates incorrect data:
- Download the import log from the Import History page; it lists rows that caused errors and the reason (e.g., missing required field, duplicate External ID).
- Correct the problematic rows in the CSV (fix quoting, supply missing Owner, ensure unique External IDs unless updating).
- Re‑import the file. To avoid creating duplicates, enable the Update existing toggle so that rows with matching External IDs modify the existing test case instead of creating a new one.
- If many test cases were created incorrectly, use the bulk delete feature (select the cases in Test Design → More Actions → Delete) or restore the project from a backup if your QTest plan includes periodic snapshots.
Limitations and practical tips
- File size: QTest may time‑out on CSV files larger than ~10 MB. Split large datasets into multiple files (e.g., 5000 rows each) and import sequentially.
- Special characters: Fields containing commas, line breaks, or double quotes must be enclosed in double quotes; internal double quotes should be escaped by doubling them (e.g.,
"He said ""Hello"""). - Encoding: Ensure the CSV is saved as UTF‑8 without BOM; otherwise accented characters may appear garbled.
- Owner mapping: The Owner column must contain a username that exists in the project; otherwise the import will skip that field and log a warning.
Verification (optional)
To double‑check data integrity, export the imported test cases back to CSV:
- In Test Design, select the imported test cases (use the External ID filter).
- Choose Export → CSV and save the file.
- Compare the exported file with the original (ignore system‑generated columns like
Created DateorInternal ID). Any mismatch indicates a problem during import.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.