Contact salesFree trial
Blog

Break things fast: accelerated QA and testing

SymfonyConautomationPresentationpreview environmentsdata cloning
30 January 2025
Greg Qualls
Greg Qualls
Director, Revenue Enablement
Share

For a quick read-through of the main takeaways, keep scrolling for our distilled write-up. We utilized ChatGPT to enhance the grammar and syntax.


When you hear the phrase “move fast and break things,” you might picture a high-octane startup, shipping code at warp speed—sometimes at the expense of stability. But I’d like to offer a twist on that famous line: move fast and break things on purpose. Because in software development, you’re either finding problems early or fixing them much later at a steeper price. Proper testing and QA are how you break things quickly, learn from them, and ensure a reliable release for your end users.

In this post, I’ll walk through:

  1. Why testing early and often is crucial.
  2. The pitfalls of testing in production (and why you usually shouldn’t).
  3. How Upsun’s cloned environments can help you “test in production” without exposing your real users to risk.
  4. Practical steps to integrate these ideas into your workflow.

The high cost of bugs in production

A common statistic in our industry is that bugs discovered in production can be up to 30 times more expensive to fix than those caught earlier. Why? Because once an issue hits production, it has ripple effects:

  • Unhappy users—They can lose confidence in your platform or product.
  • Brand and revenue impact—Downtime or broken features often mean lost sales.
  • Opportunity cost—Time spent patching production issues is time not spent on new features or improvements.

In a perfect world, you want to find those bugs long before your end users do—and fix them before they become expensive fires to put out.

Why “move fast and break things” still matters

Mark Zuckerberg’s 2012 quote—“Move fast and break things. Unless you are breaking stuff, you are not moving fast enough.”—captures a core truth about innovation: it requires constant iteration and risk-taking. Testing is essentially about breaking stuff to see how and why it fails. The faster you break it, the faster you can fix it.

When it comes to QA, I like to say:

Move fast and break things…unless you’re breaking stuff, you’re not really testing or moving fast.

The goal of QA isn’t to avoid breaking things—it’s to break them as early and safely as possible. Once you’ve identified the weak points, you fix them, refine, and iterate.

Testing in production: the perennial temptation

What if you just deployed changes straight to production to “see if it works”? Testing in production offers immediate feedback, real-world data, and a truly realistic environment. But it also includes the single biggest risk factor: real users who expect everything to work flawlessly. One deployment gone wrong could mean downtime, data loss, or bad press.

Is there a middle ground?

Yes. If you could replicate production exactly—including databases, services, and configurations—but without real users—you’d get all the benefits of testing in production while keeping your real environment (and your job!) safe. That’s where Upsun shines.

Cloned environments with Upsun

Upsun provides full-stack cloned environments (often called “preview environments”) that replicate your production setup in minutes, minus real user traffic. Here’s what it looks like in practice:

  1. Create a branch: Since Upsun is Git-based, you simply create a new branch.
  2. Spin up a cloned environment: Upsun copies everything—the entire infrastructure, database, services, configurations—so your new environment is effectively “production” without end users.
  3. Iterate quickly: You can break, fix, and retest your changes in this environment, confident that any bug you encounter here would appear in real production too.
  4. Merge and deploy: Once it works in the cloned environment, merging into the main branch and deploying is straightforward.

All told, you don’t spend weeks or months setting up a dedicated QA server. Instead, you push your code and let Upsun handle the replicating magic behind the scenes.

Collaborating with multiple developers

When there’s just one developer, testing and deployment are already simpler. But real teams complicate everything—especially when multiple devs are making changes at once. With Upsun:

  • Everyone can clone production: Each developer spins up a unique environment that mirrors production. They break, test, and fix at will—without stepping on each other’s toes.
  • No more environment brawls: Tired of “it works on my machine” or merge conflicts in a single staging environment? Each dev has a personal environment, and merges happen only when their work is confirmed stable.
  • Fast iteration: By the time you merge changes upstream, you’ve already validated them in an environment that matches production.

Handling sensitive data

Of course, production clones raise questions about privacy and compliance. With Upsun:

The payoff: faster, safer testing

When you leverage robust, production-like environments, you test faster and more accurately. You:

  1. Reduce risk: Catch issues pre-production, shield real users from big disruptions.
  2. Deliver higher quality: More thorough QA cycles mean fewer bugs ship.
  3. Boost velocity: Rapid iteration keeps you focused on building features, not firefighting.
  4. Increase customer satisfaction: Stable, reliable software translates to happier users (and higher retention).

A well-known data point shows that when organizations adopt solid QA practices—and can trust their environment parity—they often see a 40% increase in customer satisfaction. That’s no coincidence.

Three takeaways to “break things faster”

Whether or not you use Upsun, here are three universal tips for any modern development process:

Change your mindset
Don’t fear breaking things—embrace it, because every break reveals exactly what needs to be fixed. It’s better to fail fast in a controlled environment than fail big in production.

Leverage real testing environments
Testing “in production” sounds edgy but is usually reckless. Instead, build or adopt systems that replicate your production stack—without real users involved. This approach uncovers environment-specific issues in a safe, controlled space.

Automate everything
Quick iteration demands automated pipelines. Continuous Integration/Continuous Deployment (CI/CD) is a must. The less manual work involved, the more you can focus on building cool stuff while your pipeline handles deployments, checks, and tests.

QA (from the live session)

Q: How does Upsun handle database cloning and anonymization?
A: You have flexible options. You can copy the entire database as-is or sanitize specific data fields. You also control which branches get full or anonymized data. This lets you protect PII while still testing against realistic datasets.

Q: We have multiple developers with different features in progress. Can each one spin up their own environment?
A: Absolutely. Each developer can work in their own “clone” of production, ensuring they’re not stepping on each other’s toes. Once their work is validated, they merge into the main branch, and everyone’s environment can be updated accordingly.

Q: Can we control access to certain branches or environments for compliance reasons?
A: Yes. Upsun integrates with common authentication and authorization flows. You can grant or restrict access to particular branches, anonymize data selectively, and ensure only the right people see sensitive information.

Useful links

Discord
© 2025 Platform.sh. All rights reserved.