Join us for Swarmia Circle, a half-day virtual event for engineering leaders on March 27 →
Fast, good, cheap: With automated testing, you can pick all three
Rebecca Murphey, Field CTO · Feb 24, 2025

IBM made a fascinating discovery in the 1970s: products with the lowest defect counts consistently had the shortest development schedules. This finding suggested something transformative: investing in quality could actually accelerate development.

A persistent myth in software development holds that we must choose between speed and quality if we want to control costs. This thinking, rooted in the project management Iron Triangle concept that originated in the 1950s, suggests we can optimize for fast, good, or cheap — but never all three.

Modern software development tells a different story, particularly when we embrace quality automation.

The case for automated QA

Manual testing requires significant time and often produces inconsistent results. Automated tests, by contrast, run in seconds or minutes, catching issues immediately and providing instant feedback. This rapid feedback loop means developers can make changes confidently, knowing they’ll discover any unintended consequences before code reaches production.

The impact of automation extends far beyond testing. Automated continuous integration catches integration issues as soon as they occur. Automated deployment processes eliminate error-prone manual steps and facilitate easy rollbacks. Static analysis tools catch potential issues before they manifest as bugs. Each of these automation investments creates a compounding effect: faster development cycles and higher quality output.

Consider a team without these automated guardrails. Every change requires manual testing. Deployments involve following detailed checklists. Code reviews focus on catching basic issues that tools could flag automatically. This manual approach slows down development and introduces more opportunities for human error.

In contrast, a team that has invested in automation can focus on higher-value work. Rather than spending time on repetitive testing tasks, developers can concentrate on designing and implementing solutions that deliver customer value. Rather than carefully following deployment checklists, they can trust their automated processes. Rather than catching basic issues in code review, they can focus on design and maintainability.

The result is a virtuous cycle. Automation catches issues quickly, reducing the time spent debugging in production. This gives teams more time to improve their automated processes further. Better processes lead to higher quality code, which is easier to maintain and enhance. The system becomes more reliable, creating a foundation of trust that enables faster iteration and innovation.

Getting buy-in

When you have leaders who value manual testing, frame the conversation around business metric. Manual testing may feel safer because it involves human judgment, but it introduces significant business costs: slower release cycles, inconsistent results, and increased risk of human error. These costs compound over time as the application grows more complex.

Numbers tell a compelling story here. Track metrics like time spent on manual testing, bugs that slip through to production despite manual testing, delay between code completion and deployment, and time to recover from a broken deployment. Then estimate how automation could improve these metrics. For instance, if your manual test cycle takes two days but automated tests could run in 15 minutes, that’s a dramatic improvement in time-to-market for new features — and an improvement that provides value for years going forward.

A pilot project can demonstrate these benefits concretely. Choose a contained piece of functionality, implement automated tests for it, and measure the results. Show how automated tests catch regressions that manual testing might miss, especially in areas of the application not directly related to the change being tested. Document cases where automated tests catch issues early in development, saving the cost and reputation damage of fixing bugs in production.

When discussing automation with leadership, emphasize how it enhances rather than replaces human judgment. Manual testers can shift their focus to exploratory testing and user experience evaluation — areas where human insight truly adds value. Automated testing handles the repetitive verification of known functionality, freeing up human testers to find the kinds of issues that automation might miss.

The transition doesn’t have to happen all at once. Start with automating the most repetitive and time-consuming tests, then gradually expand coverage as the benefits become clear. This incremental approach allows the organization to learn and adjust while building confidence in automation. Success with small initiatives paves the way for broader adoption of automated quality practices.

The real cost of manual testing isn’t the time spent executing tests: it’s the opportunity cost of delayed releases, the technical debt that accumulates when testing is too slow to be thorough, and the competitive advantage lost to organizations that can deploy more quickly and confidently. By focusing on these business impacts, you can build a compelling case for investing in test automation.

The evolving role of QA teams

For quality assurance professionals, the shift toward automation represents an opportunity. Automation elevates the QA role from routine verification to higher-value activities that require human insight and strategic thinking. Modern QA professionals are increasingly becoming automation architects, designing comprehensive testing strategies that combine automated checks with skilled exploratory testing.

