【度量案例分享】研發效能分析¶
以下公式均在新版度量能力下撰寫,新版度量使用請參考 ,更多度量案例指路 。
研發交付¶
需求建立數¶
指標說明:統計週期內,每月提出的需求數量。
- 維度:建立時間(月維度)

- 指標:工作項 id(計數)

圖表配置解析
- 將全部需求按建立時間分佈,以月為展示週期,計算每個月的的需求數量,工作項 id為需求的唯一標識,此處我們推薦使用工作項ID計數。

需求交付數¶
指標說明:統計週期內,每月完成的需求數量。
- 維度:
TIMESERIES(DATE("2023-01-01"),DATE("2023-12-31"),"month")

- 指標:
countIf({工作項id},toStartOfMonth({完成日期})== toStartOfMonth(timelineCursor())) - 可複製指標:
countIf(${工作項id},toStartOfMonth(${完成日期})== toStartOfMonth(timelineCursor()))

圖表配置解析
- timelineCursor():取維度 timeseries 的切片時間;
- toStartOfMonth():取日期所在月的第一天;
- 即本指標含義為,如果需求的完成時間所在月的第一天==維度 timeseries 所對應切片時間的所在月第一天,即把需求在該維度上計數。

研發質量¶
研發交付質量¶
指標說明:統計週期內,新需求引發的 bug 數量。
- 維度:提出時間(月維度)

