How to Organize Test Cases: Folders for Ownership, Tags for Everything Else
Folders, journeys, and test type each organize a case repository well until they don't. Here's the decision rule that actually holds up.

Anyone searching for how to organize test cases has usually just watched a good folder structure turn painful in real time. A QA lead inherits a spreadsheet of 600 test cases split into folders by feature, opens a ticket to reorganize by user journey instead, and six months later someone else opens a ticket to reorganize by test type. Every team goes through this cycle at least once. The folder tree gets blamed, the tool gets blamed, and the team spends a sprint moving rows around instead of shipping tests. It is not the tool. This post lays out the three ways teams organize a case repository, why each one breaks on its own terms, and the one rule that stops the cycle for good.
The three structures, on the same product
Picture a mid sized product: an online booking tool with search, checkout, account settings, and a mobile app. Here is the same 200 case suite organized three different ways.
- By module. Folders named Search, Checkout, Account, Mobile. A case about the checkout page rendering correctly on Safari sits in Checkout.
- By user journey. Folders named Book a Trip, Manage a Booking, Cancel and Refund. The same Safari checkout case now sits inside Book a Trip, alongside search and confirmation cases from other modules.
- By test type. Folders named Smoke, Regression, Mobile, API. The Safari checkout case might sit in Regression, or it might sit in Mobile since that is where the bug showed up.
By module is good for ownership. The checkout team knows exactly which folder is theirs, and a new hire can find their team's cases without asking anyone.
By user journey is good for understanding coverage of a real user path end to end. A product manager reviewing "can a customer book, then cancel, then get refunded" can see the whole story in one folder.
By test type is good for deciding what to run right now. A release manager on a Thursday afternoon wants "everything tagged smoke," not "everything owned by the Checkout team."
Each structure answers one question well and the other two poorly. The mistake most teams make is expecting one folder tree to answer all three questions at once.
Why organizing by test type breaks first
Of the three, test type breaks fastest, and it is worth understanding why before you pick it. A single case is often more than one type at the same time. The Safari checkout case is a regression case because it guards a fixed bug. It is also a mobile case because it only reproduces on a phone browser. It might also belong in the smoke suite that runs before every deploy.
A folder can only hold that case in one place. The team either duplicates the case into three folders, or picks one folder and quietly loses the ability to pull a clean mobile only run. Duplication drifts the moment one copy gets updated and the other two do not. Six weeks later someone asks for every mobile case and gets a partial list, because half of them were filed under Regression instead.
We kept moving the same 300 cases between the same three folder structures. Nobody was wrong. We just kept asking the folders to answer a new question every quarter.
The rule that resolves it
Folders are for ownership. Tags are for the slices you query.
Pick a folder tree that maps to who owns and maintains a case, usually by module or team, and treat that tree as the one thing that rarely changes. A case moves folders only when ownership actually changes hands, not because someone wants a different view of the suite this week.
Everything else, meaning smoke, regression, mobile, API, browser, priority, release version, becomes a tag. The Safari checkout case lives in the Checkout folder permanently, and carries the tags regression, mobile, smoke. Ask for every mobile case and you filter by tag across the whole repository in one query, regardless of which folder each case happens to sit in.
- The 900 case suite that takes 50 minutes to run in full can be filtered by the
smoketag down to the 40 cases that actually need to run before every merge. - A release manager preparing a Thursday release pulls every case tagged
release-blockerwithout touching the folder structure at all. - A new hire joining the Checkout team opens one folder and sees everything they own, tags and all.
When to nest, and the honest signal for it
Nesting subfolders feels like the natural next step once a folder gets big. The honest signal for when to nest is not a case count you read in a blog post. It is whether you can still scan the list in a few seconds and find what you are looking for.
A Checkout folder with 35 cases in a flat list is still scannable. A Checkout folder with 300 cases, mixing card payments, saved payment methods, and gift cards, is not. That is the point to nest, into Checkout > Card Payments, Checkout > Saved Methods, Checkout > Gift Cards.
The nesting decision should follow a person actually getting lost trying to find something. It should not follow a spreadsheet crossing an arbitrary threshold someone read about once.
Premature structure is the more common failure
Teams that have read about scaling test suites often overcorrect the other way. A team with 80 test cases builds a four level folder hierarchy designed for 2,000, because that is what a case study made it look like they should do. The result is a lot of empty or near empty folders and more clicks to find any given case than a flat list would need.
Start flat, or close to it, by module. Add nesting only when a folder actually gets hard to scan, following the honest signal above. Add tags from day one even on a small suite, because tags cost nothing to apply early and save the restructuring conversation later when the suite doubles.
A useful gut check: if you can name every folder in your tree from memory without looking, the tree is probably still the right size. Once you cannot, that is a sign either to nest, or to admit a folder has become a dumping ground and needs cleanup rather than more structure.
Naming conventions: the other half of findability
Structure gets a case to the right neighborhood. A naming convention gets a person to the right case once they are there, and it stops a second person from writing a near duplicate case that already exists three rows up.
A workable convention states the module, the behavior, and the condition in a consistent order, for example: Checkout: Apply discount code, invalid code. Compare that with a case simply titled Discount test 3, sitting in a folder with eleven other cases named the same generic way.
A reviewer scanning Discount test 3 has no idea if it duplicates Discount test 7 without opening both. A reviewer scanning Checkout: Apply discount code, invalid code next to Checkout: Apply discount code, expired cart can tell instantly they are different cases.
The convention does not need to be elaborate. It needs to be consistent enough that a search for "discount" or a scan of the Checkout folder surfaces near duplicates before someone writes a third one. Teams that skip this step tend to discover, during an audit, that a fifth of their suite is quiet duplication under different names.
What breaks first in a spreadsheet specifically
Most readers of this post are still managing cases in a spreadsheet, so it is worth naming exactly where that format breaks, rather than gesturing at "spreadsheets don't scale."
A spreadsheet can fake a folder tree with a column, and it can fake tags with another column of comma separated labels. Both work fine up to roughly a hundred rows.
Past that, filtering by a tag means writing a formula or manually scanning a text column for a substring, which is slow and error prone. Two people editing the same sheet at once silently overwrite each other's tag edits. There is no way to see, at a glance, which cases in a folder are missing a tag they should have.
None of that is a reason to panic at 80 cases. It is a reason to notice, around the point where filtering starts taking real effort, that the sheet is doing two jobs, ownership and slicing, with tools built for neither.
Migrating an existing suite without stopping the world
None of this requires a dedicated migration sprint. Trying to retag and refile 600 cases in one push is how the original problem happens again, just with tags this time instead of folders.
A calmer path looks like this:
- Pick the folder tree first, based on current ownership, and move cases into it gradually as each team touches its own area.
- Add tags opportunistically. Whenever you open a case for any reason, spend thirty seconds giving it the tags it should have had from the start.
- Prioritize tagging the cases you already run often, like the smoke suite, since those pay back the fastest.
- Accept that some old, rarely touched cases will stay untagged for a while. That is a fine trade against pausing real testing work to fix them all at once.
Within a couple of sprints, the cases that matter for day to day filtering are tagged, and the rest catch up as they get touched anyway.
Questions people ask
Is there one correct folder structure every team should use?
No. This post argues for a decision rule, not a template. Pick folders for ownership and tags for filtering, then let your product shape the specific folder names.
Does Tesbo run or schedule the automated tests these cases describe?
No. Tesbo manages and helps you organize and draft test cases. Running them is still the job of your test runner and CI pipeline.
How many tags is too many?
Fewer than a dozen well understood tags, used consistently, beats forty tags that only the person who created them remembers the meaning of.
Should I reorganize an existing suite around this rule right away?
Not all at once. Start tagging going forward and during your next review pass, rather than pausing testing work for a full migration.
What if two teams share ownership of the same module?
That is usually a sign the module folder is drawn at the wrong boundary. Consider splitting it so each folder maps to one clear owner.
Try Tesbo, or get the next useful idea
Start building your testing workflow now, or get one practical email a month.
Get startedOne email a month
What we shipped, what we learned, and the occasional infographic worth pinning. Unsubscribe in one click.