The most successful QA engineers bring a developer’s mindset to testing, writing code to verify code. They build robust test frameworks, develop testing tools, and create infrastructure that helps entire engineering organizations move faster and write better tests. Their expertise helps teams think critically about what to automate and how to structure tests for maximum effectiveness. They ensure that automated tests remain reliable and maintainable, preventing the automated test suite itself from becoming a burden.

QA professionals who embrace automation often find themselves working on increasingly complex technical challenges. They may move into development roles, specialize in performance testing or security testing, or take on quality architect positions where they shape testing strategy across multiple teams. Their deep understanding of quality processes and user perspectives remains invaluable, even as the tools they use to ensure quality evolve.

Manual testing skills remain relevant but are applied more strategically — for instance, in exploratory testing to uncover edge cases that automated tests might miss, or in user acceptance testing where human judgment is essential.

Stop putting it off

The initial investment in automation can seem daunting. While you’ll eventually want both automated deployments and comprehensive testing, you can start making progress on either front today. Here’s an incremental approach with specific steps:

  1. Start writing basic tests immediately:
    • Write unit tests for individual functions and classes using frameworks like Jest or PyTest
    • Create simple integration tests that verify core business flows (e.g., user login, main transaction paths)
    • Add test scripts to your package.json or equivalent build file
    • Set up a pre-commit hook to run tests locally using Husky or similar tools
  2. In parallel, document and improve deployments:
    • Create a build script that compiles/bundles your application (e.g., using Webpack, Vite, or your framework’s tools)
    • Write shell scripts for common deployment tasks like database migrations
    • Store configuration in environment variables with a clear process for managing them across environments
    • Document the complete deployment process in a runbook, including rollback steps
  3. Create more consistent environments:
    • Define dependencies in package.json, requirements.txt, or equivalent
    • Use Docker to containerize your application and its dependencies
    • Create a docker-compose file for local development that includes databases and other services
    • Store environment-specific configuration in version control (with secrets properly managed)
  4. Enhance your testing approach:
    • Add end-to-end tests using tools like Cypress or Playwright for critical user journeys
    • Configure GitHub Actions or similar CI tool to run tests on every pull request
    • Set up code coverage reporting and gradually increase coverage targets
    • Add performance tests for key endpoints using k6 or similar tools
  5. Improve deployment automation:
    • Create deployment scripts using tools appropriate for your stack (e.g., Ansible, Terraform)
    • Set up automatic database backups before deployments
    • Add health checks to verify successful deployments
    • Implement feature flags for safer deployments using tools like LaunchDarkly
  6. Build momentum through small wins:
    • Start with a single service or component if working in a larger system
    • Measure and share metrics like deployment frequency and time saved
    • Document common issues and their solutions in a team wiki
    • Hold regular retrospectives to identify next automation opportunities

While automated deployments make testing more effective by ensuring consistency between environments, don’t let imperfect deployment processes stop you from writing tests. Many teams successfully maintain valuable test suites even with partially manual deployments. Start somewhere and continuously improve.

It’s worth it

Successful software companies large and small have proven that automation-driven development practices enable them to maintain high quality while deploying whenever they want, tens or hundreds or thousands of times per day. This success has inspired a generation of tools and practices that make these capabilities more accessible than ever to teams of all sizes.

The next time you kick the automated testing can down the road, or someone suggests manual testing is the safer path, remember: in modern software development, bug prevention is just one benefit of automated quality assurance. Automation also improves delivery speed through increased reliability and confidence. When you invest in the tools and practices that help your engineers build with consistency and trust, you create the conditions for sustainable, rapid development.

Understand how your automation efforts are payig off
Swarmia gives you real-time visibility into your engineering organization — inlcuding the effectiveness of your automated testing setup.
Book a demo
Rebecca Murphey
Rebecca Murphey helps Swarmia customers navigate people, process, and technology challenges in pursuit of building an effective engineering organization.

Subscribe to our newsletter
Get the latest product updates and #goodreads delivered to your inbox once a month.