Migrate to RunxBuild and earn up to $50 in hosting credit on your first deposit.

Calculate your savings
unxBuild
Back to Blog Explainer

Cloud Testing: What to Move Off Your Laptop and What to Keep

Sean

Platform Writer

Aug 31, 2026
7 min read

Cloud testing means running your tests on infrastructure you rent rather than machines you own - and the value comes from parallelism and environment realism rather than from the word cloud.

Cloud Testing: What to Move Off Your Laptop and What to Keep

The literature on this is heavy on benefit lists and light on the distinction that matters: some tests get dramatically better when moved, some get slower and more expensive, and telling them apart in advance saves a lot of money.

Table of contents

What actually improves when tests move

Three things, and they are worth being specific about because they are the entire case.

Parallelism. A suite that takes forty minutes on one machine takes four on ten. For any team where test duration is what makes people avoid running tests, this is the whole benefit and it is enormous.

Configuration breadth. Browser and version combinations, operating systems, device profiles, screen sizes. Maintaining that matrix physically is impractical; renting it by the minute is the only sensible approach.

Realistic conditions. Testing from other geographic regions, under real network latency, against production-shaped data volumes, at traffic levels a laptop cannot generate. Load testing in particular is close to meaningless locally.

If none of those three apply to a given test, moving it to rented infrastructure adds cost and network latency and improves nothing.

The layers, and where each should run

  • Unit tests. Fast, isolated, no external dependencies. These should run locally in seconds and in CI on every push. There is nothing to gain from special infrastructure.
  • Integration tests. Real database, real cache, real queue - usually as containers alongside the test run. These belong in CI with ephemeral service containers, which is the single highest-value setup in this whole area.
  • End-to-end tests. A real browser against a deployed application. Slow, valuable, and flaky. This is where parallelism and browser matrices genuinely pay.
  • Load and performance tests. Traffic generated from multiple locations against a production-shaped environment. Only meaningful on rented infrastructure, and only meaningful against realistic data.
  • Manual and exploratory testing. Needs a stable, shareable environment with recognisable data - a preview deployment per branch is the modern answer.

The common mistake is running everything at the end-to-end layer because it feels the most real. End-to-end tests are the slowest, flakiest, and most expensive per unit of confidence. Push assertions down the stack wherever the same thing can be verified more cheaply.

Test data, which is where this usually goes wrong

Every discussion of cloud testing eventually arrives at data, and it is the part that causes real damage.

Never copy production data into a test environment unmodified. It puts personal data in a system with weaker access controls, more people with access, and no audit trail. This is one of the more common causes of avoidable data incidents, and it happens because it is the easy way to get realistic data.

The alternatives, roughly in order of preference: generated data with realistic shape and volume, an anonymised extract where identifiers are replaced consistently, or a small curated fixture set covering known edge cases. The first is the most work up front and the least trouble afterwards.

Whatever you choose, the environment needs to be resettable. Tests that depend on state left by earlier tests are the primary source of flakiness, and the fix is a clean database per run rather than cleverer test ordering.

Keeping the bill and the runtime under control

  1. Do not run everything on every push. Unit and integration tests on every commit; the full end-to-end matrix on merge to main or on a schedule. Most teams get this backwards and then wonder why CI costs more than production.
  2. Cache dependencies. Reinstalling packages on every run is usually the largest single chunk of CI time and it is entirely avoidable.
  3. Kill environments automatically. Preview environments per branch are excellent and must expire, or you will be paying for two hundred abandoned deployments by March.
  4. Fail fast. Run the quick checks first so a broken build stops in ninety seconds rather than after the full browser matrix.
  5. Fix flaky tests rather than retrying them. A retry policy turns a flaky test into a slow, expensive, still-untrustworthy test. Quarantine it and fix it or delete it.

Preview environments, the highest-value thing here

If you adopt one practice from this category, make it a deployed environment per pull request with its own database, seeded with test data, that expires when the branch merges.

It gives reviewers something to click rather than a diff to imagine. It gives end-to-end tests a real target. It surfaces environment and configuration problems before merge rather than after deploy. And it makes manual testing something a non-engineer can do without asking anyone to set anything up.

The requirements are modest: an application that builds from a repository, configuration in environment variables rather than files, and a database that can be provisioned and destroyed cheaply. Teams that have those three things get preview environments almost for free, which is another argument for arranging them early.

How this fits the rest of the stack

Preview environments and integration test runs are ordinary services and databases with short lives, and their cost is easy to underestimate in aggregate. The RunxBuild hosting calculator prices the service, the database, and the bandwidth so a per-branch environment has a real number attached before you enable it everywhere. RunxBuild builds from a GitHub repository with build logs and per-deploy environment variables, and provisions managed MySQL and Postgres with private networking, so a disposable environment is the same shape as production.

Useful related references:

FAQ

What is cloud testing?

Running tests on rented infrastructure rather than local machines. The value comes from three things: parallelism that turns a forty-minute suite into a four-minute one, breadth of browser and device configurations, and realistic conditions like geographic latency and production-scale load.

Which tests should run in the cloud?

End-to-end browser tests, where parallelism and configuration matrices pay off, and load tests, which are close to meaningless locally. Unit tests should stay fast and local. Integration tests belong in CI with ephemeral service containers, which is the highest-value setup in this area.

Can I use production data for testing?

You should not use it unmodified. It places personal data in an environment with weaker access controls and more people with access. Use generated data with realistic shape, a consistently anonymised extract, or a curated fixture set covering known edge cases.

How do I stop CI costs from getting out of hand?

Run unit and integration tests on every push but the full end-to-end matrix only on merge or on a schedule, cache dependencies, expire preview environments automatically, run quick checks first so broken builds fail fast, and fix flaky tests rather than adding retries.

What is the most valuable testing practice to adopt?

A deployed environment per pull request with its own seeded database that expires on merge. It gives reviewers something to click, end-to-end tests a real target, and surfaces configuration problems before merge rather than after deploy.

#Cloud Testing#CI/CD#Test Environments#Load Testing#QA