Flaky Test Quarantine: Owners, Expiry, and Nonblocking CI Results
A confirmed flaky test can block unrelated changes without providing a dependable release signal. Removing that obstruction is reasonable only if someone still sees…
A regression run fails halfway through checkout. The team can investigate the application, but first it needs to know whether the same build is still deployed, the payment dependency is in the expected mode, and another suite has reset the shared database. Without that context, a failure is harder to reproduce and a successful rerun may say little about the original problem.
Test environment management includes maintaining that context before execution starts. Environment readiness is a time-bound decision: this environment is suitable for this test scope under these conditions. It does not establish that the application works correctly or that the release can ship.
Begin by naming the environment, endpoint, planned test scope and execution window. Assign a person to each check below, even when several responsibilities belong to the same engineer. Capture the observation time and evidence location, then record an outcome and a next action. An unchecked assumption should remain visible rather than become an informal approval.
The deployment owner should compare the intended release artifact with the application that is serving the selected endpoint. A green build confirms something about the build pipeline; it does not establish which artifact reached the test environment. A deployment manifest also describes intent unless it is reconciled with observed runtime state.
For containerized applications, use the image digest where available. Kubernetes documentation distinguishes mutable tags from fixed digests: a tag can be moved to another image, while a digest identifies particular image content. During a rollout, verify the relevant instances rather than relying on one response from a load-balanced endpoint. Record the identities of dependent application components when their versions affect the planned scenarios.
Keep a timestamped comparison containing the environment identity, intended artifact, observed artifact and supporting deployment or runtime record. The outcome is matching, mismatched or unresolved. If a mismatch or incomplete rollout affects the test scope, block that scope and send the discrepancy to the deployment owner. Resume only after the owner reconciles the deployment and supplies fresh evidence. A familiar release label is not a substitute for the comparison.
The configuration owner needs to confirm the settings the running application uses, not merely the latest configuration file. Configuration drift can exist between the repository, the deployed configuration object and the process that consumes it.
Kubernetes ConfigMaps illustrate the problem. Values consumed as environment variables do not update automatically and require a Pod restart. Mounted ConfigMap updates are eventual, and a subPath mount does not receive those updates. An approved change to stored configuration therefore does not prove that every running instance has adopted it. Follow the application's documented reload or deployment process rather than assuming all settings propagate alike.
Feature flags add another dependency: evaluation context. A dashboard switch can produce different results for different subjects or attributes. OpenFeature's specification describes contextual targeting, but the supported context mechanisms depend on the SDK and provider. Check the intended test account or tenant, relevant targeting attributes and the evaluated result through an approved observation route.
Record the observation time, configuration revision, selected nonsecret expected and observed values, and relevant flag context. The outcome should say whether the effective state matches the scenarios. If it does not, have the owner resolve propagation, reload or targeting differences before repeating the check. Avoid whole-environment exports and screenshots containing credentials; references and narrowly selected nonsecret observations are enough.
The service owner should identify which dependencies the planned tests require and what each health signal demonstrates. Include the intended environment, tenant and mode. A reachable sandbox endpoint is not useful evidence if the application is configured to call a different destination.
Startup, liveness and readiness probes answer different questions. In Kubernetes, startup probes check whether the application has started, liveness probes determine when a container should be restarted, and readiness probes determine traffic eligibility. Their value depends on the diagnostic implementation. An open TCP port or successful HTTP health response does not independently establish that a business operation, authentication path or data contract works.
For the environment health checks, retain timestamped service status and approved caller-path evidence relevant to the run. State whether a dependency is real, simulated or deliberately unavailable for a negative test. A simulation may support the intended scenario, but it should not be reported as validation of the real integration.
The outcome is usable for the stated path, blocked, or usable only within an explicitly limited scope. Route an unavailable required dependency to its owner, agree a justified scope change, or wait for recovery. Do not repeatedly launch the full suite against a known outage, and do not use a healthy readiness signal to pre-mark functional tests as passed.
The database owner should reconcile the application's expected schema with the actual database and schema selected for the run. Migration files in the repository show what could be applied, not what has been applied to that target.
Where Flyway is used, its Info operation reports migration details and status for a configured environment. The useful evidence is the target identity together with migration states and applied-version information, not a screenshot that omits which database was inspected. Other migration systems need an equivalent target-specific record.
Capture the observation time, database and schema identifiers, expected version or compatibility requirement, and observed migration status. Confirm that the evidence covers the relevant history rather than a filtered view that hides a pending change. Migration history alone cannot rule out manual schema changes or establish that test fixtures remain compatible, so record those unresolved conditions separately when they affect execution.
The outcome is compatible, incompatible or not yet established. If the required migration is missing or its state is unexpected, block affected scenarios and ask the database owner to resolve it through the approved change process. Starting tests is not permission to apply migrations or reset shared data. Recheck the target after remediation instead of treating the owner's intention to fix it as completion evidence.
The access owner should verify that the named tester or workload identity has the permissions required for the selected scenarios, without unintended access outside the test boundary. Successful sign-in alone does not establish either condition.
Check the intended account, tenant, role and credential-validity window through approved access records or a bounded verification process. Negative authorization tests need the specified restricted roles; replacing them with an administrator account changes what the test can establish. For service accounts and other non-human identities, keep production and nonproduction identities separate and verify that nonproduction permissions do not extend into production resources.
Least privilege requires attention to effective permissions. Kubernetes guidance notes that creating workloads can provide access to other resources in the namespace, and that listing Secrets can expose their contents. A permission described as convenient or read-oriented may therefore be broader than the run needs. Use the platform owner's access-review process rather than collecting credentials as proof.
Retain a timestamped principal-and-scope record, the required permissions and the reviewed outcome, never passwords, tokens or sensitive data. The outcome is sufficient and bounded, insufficient, or excessively broad. For either failure, block the affected work and request an approved access correction. Do not bypass the problem with shared production credentials or temporary administrator access.
The environment owner should confirm who can use or change the environment during the execution window. A reservation needs an acknowledged owner and a usable change boundary, not just an entry in a calendar that other teams may not consult.
Identify overlapping deployments, maintenance, database resets and other suites. Specify which changes are prohibited during the run, who can approve an exception, and who will release the reservation afterward. Include shared resources outside the application deployment, such as a database, message queue or external sandbox account. Separate application instances can still interfere through those dependencies.
A Kubernetes namespace is a logical management boundary, not proof of complete isolation. Access controls, networking configuration and other security measures are still needed. Resource quotas can limit some forms of sharing, but they do not eliminate every contention risk. Record the actual boundaries and their limits rather than using “isolated” as an unqualified label.
Keep timestamped reservation acknowledgment, the environment and shared-resource identities, the agreed window and any known overlap. The outcome is confirmed with stated limits, conflicting or unavailable. Resolve conflicts with the environment owner, reschedule, or select an approved alternative before starting. If a deployment or reset happens during execution, identify the affected results and revalidate the relevant checks before continuing.
The platform owner should judge available capacity against the test run's expected concurrency and resource needs. An environment may be reachable while a shared database pool is exhausted or another workload is consuming its execution budget.
Use a recent observation window rather than one unexplained utilization screenshot. Review relevant CPU and memory usage, resource requests and limits, restarts, throttling signals, queue depth and service latency where those measurements are available. Kubernetes schedules using resource requests; low instantaneous usage does not by itself prove that another workload can be scheduled. CPU limits can throttle containers, while memory-limit enforcement can involve reactive out-of-memory termination.
Agree the readiness criteria with the teams responsible for the application and platform. There is no universal CPU percentage that makes every environment ready. A lightweight functional run and a workload-sensitive performance test need different capacity assumptions and different controls over competing activity.
Record the measurement time and window, monitoring source, planned workload, competing usage and the team's acceptance criteria. The outcome is adequate for that run, inadequate or unknown. If capacity is insufficient, obtain approval to reduce concurrency, reschedule, or remediate capacity, then capture new evidence. Passing this check is permission to attempt the planned work, not a performance certification or authorization to generate additional load.
Keep the seven outcomes together in a run-specific readiness record. A compact record is more useful than an unqualified “environment ready” message because another engineer can see what was checked and what changed afterward.
Record Field | What to Capture |
|---|---|
Run and Environment | Planned scope, endpoint, environment identity and execution window |
Check Owner | Named responsible person and role for each check |
Evidence and Time | Observation timestamp, evidence location and relevant version or measurement window |
Outcome | Ready for the stated scope, blocked or explicitly limited |
Follow-Up | Corrective action, responsible owner and required recheck |
Start Decision | Decision owner, accepted limitations and conditions requiring revalidation |
Use the record to make one of three decisions:
For a fictional example, consider a checkout release whose deployed artifact matches the candidate build. The database record shows a required migration is still pending, and another team has an overlapping deployment window. The matching build does not override either problem. The database owner must resolve the schema prerequisite, while the environment owner settles the deployment conflict. The QA lead then reviews fresh evidence and decides whether the checkout scenarios can start. If only an independent area proceeds, the record should name that area instead of describing the whole regression run as ready.
Keep this start decision separate from test-case results. For Jira-based teams, Sherlock Test Management provides approved versioned baselines, release-specific test runs and manual Pass, Fail or Blocked recording in its Runner or supported Jira panels. Those capabilities help preserve which cases and baseline version a release run executed. Maintain the environment-readiness record alongside that run context through the team's chosen documentation process; this does not imply automatic environment checks, provisioning or reservation management in Sherlock.
Before execution, ask whether another engineer could reconstruct the environment assumptions from the record. After a deployment, configuration change, schema change or material capacity shift, refresh the affected evidence and make the start or continuation decision again. A readiness record is useful only while its conditions still describe the environment being tested.
A confirmed flaky test can block unrelated changes without providing a dependable release signal. Removing that obstruction is reasonable only if someone still sees…
A green automated test history can help a developer identify a safe-looking change while leaving a QA lead unable to answer a different question:…
A sprint can contain carefully estimated testing work and still overload the only person who can perform it. The missing input may be a…
Create traceable test cases, prepare release-specific test runs, and keep approved coverage current as the product changes.