Bulk Loading Test Cases in QTest with CSV Import: What Works and What to Watch
Learn how to bulk‑load test cases into QTest using the CSV import wizard, from file preparation and field mapping to validation, verification, and the practical limits you’ll hit on large projects.
04 Feb 2026, 14:04 UTC

The problem: manual entry doesn’t scale
When a project accumulates hundreds or thousands of test cases, entering them one‑by‑one in the QTest UI becomes a bottleneck. Teams often have the data already in spreadsheets—requirements traceability matrices, legacy test repositories, or exported Jira issues. QTest’s CSV import wizard turns that spreadsheet into a searchable test‑case hierarchy in a single operation, but only if the file is prepared correctly.
1. Prepare a clean CSV
The wizard expects a header row and one test case per line. Mandatory fields are Title and Steps; everything else is optional but useful for traceability.
| Column (example) | QTest field | Notes |
|---|---|---|
| Test ID | Test ID | Must be unique across the project. Leave blank to let QTest auto‑generate. |
| Title | Title | Required. Keep it concise. |
| Description | Description | Free‑text, supports line breaks. |
| Steps | Steps | Required. Use a delimiter (e.g., “|”) between step action and expected result. |
| Expected Result | Expected Result | Optional if you embed it in Steps. |
| Tags | Tags | Comma‑separated list; created automatically if new. |
Worked example – a three‑row CSV (saved as testcases.csv):
Test ID,Title,Description,Steps,Expected Result,Tags
TC-101,Login with valid credentials,Verify successful login,"Enter username|Enter password|Click Login",User lands on dashboard,smoke;regression
TC-102,Login with invalid password,Verify error message,"Enter username|Enter wrong password|Click Login",Error "Invalid credentials" displayed,smoke
TC-103,Password reset flow,End‑to‑end reset,"Click Forgot password|Enter email|Submit|Open email|Click link|Set new password|Login",User logs in with new password,regression;security
Save the file as UTF‑8. Remove any stray commas inside free‑text fields or wrap those fields in double quotes as shown.
2. Run the Import Wizard
- In QTest, open the target project → Test Cases → Import Test Cases.
- Choose CSV and upload
testcases.csv. - On the Map Columns screen, drag each CSV header to the corresponding QTest field. Unmapped columns are ignored but can be added later.
- Click Validate. QTest checks:
- All mandatory fields present.
- Duplicate
Test IDvalues (the whole import aborts if any are found). - Row count – files over ~10 000 rows may hit the UI timeout.
- If validation passes, press Import. A progress bar appears; the operation writes rows into the test‑case repository and creates any new tags.
Required permission: Project Test Case – Create (usually granted to Test Leads and Admins).
3. Verify and troubleshoot
After the import finishes, QTest presents an Import Log with a line‑by‑line summary:
- Success – row imported, test case ID shown.
- Warning – non‑critical issues (e.g., unknown tag created).
- Error – row skipped; reason displayed (missing Steps, duplicate ID, malformed CSV).
Quick sanity check: use the global search box (top‑right) and type a known Test ID such as TC-101. The case should appear with its steps exactly as in the CSV. Open it to confirm the step delimiter rendered correctly.
If errors appear, download the log, fix the offending rows in the spreadsheet, and re‑import just the corrected slice (the wizard can accept a smaller CSV).
4. Trade‑offs and limits
- File size – >10 000 rows often exceed the 5‑minute UI timeout. Split into 5 000‑row chunks or use the QTest REST API for programmatic bulk load.
- Duplicate IDs – The wizard treats any duplicate
Test IDas a fatal error. Either guarantee uniqueness upstream or leave the column blank to let QTest auto‑generate IDs. - No rollback – Import creates permanent test cases. The only way to undo is to delete the imported cases manually or via the API.
- Tag explosion – Each unique tag in the CSV becomes a project tag. Clean up the tag column beforehand if you want a controlled taxonomy.
Actionable next step
Export your current test‑case backlog to CSV, run the validation step on a 1 000‑row sample, and confirm the import log shows zero errors. Once the sample passes, process the full dataset in batches of ≤5 000 rows, or script the same mapping through the QTest API for repeatable, automated loads.