SeedQL blog

Notes on test data.

Why seeding breaks, why suites go flaky, and why a copy of production is the most expensive shortcut in your stack.

  1. 014 min read

    Faker Works Fine Until Your Schema Has Foreign Keys

    Random values per table look great in isolation and fall apart the moment your data has relationships. Here is why, and what to do instead.

    Read
  2. 024 min read

    Your Tests Aren't Flaky. Your Test Data Is.

    Most flaky test suites are not a timing problem. They are a shared mutable state problem wearing a timing costume.

    Read
  3. 035 min read

    Your Staging Database Is a Copy of Production. That's a Breach With a Delay Timer.

    Nobody defends this practice. Everybody does it. Here is the honest accounting of what you are actually exposing.

    Read
  4. 044 min read

    The Three Day Ticket: Why Refreshing Test Data Needs a DBA and Shouldn't

    The provisioning queue is not a tooling problem. It is a permissions problem that everyone has learned to work around.

    Read
  5. 054 min read

    Masking Production Data Is Not Anonymisation

    Replacing the name field feels like privacy work. Uniqueness in combination is what identifies people, and masking leaves it intact.

    Read
  6. 064 min read

    500,000 Rows That Look Real: Load Testing Without Uniform Random Junk

    Uniform data hides the exact hotspots you are load testing to find. Volume without skew is a test that passes and teaches you nothing.

    Read
  7. 074 min read

    Nobody Can Onboard Without a Working Local Database

    Day one goes fine until step four of the README. The seeding script rotted months ago and the person who wrote it has left.

    Read
  8. 084 min read

    Same Rows Every Run: Why CI Needs Deterministic Test Data

    A failure you cannot reproduce is not a bug report. It is a rumour. Determinism is what turns one into the other.

    Read
  9. 094 min read

    The Data Your Bugs Live In Never Survives the Copy

    Sanitising a production dump removes exactly the rows that break things. The tidy result is the least useful dataset you could have built.

    Read
  10. 105 min read

    Compliance Says No to Real Data in Test. Now What?

    The policy is usually right. The problem is that nobody funded the alternative, so teams comply on paper and copy anyway.

    Read

In the meantime

If you want to know what is shipping rather than what is being thought about, the changelog is the contract. Every release, every lock ratification, every “Coming soon” graduation, public and dated.