- 指標:
countIf({工作項id},BUG歸因==新需求引入 - 可複製指標:
countIf(${工作項id},${BUG歸因}==$option{新需求引入})

圖表配置解析
- 將因需求原因引入的 bug,按 bug 的建立時間,以月為維度進行分佈。

嚴重 BUG 數量¶
指標說明:統計週期內,P1、P2 級別 bug 數量。
- 維度:提出時間(月維度)
- 指標:
countIf({工作項id},優先順序==P1||優先順序==P2) - 可複製指標:
countIf(${工作項id},${優先順序}==$option{P1}||${優先順序}==$option{P2})
圖表配置解析
- 將 P1、P2 的 bug,按 bug 的提出時間,以月為維度進行分佈。

嚴重 BUG 有效解決時長¶
指標說明:統計週期內,P0 級別 bug,從提交到解決(最後一次進入 Resolved 狀態的時間)的平均時間。
- 維度:建立時間(月維度)
- 指標:
(avgIf({所有狀態}.{狀態末次開始時間},{所有狀態}.{狀態名稱}=="RESOLVED"&&{優先順序}==P0&&({狀態}==RESOLVED||{狀態}==CLOSED))-avgIf({所有狀態}.{狀態首次開始時間},{所有狀態}.{狀態名稱}=="OPEN"&&{優先順序}==P0&&({狀態}==RESOLVED||{狀態}==CLOSED)))/86400 - 可複製指標:
(avgIf(${所有狀態}.${狀態末次開始時間},${所有狀態}.${狀態名稱}=="RESOLVED"&&${優先順序}==$option{P0}&&(${狀態}==$option{RESOLVED}||${狀態}==$option{CLOSED}))-avgIf(${建立時間},${優先順序}==$option{P0}&&(${狀態}==$option{RESOLVED}||${狀態}==$option{CLOSED})))/86400

圖表配置解析
- 如果 bug 當前狀態是 REOPENED 或 CLOSED,計算該 bug 末次進入 RESOLVED 狀態的時間,並減去 bug 的提出時間,得出該 bug 的修復耗時;
- 得到的結果為秒級別,如需精確到天,需除以 86400;
- 針對多個 bug 進行計算,用 avg 取平均值。

研發效率¶
需求平均交付週期¶
指標說明:從需求提出到完成上線的時間,反映業務、產品、研發對需求的響應速度,體現研發交付能力。
- 維度:完成日期(月維度)

- 指標:
avgIf({完成日期}-{建立時間},isNull({完成日期})==false)/86400 - 可複製指標:
avgIf(${完成日期}-${建立時間},isNull(${完成日期})==false)/86400

圖表配置解析
- 如果需求的完成時間不為空,計算完成時間-提出時間的平均值;
- 得到的結果是秒級別,如需精確到天,可除以 86400。

需求各階段交付週期¶
指標說明:需求在每個階段的交付時間,例如分析階段、研發排期、研發階段、測試階段、釋出階段。
- 維度:
{狀態名稱} - 指標:
avgIf({所有狀態}.{狀態累計進行時間},isnull({所有狀態}.{狀態末次結束時間})==false)/86400 - 可複製指標:
avgIf(${所有狀態}.${狀態累計進行時間},isNull(${所有狀態}.${狀態末次結束時間})==false)/86400
圖表配置解析
- 以狀態名稱為維度,針對單個需求,如維度對應的狀態已完成,計算該需求在此狀態的累計進行時間;
- 針對多個需求,用 avg 計算平均值;
- 得到的結果是秒級別,如需精確到天,需除以 86400。

交付節奏偏差¶
指標說明:需求的整體交付時間,以不同維度統計時,可以根據交付週期的標準差,判斷團隊交付節奏穩定性。如果偏差很大,判斷可能存在潛在異常。 維度:優先順序 指標:
- 平均交付週期:
AVGIF(${完成日期}-${建立時間},ISNULL(${完成日期})==false)/86400 - 交付週期標準差:
SQRT(SUM(POW(AVGIF(${完成日期}-${建立時間},ISNULL(${完成日期})==false)/86400,2))/COUNT(${工作項id})-POW(AVG(AVGIF(${完成日期}-${建立時間},ISNULL(${完成日期})==false)/86400),2)) - 交付週期方差:
SUM(POW(AVGIF(${完成日期}-${建立時間},ISNULL(${完成日期})==false)/86400,2))/COUNT(${工作項id})-POW(AVG(AVGIF(${完成日期}-${建立時間},ISNULL(${完成日期})==false)/86400),2)
圖表配置解析
- 方差公式:
- POW 函式用於數值的求冪,POW(平均交付週期 , 2)代表平均交付週期的平方值;
- 交付週期的平方值相加,先除以工作項數量,再減去交付週期平均值的平方值,即可得到方差,示意公式:SUM(POW(平均交付週期 , 2))-POW ( AVG ( 平均交付週期 ), 2)
- 標準差公式:
- SQRT 函式用於開根號,返回該數值的平方根;
- 對方差公式開根號即可得到交付週期標準差。

週期內交付建立比¶
指標說明:統計週期內已交付的需求數/建立需求數,綜合評估需求交付情況和壓力。
- 維度:
timeseries(date("2023-01-01"), date("2023-12-31"), "month")

- 指標:
countIf({工作項id},toStartOfMonth({完成日期})== toStartOfMonth(timelineCursor()))/countIf({工作項id},toStartOfMonth({提出時間})== toStartOfMonth(timelineCursor()))(百分比) - 可複製指標:
countIf(${工作項id},toStartOfMonth(${完成日期})== toStartOfMonth(timelineCursor()))/countIf(${工作項id},toStartOfMonth(${提出時間})== toStartOfMonth(timelineCursor()))(百分比)

圖表配置解析
- timelineCursor():取維度 timeseries 的切片時間;
- toStartOfMonth():取日期所在月的第一天;
- 本月度建立的需求數量:countIf({工作項 id},toStartOfMonth({提出時間})== toStartOfMonth(timelineCursor()))
- 本月度完成的需求數量:countIf({工作項 id},toStartOfMonth({完成時間})== toStartOfMonth(timelineCursor()))

複雜需求交付佔比¶
指標說明:統計週期內,交付的需求,複雜需求佔比。
- 維度:完成日期(月維度)
- 指標:
countIf({工作項id},{需求複雜度分級}==LV.5(複雜))/count({工作項id})(百分比) - 可複製指標:
countIf(${工作項id},${需求複雜度分級}==$option{LV.5(複雜)})/count(${工作項id})(百分比)
圖表配置解析
- 以需求完成時間為維度,計算每月完成的需求中,複雜需求的數量;
- 除以每月完成的需求總數,將得到的結果輸出為百分比。

人均解決 BUG 數¶
指標說明:統計週期內,平均每個經辦人解決的缺陷數。
- 維度:經辦人
- 指標:
countIf({工作項id},{狀態}==CLOSED)或countIf({工作項id},{是否完成}==true) - 可複製指標:
countIf(${工作項id},${狀態}==$option{CLOSED})或countIf(${工作項id},${是否完成}==true)
圖表配置解析
- 以經辦人為維度,計算每個經辦人負責的 bug 中已解決的 bug 的數量;
- 可以用 bug 的當前狀態判斷 bug 是否已解決;
- 也可以用是否完成(如流轉到所配置的完成狀態,是否完成==是)來判斷 bug 是否已解決。

BUG 重開率¶
指標說明:統計週期時間內,已解決的 bug,被重開(reopen)過的比率。
- 維度:完成時間(月維度)
- 指標:
countdistinct({工作項id},sumIf({所有狀態}.{狀態進入次數},{所有狀態}.{狀態名稱}=="REOPENED")>0)/countdistinct({工作項id})(百分比) - 可複製指標:
countIf(${工作項id},sumIf(${所有狀態}.${狀態進入次數},${所有狀態}.${狀態名稱}=="REOPENED")>0)/count(${工作項id})(百分比)
圖表配置解析
- 以完成日期為維度,檢視不同月份解決的 bug 中,reopen 過的 bug 佔比;
- bug 流轉進入 REOPENED 狀態的次數:sumIf({所有狀態}.{狀態進入次數},{所有狀態}.{狀態名稱}=="REOPENED");
- 如果 bug 進入 REOPENED 次數大於 0,則計算該 bug 數量,得到 reopen 過的 bug 總數;
- 除以全部 bug 數量,將得到的結果輸出為百分比。
