Jira & Atlassian

Defect Leakage in Jira: Measure Escaped Bugs Without Skewing Rates

Defect Leakage in Jira: Measure Escaped Bugs Without Skewing Rates

A production-bug filter can return the right tickets and still produce the wrong defect leakage rate. If the denominator excludes defects fixed during testing, or a reopened issue is counted as a new escape, the percentage changes without any change in what the team originally discovered.

Measuring defect leakage in Jira starts with an agreement about which defects belong together and when each was first found. Jira supplies records and search filters. The calculation below is a proposed reporting workflow built from those records, not a claim that Jira provides a built-in leakage report.

Table of Contents

Agree on the Cohort and Formula Before Opening a Filter

For this workflow, use release leakage = E ÷ (P + E) × 100. E is the number of unique, confirmed defects in the selected cohort first discovered after its release boundary and before the observation cutoff. P is the matching population first discovered before release. The denominator contains both sets, including eligible defects corrected before shipping.

Here, a cohort means defects attributed to a defined release change set, including its preparation work. Specify the relevant product areas and eligible defect types. For example, include confirmed behavior failures introduced by the checkout changes, whether detected by a developer, tester, production monitor, or customer. Keep unconfirmed reports and change requests separate until triage establishes what they represent.

This convention measures the escaped share of observed defects. It does not estimate all undiscovered defects. A post-to-pre ratio, E ÷ P × 100, is a different calculation. A team measuring escape between test stages must also name that stage boundary and its population. Do not present either variant as interchangeable with release leakage or silently switch formulas between reports.

Fix the Release Boundary and Observation Cutoff

Write down the preparation start, release boundary, observation cutoff, time zone, and reporting snapshot time. For a phased rollout, decide which exposure event constitutes release for this cohort. First exposure and full rollout are different boundaries; choose deliberately and retain the deployment evidence.

Distinguish the discovery cutoff from the date the report is assembled. A defect observed before cutoff but entered into Jira later can qualify for a later snapshot if its original observation is evidenced. A defect first found after cutoff belongs in a later view of the same cohort, not automatically in a newer release's numerator. Label restatements and retain the earlier snapshot instead of silently changing history.

Release attribution needs its own evidence. Jira's Fix versions field identifies the version containing the work or fix. A production defect introduced in R7 might be fixed in R7.1. Searching only Fix Version R7 would miss it. Affects versions can identify affected releases, but does not by itself prove the introduced release or discovery date. Record the attribution decision and supporting build, change, or investigation evidence.

Preserve First Discovery in the Jira Record

Agree on a small reporting schema before designing filters. Reuse suitable existing fields where possible. The following are proposed data definitions, not built-in Jira field names or universally available options. Ask the relevant administrator to assess field scope, configuration, and permissions before implementing changes.

Reporting Datum

Proposed Representation

Evidence to Retain

Leakage cohort

Controlled cohort value and attribution state

Change set, affected build, and attribution rationale

First discovery stage

Pre-release, Post-release, or Unknown

Original failed check, incident, or support report

First observed time

Date/time with an agreed time zone

Original observation timestamp, distinct from ticket entry

Canonical defect

Canonical issue identity and triage verdict

Duplicate relationship and confirmation evidence

Severity

Agreed impact classification

Impact rationale and any later reassessment

A current status, assignee, or free-text Environment value does not establish where a bug was first discovered. Environment can describe reproduction conditions rather than discovery. Created records issue creation, which may differ from an earlier support report or imported finding. Atlassian also documents import cases where unmapped or incorrectly formatted dates default to the import date.

Preserve the first-discovery classification when the same defect reopens. A bug first found in testing remains a pre-release discovery under this convention even if failed verification occurs after shipping. Track the later failure separately. If investigation identifies a genuinely different defect, establish a new canonical identity and evidence rather than counting every reopen as a new bug.

Duplicates need the same discipline. Merge their discovery evidence into the canonical investigation without discarding the original reports. The earliest substantiated observation may change the classification; the latest duplicate's environment must not overwrite it. Use a decision-focused defect triage workflow to resolve validity, canonical ownership, and missing evidence before counting. Unknown attribution or stage stays visible with an owner and next review, rather than disappearing to improve the rate.

Build a Complete Read-Only Counting View

Treat production defect reporting as a reproducible selection-and-reconciliation task. The following procedure describes work to perform in an authorized Jira environment; it is not an account of filters or exports executed here.

  1. Identify the relevant projects, defect types, field definitions, and access scope. Start broadly enough to include records with missing cohort or discovery tags. A query containing only the completed cohort tag cannot reveal bugs nobody classified.
  2. Review candidate records against the cohort policy. Retain included identities, excluded identities with reasons, and unresolved cases. Check available issue History and original observations where current fields are insufficient. History shows recorded edits and transitions, not observations that were never recorded.
  3. Derive P and E from that same reconciled population. Apply identical confirmation, attribution, uniqueness, and severity rules to both sets. Use the first-observed time and stage, not the ticket's current status or resolution date.
  4. Obtain the complete approved read-only data view. Check all result pages, required fields, and any extraction limits. If an approved process uses the current Jira Cloud enhanced-search API, follow its pagination contract rather than assuming the first response is complete. Reconcile recent updates before freezing the snapshot.
  5. Deduplicate by canonical defect identity and inspect unmatched records. Joining a defect to several support reports, tests, or incidents must not create additional defects. Retain the selection definitions, cutoff, snapshot time, excluded and unresolved lists, and final counted identities for review.

For a site with a work type named Bug, the documented native clause type = Bug can help begin the candidate search. It supplies neither release attribution nor discovery classification. Add only verified local field names and supported operators: select fields, text fields, and date fields support different operations. Do not copy a custom-field query from another Jira site and assume its configuration exists in yours.

