Buying Technology

    How do you test a system before real users arrive?

    A demo that works proves little. Test the things real days do to a system: concurrent use, retries, abuse, and a release that goes out half-finished. Three problems we found in our own build, and what we still haven't fixed.

    GC
    GarunaCDX Editorial
    Editorial team
    Oct 19, 2026 4 min read
    Key takeaways
    • A feature that works once proves little. Fire it concurrently and repeatedly.
    • Test the safeguards. A limiter, a lock or a permission rule can exist and still do nothing.
    • Check the release process as well as the code: order of steps, and what reaches users first.
    • Label results honestly: built, tested, deployed, in production, measured.
    • Our own pre-launch review found three real problems. One is fixed in tests only, and one is still open.

    Quick answer

    Test the things a real day does that a demo doesn't: many people acting at once, requests that repeat, traffic that tries to abuse a limit, and a release that goes out in the wrong order. Test the protections themselves, not just the features. Then write down what is still open. A pre-launch test is only honest if its failures are listed.

    The short answer

    A demo is one person doing the happy path on a good connection. Launch day is forty people, a bad network and one impatient finger. Test for the second.

    Why engineers and operations leaders ask this

    You don’t want your first real users to be your test. But you also can’t test everything, and a vendor who says “fully tested” is telling you very little. The useful question is: tested against what?

    What good looks like: five things a real day does

    What real use doesWhat to testWhat a pass looks like
    Several people act on one record at onceFire concurrent requests at the same record, more than onceNo duplicates, no gaps, no half-finished changes
    Requests repeatSend the same request twiceThe second one is recognised, not executed again
    Someone pushes past a limitSend traffic beyond the limitRequests are refused, and you see them refused
    A permission rule existsTry the forbidden action as each roleIt is blocked, not just hidden in the screen
    A release goes outWalk through the release steps in orderThe web never reaches users before the function it calls exists

    Two habits sit under the table. Test the safeguard, not just the feature. A lock, a limiter or a permission rule can be in the code and still not do its job. And write down what failed and what is still open. A test report with no open items is a sign nobody looked hard.

    What we found in our own build

    Proof · grade 4 · our own build for an independent client

    A clinic-queue platform, built and tested on a demo clinic ahead of launch. These findings come from our own audits before any real patient used it. None of it has been proven under real clinic load.

    Three problems from reviewing the clinic-queue platform, written at pattern level.

    1. A queue update that could tear. Advancing a queue was a series of separate writes. A failure partway could leave it half-updated. We moved it into one transaction under a per-doctor lock. The fix passed 48 assertions and two concurrency runs locally. It isn’t in production yet. We call it tested, not deployed. The pattern is explained here.

    2. A rate limiter that blocked nothing. The first limiter kept its count in the memory of the function handling each request. Functions like these don’t reliably share memory between requests, so the count never built up. When we sent traffic past the limit, in sequence and in parallel, nothing was blocked. We moved the counter into the database and a live test then showed requests being refused. We only found this because we tested the limiter, not because we trusted it.

    3. A release that ran out of order. Our release is still four manual steps: database, functions, configuration, web. Once, a feature reached users before the backend function it needed existed. A check that catches that drift is on our list. It isn’t built yet.

    What these have in common: all three were found by looking for failure, not by confirming success.

    Where this doesn’t apply

    Where this doesn't apply

    A brochure site or an internal tool with five users doesn’t need concurrency runs and a limiter test. Test the main flows, check the permissions, and move on. Also, none of this replaces real use: testing on controlled data tells you the system survives the cases you imagined. Real users find the ones you didn’t. We haven’t measured how many defects a pre-launch review catches, so we don’t claim a rate.

    Questions to ask any vendor, including us

    1. What did you test that a single user doing the happy path wouldn’t reveal?
    2. Show me a test where many requests hit the same record at once.
    3. How did you check that your rate limit and permission rules actually block things?
    4. Walk me through a release. Which step comes first, and what happens if one is skipped?
    5. What did your last review find that is still open?
    Pre-launch review
    Send us your test plan and release steps. We'll mark what a real day will break first.
    Book a review

    Next: how to prevent double bookings and what a tech handover should cover. Part of the guide Buying custom software and hiring a tech vendor.

    The findings come from our clinic-platform brief and our own audit notes and are tracked in our claim ledger. The five-row table is our method, not an industry standard. We hold no defect-rate or load measurement for this build, and no figure on this page comes from a third party.

    Your verdict
    Was this article useful?
    GC
    Written by
    GarunaCDX Editorial
    Editorial team

    Engineers, product and growth folks at GarunaCDX writing about the systems we build for clients.

    View all articles
    Share
    Planning something similar?

    Let's talk about your build.

    Tell us what you are building. A founding engineer replies within one working day with how we would approach it.

    FAQ

    Frequently asked questions

    The main user flows, then the things real use adds: several people acting at the same moment, repeated requests, slow or dropped connections, abuse of any limit, and the release process itself. Also test that each permission rule blocks what it should block.

    Fire many requests at the same record at the same moment and check the result is consistent: no duplicates, no gaps, no half-finished changes. Run it more than once. One pass can miss a timing problem.

    Only if it works. Test it by sending traffic past the limit and checking that requests are actually refused. A limiter that keeps its counter in a place that does not persist between requests can look fine and block nothing.

    It means tested on controlled data for the cases you thought of. It does not mean proven in production. Say which one you mean.

    The GarunaCDX build log

    Industry insights, once a month

    New case studies, healthcare, marketplace, B2B SaaS and industrial breakdowns, and the engineering notes behind what we ship. One short email a month, no fluff.

    We never share your data — see our Privacy Policy for details.