All insights
Test management

Out of the Spreadsheet: When and How to Move Your Test Cases to a Real System of Record

The practical guide to moving test cases from a spreadsheet into a system of record once the sheet hits one of its three breaking points.

Sep 13, 20265 min read
Out of the Spreadsheet: When and How to Move Your Test Cases to a Real System of Record — Tesbo

A spreadsheet of test cases is not a mistake. For a team of four testing one product, a shared sheet with 80 rows works fine for a long time. It is fast to edit, everyone already knows how to use it, and it costs nothing. The problem shows up later, usually after headcount grows or the product splits into a few services with overlapping releases. Two testers edit the same row during a Tuesday release and one set of changes silently disappears. Someone asks which cases covered the login flow during the March 3 incident and nobody can reconstruct it from six months of copied tabs. This guide is for the team that has hit one of those walls and needs the sheet turned into a real system without losing what is already in it.

The three breaking points that force the move

Most teams do not leave the spreadsheet because a consultant told them to. They leave because one specific thing broke in a way that cost real time.

  • Concurrent edits: two people editing the same sheet at once, with one person's changes overwritten by an autosave or a copy paste from an old version.
  • Run history across releases: no reliable way to see which cases were run against which build without a fragile system of colored cells or duplicated tabs per release.
  • Traceability to requirements: no clean link between a test case and the ticket or requirement it covers, so a question like "what did we test for this feature" takes an hour of scrolling to answer.

If none of these have happened to your team yet, the sheet is probably still the right tool. This guide is for after one of them has.

Preparing the sheet before you touch an importer

A spreadsheet built for humans to skim is rarely built for a machine to parse cleanly, and a bit of prep saves hours of cleanup later.

Get to one test case per row. Merged cells covering multiple steps, or a single cell holding five numbered steps separated by line breaks, need to be split out. If your sheet has grown organically, this is often the single biggest chunk of prep work.

Make steps parseable. A column with "1. Click login 2. Enter password 3. Submit" all in one cell is hard for an importer to separate reliably. Splitting it into a consistent format, even something as simple as one step per line with a clear delimiter, makes the import far more predictable.

Check for hidden or filtered rows. Sheets accumulate rows that got filtered out during a cleanup and then forgotten. Unhide everything and confirm the row count before you export.

Mapping the columns, including the ones people forget

The obvious columns map themselves: test case title, steps, expected result. The ones people forget are the ones that cause problems three weeks after the migration.

  • Preconditions, which often live buried in a notes column rather than their own field.
  • Priority, which sometimes exists as a color code on the row rather than a text value, and colors do not survive most exports.
  • Owner, which is frequently just the last person who happened to edit the row rather than an intentional assignment.

Go through the sheet's columns one at a time and decide where each one lands in the new system before you import anything. A 15 minute mapping exercise up front avoids a much longer cleanup afterward.

What to leave behind

Here is explicit permission: you do not need to migrate everything. Old, duplicated tabs from releases three years ago, half finished draft cases nobody ever ran, and a "scratch" tab someone used for personal notes can all stay in the archived file. Migrating clutter into the new system just recreates the mess in a nicer interface.

A reasonable rule is to migrate anything that was run in the last two releases, plus anything actively linked to an open requirement, and archive the rest with a note on where to find it if someone asks later.

Verifying the import and what to do with the old file

Count rows before and after. If the cleaned sheet had 340 rows and the new system shows 340 cases, that is a good first signal, though not proof on its own.

Spot check 10 to 15 cases across different sections of the original sheet. Confirm steps are in the right order, the expected result is attached correctly, and the priority and owner landed where you expected.

Do not delete the original spreadsheet. Rename it clearly, something like "test cases, archived after migration to new system, do not edit," and keep it somewhere the team can find it for reference. Nobody needs to touch it again, but somebody will eventually want to check something from it, usually during an audit or a dispute about whether a case existed before a certain date.

The import will not handle an arbitrary sheet layout on its own. It works because you did the mapping and cleanup first, not because the tool guessed correctly.

Questions people ask

How do I know my team has actually outgrown the spreadsheet?

Look for one of three signs: edits from two people overwriting each other, no reliable run history across releases, or no clean link between cases and requirements.

Do I need to migrate every tab in the workbook?

No. Migrate cases run in the last two releases and anything tied to an open requirement. Archive old or duplicate tabs instead.

What is the biggest prep mistake teams make?

Skipping the column mapping step and letting the importer guess. Priority stored as cell color and steps crammed into one cell are the two most common failures.

Should I delete the spreadsheet after migrating?

No. Rename it as an archived reference file and keep it available. Someone will eventually want to check it during an audit.

Will the import handle any spreadsheet layout automatically?

No. It depends on the prep and mapping work done beforehand. An unprepared sheet with merged cells and inconsistent columns will not import cleanly.

Keep going

Try Tesbo, or get the next useful idea

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

Get started

One email a month

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