Stop Skipping Tests in Your Pipeline to Save Time

by Arif Ikhsanudin, Backend Developer

The 15 Minutes You're Saving and What They're Actually Costing You

The integration tests take 15 minutes. The pipeline takes 22 minutes total with them. Someone — usually under deadline pressure, often with good intentions — adds -DskipTests to the Maven build or comments out the integration test job in the GitHub Actions workflow. The pipeline drops to 7 minutes. Velocity appears to improve. Deployments go faster.

Six weeks later, a defect ships to production that the integration tests would have caught. The incident takes 4 hours to diagnose and remediate. The RCA notes that the tests were skipped. A decision is made to "re-enable them soon." They stay disabled for another month while the team catches up on the backlog the incident created.

This is not a hypothetical. It is a pattern that plays out in organizations repeatedly, and the mechanism is always the same: skipping tests creates a false sense of safety that makes the eventual defect more costly than the sum of the time saved.

Why People Skip Tests (and Why Those Reasons Sound Reasonable)

"The tests are slow." They are. Slow tests are a real problem. The correct response is to fix the tests — parallelize them, optimize the infrastructure, move slow tests to a non-blocking tier. Skipping them is a response that creates a new problem without solving the original one.

"These tests are flaky anyway." Flaky tests are also a real problem. The correct response is to quarantine them from the blocking suite and fix them. Skipping all tests because some are flaky is a disproportionate response that removes reliable signal along with unreliable signal.

"We're under deadline pressure." This one is the most understandable and the most dangerous. Under deadline pressure, the instinct to remove friction is strong. But tests exist specifically for high-velocity, high-pressure moments — when engineers are moving fast, when changes are large, when review is rushed. Removing the safety net exactly when it's most needed is the worst possible time to skip it.

"I know this change is safe." You know your change is safe. You don't know whether your change interacts unexpectedly with a change someone else merged this morning. CI runs against the integrated codebase, not against your isolated branch. "I know my code is safe" is not equivalent to "the integration is safe."

What Skipping Tests Actually Communicates

When a team normalizes skipping tests, it communicates three things that quietly poison the engineering culture:

First, that tests are overhead rather than value. Tests are the team's collective assertion that the software behaves correctly. Skipping them says those assertions are optional — which undermines the entire premise of investing in tests.

Second, that shipping fast is more important than shipping correctly. This is sometimes true (startups moving fast on low-stakes changes), but it should be an explicit, deliberate decision — not a default that creeps in through deadline pressure.

Third, that the test suite is not trusted. If the team trusted the tests to provide real signal, skipping them would feel riskier. The fact that skipping feels acceptable often reveals an underlying lack of confidence in test quality — which should be addressed by improving test quality, not by making skipping the norm.

The Right Alternatives

If tests are too slow to run on every commit, tier them — don't skip them:

# Run fast tests on every push
on:
  push:
    branches: ['**']

jobs:
  fast-tests:
    steps:
      - run: ./gradlew test -P testGroups=unit    # 3 minutes

---

# Run full suite on PR only
on:
  pull_request:
    branches: [main]

jobs:
  full-suite:
    steps:
      - run: ./gradlew test integrationTest       # 18 minutes

If specific tests are reliably flaky, quarantine them explicitly:

@Tag("quarantined")  // Does not block CI; tracked in separate report
@Test
void thisTestIsFlaky() { ... }

If you're under deadline pressure and genuinely need to ship now: document that you're shipping with tests skipped, create a ticket to re-enable them, and treat the deployment as higher-risk — which means more monitoring, a staged rollout, and a clear rollback plan. Make the risk explicit rather than hiding it behind a clean pipeline.

The Line You Cannot Cross

There is one version of test skipping that is categorically unacceptable: skipping tests before a production deployment and not telling anyone. That is not a speed optimization. It is a misrepresentation of code quality that other people will rely on when making deployment decisions.

If you're going to skip tests, be explicit about it, document it, and escalate the risk to whoever makes the deployment decision. Own the choice rather than hiding it inside a YAML comment.

The 15 minutes you save is never worth the incident you enable.

Scale Your Backend - Need an Experienced Backend Developer?

We provide backend engineers who join your team as contractors to help build, improve, and scale your backend systems.

We focus on clean backend design, clear documentation, and systems that remain reliable as products grow. Our goal is to strengthen your team and deliver backend systems that are easy to operate and maintain.

We work from our own development environments and support teams across US, EU, and APAC timezones. Our workflow emphasizes documentation and asynchronous collaboration to keep development efficient and focused.

  • Production Backend Experience. Experience building and maintaining backend systems, APIs, and databases used in production.
  • Scalable Architecture. Design backend systems that stay reliable as your product and traffic grow.
  • Contractor Friendly. Flexible engagement for short projects, long-term support, or extra help during releases.
  • Focus on Backend Reliability. Improve API performance, database stability, and overall backend reliability.
  • Documentation-Driven Development. Development guided by clear documentation so teams stay aligned and work efficiently.
  • Domain-Driven Design. Design backend systems around real business processes and product needs.

Tell us about your project

Our offices

  • Copenhagen
    1 Carlsberg Gate
    1260, København, Denmark
  • Magelang
    12 Jalan Bligo
    56485, Magelang, Indonesia

More articles

Git Reflog: The Safety Net Most Developers Don't Know They Have

Reflog is a local log of every position HEAD has ever been in. It is the reason that almost nothing in Git is permanently irreversible — and most developers have never opened it.

Read more

Integration Tests in CI/CD: Where to Put Them Without Slowing Everything Down

Integration tests are the most valuable tests for catching real defects, and the most commonly sacrificed for pipeline speed. The right answer is neither running them on every commit nor deleting them — it's placing them correctly in the pipeline architecture.

Read more

Your Microservices Are Running. But Are They Healthy?

A running process is not a healthy service. Kubernetes liveness and readiness probes, combined with dependency-aware health checks, are the difference between knowing your service is operational and finding out it is broken from a user complaint.

Read more

Planning Your First Year as a Solo Contractor

Starting your own contracting journey can feel exciting and terrifying at the same time. Here’s a roadmap to navigate your first year without losing your sanity—or your savings.

Read more