Quality Debt

Purpose

Quality Debt metric shows an approximate estimated effort (in man-hours) for a team to fix all open defects. For ease of effort prioritization - it's sliced by Priorities.  

How metric helps

Quality Debt value helps to understand how much time is required to invest into a system functional stability. If bugs are ignored, the system shows unpredictable behavior, experiences errors, crashes. So, while it is hardly possible to eliminate the quality debt on a project completely, it still makes sense to keep an eye on its amount - to prevent a quality degradation e.g. upon an unplanned release.

Some ways to prevent defects:

  • Have a dedicated Testing capacity in a project team (manual, automated, or mix, or both);

  • Apply test-driven development principles;

  • Introduce continuous integration approach;

  • Do not neglect documentation (specifications, test cases).

Required prerequisites

As this metric uses historical efforts on bug fixing to forecast future efforts, there are several required bullets for it to work properly:

  1. There are some fixed defects on a project, otherwise it's not possible to determine historical efforts on a bug fixing (i.e. from "nothing")

  2. A team logs spent man-hours for fixed defects on a project, otherwise it's not possible to determine historical efforts on a bug fixing

  3. There are at least some open defects on a project, otherwise it's hardly possible to apply calculated historical averages to "nothing".

How metric works

Chart overview

Chart shows efforts in hours to eliminate defects by priority (colored segments) and a total required effort (a central number). Chart can show efforts for the whole project (by default) or for a particular release - according to the selection in the drop down. Additional info is provided on hover over a segment:

  • Priority

  • Fixed defects

    • Fixed defects number of a selected priority

    • Effort required to fix defects of a selected priority in the past

    • Average effort required to fix a defect of a selected priority in the past

  • Open defects

    • Open defects number with estimates

    • Effort required to fix a defect of a selected priority based on remaining effort

    • Open defects number without estimates

    • Effort required to fix a defect of a selected priority based on the past experience

                        

By click on a colored segment - defects of a particular priority - a pop up appears with the following information obtained from the task tracking system:

  • Defect ID

  • Type

  • Priority

  • Summary

Quality Debt per Release

By default, a chart shows information without a segmentation per release.

In case if a particular release is chosen, it allows viewing a quality debt only for defects assigned into that release.



Calculation 

Total time to eliminate all defects:

QD =  Σ (Ndp1*Trem.d.p1 +  Ndp2*Trem.d.p2+ .. Ndpi*Trem.d.pi) + Σ (Ndp1*Tavg.d.p1 +Ndp2*Tavg.d.p2 + .. +Ndpi*Tavg.d.pi )

To know a percentage of time required to eliminate defects of a particular priority (a colored sector):

QD = ( Σ (Ndp1*Trem.d.p1 +  Ndp2*Trem.d.p1 + .. Ndpi*Trem.d.pi) + Σ (Ndp1*Tavg.d.p1 +Ndp2*Tavg.d.p2 + .. +Ndpi*Tavg.d.pi )) / QD

where

QD - Quality Debt - overall effort required to eliminate defects of all priorities;

Trem. - for a defect with estimated effort: remaining time to fix a defect of a considered priority;

Tavg. - for a defect without estimated effort: average time to fix a defect of a considered priority calculated as:

Tavg. = ΣTlog/Ndef

where

Tlog- logged time for closed defects of this priority till today;

Ndef - number of closed defects of this priority till today. For optimistic view defects with zero efforts are included into the calculation. For a regular Quality Debt zero efforts are not included, this's why it's usually bigger than an optimistic value.

Defects are grouped into releases by 'Fixed release' field.

RAG thresholds: n/a.

Data Source

Data for the metric can be collected from a task tracking system (Jira, TFS, Rally, etc.)