Flaky 測試範例報告

Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020

您可以建立報表,如下圖所示,其中列出管線執行中發生的浮點測試,其中包含測試工作。 浮點測試是一項測試,可提供不同的結果,例如通過或失敗,即使原始程式碼或執行環境中沒有任何變更也一樣。 若要深入瞭解如何啟用浮點測試,請參閱 管理不力測試。 如需將測試新增至管線的資訊,請參閱 本文稍後的<測試工作資源 >一節。

Flaky 測試數據表報告的螢幕快照。

使用本文中提供的查詢來產生下列報告:

  • 建置工作流程的 Flaky 測試
  • 發行工作流程的 Flaky 測試
  • 特定分支的 Flaky 測試
  • 特定測試檔案的 Flaky 測試
  • 特定測試擁有者的 Flaky 測試。

重要

Azure DevOps Services 和 Azure DevOps Server 2020 和更新版本的 Power BI 整合 和存取 Analytics Service 的 OData 摘要 已正式推出。 本文中提供的範例查詢僅適用於 Azure DevOps Server 2020 和更新版本,且相依於 v3.0-preview 或更新版本。 我們鼓勵您使用這些查詢並提供意見反應。

必要條件

  • 若要檢視分析數據和查詢服務,您必須是具有基本存取權或更高許可權的項目成員。 根據預設,所有專案成員都會獲得查詢分析的許可權,並定義分析檢視。
  • 若要瞭解有關服務與功能啟用和一般數據追蹤活動的其他必要條件,請參閱 存取分析的許可權和必要條件。

注意

本文假設您已閱讀 使用 OData 查詢 的範例報表概觀,並具備 Power BI 的基本瞭解。

範例查詢

您可以使用實體集的 TestResultsDaily 下列查詢來建立不同但類似的管線浮點測試報告。 實體 TestResultsDaily 集會提供依測試分組的 TestResult 每日執行快照集匯總。

注意

若要判斷篩選或報表用途的可用屬性,請參閱 Test Plans Analytics 的 元數據參考和 Azure Pipelines 的元數據參考。 您可以使用的 或 NavigationPropertyBinding PathEntitySet底下EntityType的任何Property值來篩選查詢或傳回屬性。 每個 EntitySet 對應至 EntityType。 若要深入瞭解每個值的數據類型,請檢閱針對對應 EntityType提供的元數據。

組建工作流程的 Flaky 測試

使用下列查詢來檢視組建工作流程管線的浮點測試。

您可以將下面所列的 Power BI 查詢直接貼到 [取得資料空白>查詢 ] 視窗中。 如需詳細資訊,請檢閱 使用 OData 查詢的範例報表概觀。

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName} "
                &"And Date/Date ge {startdate} "
                &"And Workflow eq 'Build') "
        &"/groupby((TestSK, Test/TestName), "
            &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
    &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlaykRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

發行工作流程的 Flaky 測試

使用下列查詢來檢視發行工作流程管線的浮點測試。

您可以將下面所列的 Power BI 查詢直接貼到 [取得資料空白>查詢 ] 視窗中。 如需詳細資訊,請檢閱 使用 OData 查詢的範例報表概觀。

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName}' "
                &"And Date/Date ge {startdate}) "
        &"/groupby((TestSK, Test/TestName, Workflow), "
        &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
        &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

依分支篩選的 Flaky 測試

若要檢視特定分支管線的失敗測試,請使用下列查詢。 若要建立報告,請執行下列額外步驟,以及本文稍後所指定的內容。

  • 展開 BranchBranch.BranchName
  • 選取 Power BI 視覺效果交叉分析篩選器,並將欄位新增至交叉分析篩選器的欄位Branch.BranchName
  • 從交叉分析篩選器中選取需要查看結果摘要的分支名稱。

若要深入瞭解如何使用交叉分析篩選器,請參閱 Power BI 中的交叉分析篩選器。

您可以將下面所列的 Power BI 查詢直接貼到 [取得資料空白>查詢 ] 視窗中。 如需詳細資訊,請檢閱 使用 OData 查詢的範例報表概觀。

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName}' "
                &"And Date/Date ge {startdate} "
                &"And Workflow eq 'Build') "
        &"/groupby((TestSK, Test/TestName, Branch/BranchName), "
            &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
    &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

依測試檔案篩選的 Flaky 測試

若要檢視管線和特定測試檔案的浮點測試,請使用下列查詢。 若要建立報告,請執行下列額外步驟,以及本文稍後所定義的內容。

  • 展開 TestTest.ContainerName
  • 選取 Power BI 視覺效果交叉分析篩選器,並將欄位新增至交叉分析篩選器的欄位Test.ContainerName
  • 從交叉分析篩選器中選取需要查看結果摘要的容器名稱。

您可以將下面所列的 Power BI 查詢直接貼到 [取得資料空白>查詢 ] 視窗中。 如需詳細資訊,請檢閱 使用 OData 查詢的範例報表概觀。

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName}' "
                &"And Date/Date ge {startdate}) "
        &"/groupby((TestSK, Test/TestName, Test/ContainerName), "
        &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
        &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