A complete result is still permission-scoped. Browse access and issue-level security can hide records, so an empty search does not prove there are no defects. State visibility limitations and seek an authorized reconciliation rather than treating hidden records as zero. If the team uses an approved export, follow its data-handling and spreadsheet-security controls; record counts are trustworthy only after population, field, pagination, and duplicate checks agree.

Work Through a Fictional Release Ledger

Consider the following entirely fictional Checkout R7 change set, including defects corrected during preparation. All checks, incidents, reports, and identifiers below are invented explanatory evidence, not customer records or Jira exports.

Preparation begins March 1, 2026. Release is April 1 at 00:00 UTC. The discovery cutoff is May 1 at 00:00 UTC, exclusive, giving a 30-day post-release observation window. The snapshot is assembled May 5 at 00:00 UTC. Every listed discovery date refers to an observation at 10:00 UTC; missing evidence is explicitly marked unknown. Major and Minor are this fictional team's severity categories.

Record

First Discovery

Evidence and Attribution

Severity

Counting Decision

F01

March 10, Pre-release

RC-10 confirms wrong refund amount in R7 candidate

Major

P

F02

March 12, Pre-release

RC-12 confirms unauthorized refund in R7 candidate

Major

P

F03

March 15, Pre-release

RC-15 confirms R7 rounding defect; same bug reopens April 8

Minor

P, once

F04

March 18, Pre-release

RC-18 confirms R7 receipt text mismatch

Minor

P

F05

March 22, Pre-release

RC-22 confirms R7 filter behavior mismatch

Minor

P

F06

March 29, Pre-release

RC-29 confirms R7 display-format defect

Minor

P

F07

April 2, Post-release

IN-7 confirms R7 retry defect; fix allocated to R7.1

Major

E

F08

April 12, Post-release

M-8 confirms R7 permission failure

Major

E

F09

April 28, Post-release

SR-9 retains original observation; ticket entered May 3

Minor

E

F10

April 4, Post-release

SR-10 repeats IN-7; canonical defect is F07

Major

Duplicate, no new count

F11

April 6, Post-release

IN-11 attributes defect to R6, not R7

Minor

Other cohort

F12

April 9, Post-release

SR-12 behavior report awaits confirmation

Minor

Pending confirmation

F13

Unknown

IM-13 confirms R7 bug but lacks first-discovery evidence

Major

Unresolved stage/time

F14

April 15, Post-release

IN-14 confirms defect; release attribution unresolved

Major

Unresolved attribution

F15

May 2, Post-release

M-15 confirms later R7 discovery after cutoff

Minor

Later follow-up view

The counted sets are F01 through F06 for P and F07 through F09 for E. Thus P = 6, E = 3, and the denominator is 9. The declared defect leakage formula gives 3 ÷ 9 × 100 = 33.3%, rounded to one decimal place. These calculations were checked with Python against the complete fictional record table, including disjoint-set and disposition-total checks.

Using E ÷ P would produce 50%, a different post-to-pre ratio. Using only production defects as the denominator would produce 100%, which does not answer what share of all qualifying discoveries escaped. Neither number can replace the declared 33.3% share.

F03 remains one pre-release discovery after reopening. F09 qualifies in the May 5 snapshot because its original April 28 observation precedes cutoff, despite later ticket entry. F15 stays attributed to R7 but outside this fixed-window calculation. Of the remaining records, F10 is a duplicate, F11 belongs elsewhere, F12 is unconfirmed, and F13 and F14 are two known unresolved records. Report those dispositions beside the rate. The percentage describes the classified set, not proof that the cohort inventory is complete.

Segment Both Sides of the Fraction

Severity segmentation must apply the same classification to numerator and denominator. Do not divide all production defects by only high-severity pre-release defects, or mix severity-weighted points with ordinary defect counts.

Severity

P

E

Denominator

Escaped Share

Major

2

2

4

50%

Minor

4

1

5

20%

The segment counts reconcile to the overall population. Keep the underlying counts visible because these are small groups. If P + E is zero, the rate is not calculable. If E is zero while P is positive, report no observed escapes within that window; it is not a guarantee of quality.

Use the Result to Choose the Next Investigation

A useful report presents the cohort definition, P, E, cutoff, snapshot time, severity breakdown, and unresolved or inaccessible evidence together. Keep counting conventions stable before interpreting trends. Changes in observation duration, reporting habits, rollout exposure, or record completeness can change the result without proving that testing improved or deteriorated.

Do not use a universal target to rank QA teams. This defect-based measure is not DORA change failure rate, and canonical defect counts are not root-cause counts. Several defects may share a cause; investigating that relationship is separate work. The ratio can identify questions to investigate, but cannot establish causality or release safety.

For the fictional R7 review, inspect the retry conditions behind F07, assign evidence recovery for F13, and resolve F14's release attribution. Retain the original failure and add a regression check only after understanding the missing assertion or condition. Record the review decision and verify the chosen correction rather than assuming a lower future percentage proves it worked.

When manual release testing is managed in Sherlock Test Management, its described linked-defect workflow can preserve the run, executed case, requirement, and source context behind a failed check. That context can support the investigation and a human-reviewed baseline update. It does not establish automated leakage calculation, a complete production-defect inventory, or a cross-system reporting integration; the cohort reconciliation still needs an accountable owner.

Start with one release and ask another reviewer to reproduce both counted sets from the retained evidence. Resolve or explicitly disclose the gaps before putting the percentage on a dashboard. A reproducible denominator is more useful than a precise-looking rate nobody can reconstruct.

Related

More on Jira & Atlassian

Create traceable test cases, prepare release-specific test runs, and keep approved coverage current as the product changes.