All insights
Test management

What Your Test Case Export Actually Loses When You Leave a Tool

Exports check that cases came out, not that evidence survives. Here is the twenty minute test to run before you find out the hard way.

Oct 18, 20267 min read
What Your Test Case Export Actually Loses When You Leave a Tool — Tesbo

A QA lead at a mid sized company spends a Friday afternoon exporting three years of regression cases out of the old tool before the contract lapses. The export runs, the file downloads, the row count matches the case count in the old dashboard. Everyone moves on. Eight months later an auditor asks for proof that a specific defect was retested before release, and the answer is not in the new system. It was never in the export either. Nobody checked, because the export looked fine at the time it mattered least: the moment nobody needed it yet.

This happens on a predictable schedule, once a year or so, whenever a team changes test management tools, gets acquired, or just decides the old license is not worth renewing. The fix is not a better export format. It is knowing, before you export anything, which parts of a test record are content and which parts are relationships, because only one of those survives a format conversion reliably.

The four layers of a test record

Every test case is really four different things stacked on top of each other, and interchange formats treat them very differently.

  • Case text: the title, the steps, the expected result. This is plain text or close to it, and it survives almost any export format intact.
  • Structure and folders: how cases are grouped into suites, modules, or test plans. This usually survives too, though nesting depth and naming sometimes get flattened.
  • Execution history: every past run of that case, with a pass or fail result and a date. This is where exports start to fail.
  • Links out: the connections to a requirement, a user story, or a bug ticket in another system. This is the layer most likely to disappear entirely.

The first two are content. You can put them in a CSV column or an XML element and they travel cleanly. The last two are relationships, and that is exactly why they are fragile.

A relationship only means something if both ends of it exist in the same place, or if the format has a defined way to point at something outside itself. Most test case interchange formats, and most CSV or spreadsheet exports specifically, have no such mechanism. A CSV column can hold a bug ticket number as text, but that text is not a link. It does not resolve to anything in the destination system, and it will not update if the ticket moves or gets renumbered.

Execution history has the same problem in a different shape. A pass or fail result is meaningless without knowing which build it ran against, who ran it, and when. Some exports keep the latest result as a single column. Fewer keep the full run by run history. The ones that keep it usually store it as a separate export entirely, one that teams forget to request because the case export already looked complete.

Consider a QA lead migrating a 400 case regression suite that has been running for two years. The case text and folder structure move over in an afternoon. The 6,000 individual execution records behind those 400 cases, the ones that would prove which release each case last passed against, do not have an obvious home in the new tool's import format. That gap is invisible until someone needs to answer a specific question about a specific past release.

Attachments are their own problem

Screenshots, log files, and evidence documents attached to a test case create a third kind of fragility. They are usually stored by the original tool as a reference: a file path, an internal id, or a URL that only resolves inside that tool's own storage. When you export the case data, that reference comes along as a string of characters. The actual file, and the connection between the string and the file, often does not.

A team exporting cases that reference screenshots from a mobile testing round will typically find the attachment filenames listed in the export, sitting next to nothing. The images stayed behind in the old system's storage, which may or may not still be reachable after the contract ends.

The twenty minute check you can run today

You do not need to wait for a migration to find out how much your current export actually preserves. Export one suite, right now, from whatever tool you use.

Then open the file and look for one specific thing: a pass or fail result attached to a case, with a date next to it, that you did not have to go back into the live tool to find.

If that pair, a result and a date, is sitting in the exported file itself, your history layer survives export. If it is missing, or if the file only shows the case text and structure, you now know exactly what you would lose if you migrated or lost access tomorrow. Twenty minutes, one suite, one honest look at the file. That is the whole check.

What to do when the history will not travel

For most teams the honest answer, after running that check, is that execution history will not travel cleanly. That is the common case, not a special one, and it has a workable answer that does not involve heroic data engineering.

Keep the old system reachable in a read only state for as long as your compliance or audit window requires, rather than trying to force every historical run into the new tool. Write down, somewhere the whole team can find it, exactly where that old system lives and who still has access to it. Then record the cutover date clearly in the new system, so anyone looking at a case's history later knows to check two places instead of assuming the new tool's records go back further than they do.

This is less satisfying than a clean migration, but it is honest about what actually happened, and it is far cheaper than trying to reconstruct six thousand execution records by hand after the fact.

The procurement lesson

If you are choosing a new test management tool rather than leaving one, the same check applies before you sign anything. Ask the vendor for an export during the trial period, not after the contract is signed. Run the same twenty minute check on that export. Look specifically for whether execution history and links to requirements or issues appear in a form you could actually use somewhere else.

A tool that hands you a clean export during a trial, one where history and links are visible and readable outside the product, has told you something true about how it treats your data on the way out, long before you need to find out the hard way.

Questions people ask

Does every export lose execution history?

Not every one, but it is common enough that you should check rather than assume. Some tools support a fuller export format that includes run history as a separate file; many spreadsheet or CSV exports do not.

Is this a sign the export tool is deliberately hiding data?

No. Most interchange formats were built to move case text and structure, which are content. History and links are relationships, and relationships need a format designed to carry them, which most common formats are not.

What is the fastest way to check my current export today?

Export one suite, open the file, and look for a pass or fail result with a date attached to a specific case. If that pair is visible in the file, your history survived.

What should we do if the history genuinely will not migrate?

Keep the old system accessible in a read only mode for your required retention window, document where it lives and who can access it, and record the cutover date in the new system.

Should attachments factor into this check too?

Yes. Look at whether attachment references in the export resolve to an actual file, or just to a path or id with nothing behind it in the new location.

Keep going

Try Tesbo, or get the next useful idea

Start building your testing workflow now, or get one practical email a month.

Start free

One email a month

What we shipped, what we learned, and the occasional infographic worth pinning. Unsubscribe in one click.