依測試擁有者篩選的 Flaky 測試

若要檢視特定測試擁有者所擁有的管線和測試的 Flaky 測試,請使用下列查詢。 若要建立報告,請執行下列額外步驟,以及本文稍後所定義的內容。

  • 展開 TestTest.TestOwner
  • 選取 Power BI 視覺效果交叉分析篩選器,並將欄位新增至交叉分析篩選器的欄位Test.TestOwner
  • 從交叉分析篩選器中選取測試擁有者,您需要查看結果摘要。

您可以將下面所列的 Power BI 查詢直接貼到 [取得資料空白>查詢 ] 視窗中。 如需詳細資訊,請檢閱 使用 OData 查詢的範例報表概觀。

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName}' "
                &"And Date/Date ge {startdate}) "
        &"/groupby((TestSK, Test/TestName, Test/TestOwner), "
        &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
        &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

替代字串和查詢明細

以您的值取代下列字串。 請勿在替代中包含括號 {} 。 例如,如果您的組織名稱為 「Fabrikam」 ,請將 取代 {organization}Fabrikam,而非 {Fabrikam}

 

  • {organization} - 您的組織名稱
  • {project} - 您的小組項目名稱
  • {pipelinename} - 您的管線名稱。 範例: Fabrikam hourly build pipeline
  • {startdate} - 開始報表的日期。 格式:YYYY-MM-DDZ。 範例: 2021-09-01Z 代表 2021 年 9 月 1 日。 請勿以引號或括弧括住,並針對月份和日期使用兩位數。

查詢明細

下表描述查詢的每個部分。

查詢元件

說明

$apply=filter(

Start filter() 子句。

Pipeline/PipelineName eq '{pipelineName}'

傳回指定管線的測試回合。

and CompletedOn/Date ge {startdate}

傳回指定日期或之後的測試回合。

and Workflow eq 'Build'

傳回工作流程的測試 Build 回合。

)

Close filter() 子句。

/groupby(

Start groupby() 子句。

(TestSK, Test/TestName),

依測試名稱分組。

aggregate(

Start aggregate 子句可計算符合篩選準則的測試回合。

ResultCount with sum as TotalCount,

將測試回合總數計算為 TotalCount

ResultPassCount with sum as PassedCount,

將透過的測試回合總數計算為 PassedCount

ResultFailCount with sum as FailedCount,

將失敗的測試回合總數計算為 FailedCount

ResultNotExecutedCount with sum as NotExecutedCount

將未執行的測試回合總數計算為 NotExecutedCount

ResultNotImpactedCount with sum as NotImpactedCount,

將未受影響的測試回合總數計算為 NotImpactedCount

ResultFlakyCount with sum as FlakyCount

將浮點測試回合總數計算為 FlakyCount

))

關閉 aggregate()groupby() 子句。

/filter(FlakyCount gt 0)

只篩選掉至少一次不起眼的測試。

/compute(

Start compute() 子句。

(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate

針對所有浮點測試,計算 FlakyRate

)

Close compute() 子句。

(選擇性)重新命名查詢

您可以將預設查詢標籤 Query1 重新命名為更有意義的專案。 只要從 [查詢 設定] 窗格中輸入新名稱。

Power BI 查詢功能表選項、重新命名查詢的螢幕快照。

展開 Power BI 中的 [測試] 資料行

展開資料 Test 列以顯示展開的實體 Test.TestName。 展開數據行會將記錄扁平化為特定欄位。 若要瞭解如何,請參閱 轉換分析數據以產生 Power BI 報表、展開數據行

變更數據行數據類型

  1. 從 Power Query 編輯器 中,選取 、、、、 和 資料行;從 [轉換] 選單選取 [數據類型],然後選擇 [神秘 le Number]。PassedCountFailedCountTotalCountFlakyCountNotImpactedCountNotExecutedCount

  2. 選取資料列;從 [轉換] 選單選取 [資料類型],然後選擇 [十進位數]。FlakyRate

若要深入瞭解如何變更數據類型,請參閱 轉換分析數據以產生Power BI報表、轉換資料行數據類型

關閉查詢並套用您的變更

完成所有數據轉換之後,請從 [常用] 功能表選擇 [關閉及套用],以儲存查詢並返回 Power BI 中的 [報表] 索引卷標。

Power Query 編輯器 關閉和套用選項的螢幕快照。

建立數據表報表

  1. 在 Power BI 的 [視覺效果] 下,選擇 [資料表],並將欄位拖放到[資料行] 區域。

    Flaky 測試數據表報表的視覺效果欄位選取項目螢幕快照。

  2. 依照列出的順序,將下列欄位新增至 [資料 行] 區段。

    • Test.TestName
    • TotalCount
    • PassedCount
    • FailedCount
    • FlakyCount
    • FlakyRate

您的報表看起來應該類似下圖。

範例 Flaky 測試數據表報告的螢幕快照。

測試工作資源