不穩定測試範例報告
Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020
您可以建立一份報告,如下圖所示,列出在包含測試工作的管線執行中發生的不穩定的測試。 不穩定的測試是一種測試,即使原始程式碼或執行環境中沒有任何變更,也可能產生不同的結果,例如通過或失敗。 如需啟用浮點測試的詳細資訊,請參閱 管理浮點測試。 如需將測試新增至管線的資訊,請參閱 本文稍後的<測試工作資源 >一節。
使用本文中提供的查詢來產生下列報告:
- 不穩定的測試用於建置工作流程
- 發行工作流程中不穩定的測試
- 特定分支的不穩定測試
- 特定測試檔案的不穩定測試
- 特定測試擁有者的 Flaky 測試。
重要
Power BI 整合 以及存取 Analytics Service 的 OData 摘要,現已普遍供 Azure DevOps Services 和 Azure DevOps Server 2020 及更新版本使用。 本文中提供的範例查詢僅適用於 Azure DevOps Server 2020 和更新版本,且相依於 v3.0-preview 或更新版本。 我們鼓勵您使用這些查詢並提供意見反應。
類別 | 要求 |
---|---|
存取層級 |
-
專案成員。 - 至少擁有 基本 存取權限。 |
許可 | 根據預設,項目成員具有查詢分析及建立檢視的許可權。 如需有關服務與功能啟用和一般數據追蹤活動之其他必要條件的詳細資訊,請參閱 存取分析的許可權和必要條件。 |
注意
本文假設您已閱讀 使用 OData 查詢 的範例報表概觀,並具備 Power BI 的基本瞭解。
範例查詢
您可以使用 TestResultsDaily
實體集中的下列查詢來建立各種不穩定但相似的管道測試報告。 實體 TestResultsDaily
集會提供依測試分組的 TestResult
每日執行快照集匯總。
注意
若要判斷篩選或報表用途的可用屬性,請參閱 Test Plans Analytics 的 元數據參考和 Azure Pipelines 的元數據參考。 您可以使用位於EntityType
或NavigationPropertyBinding Path
下的Property
值或EntitySet
值來篩選查詢或返回屬性。 每個 EntitySet
對應至 EntityType
。 如需每個值之數據類型的詳細資訊,請檢閱針對對應 EntityType
提供的元數據。
建構工作流程中的不穩定測試
使用下列查詢來檢視組建工作流程管線的不穩定測試。
將下列 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
釋出工作流程中的不穩定測試
使用下列查詢來檢視 發行 工作流程管線的不穩定測試。
將下列 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 測試
若要檢視特定分支管線的失敗測試,請使用下列查詢。 若要建立報告,請執行下列額外步驟,以及本文稍後所指定的內容。
- 展開
Branch
至Branch.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 測試
若要檢視管線和特定測試檔案的浮點測試,請使用下列查詢。 若要建立報告,請執行下列額外步驟,以及本文稍後所定義的內容。
- 展開
Test
至Test.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 tests)以及特定測試擁有者所擁有的測試,請使用下列查詢。 若要建立報告,請執行下列額外步驟,以及本文稍後所定義的內容。
- 展開
Test
至Test.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(
開始filter()
子句。
Pipeline/PipelineName eq '{pipelineName}'
傳回指定管線的測試回合。
and CompletedOn/Date ge {startdate}
傳回指定日期當日或之後的測試回合。
and Workflow eq 'Build'
傳回Build
工作流程的測試回合。
)
Close filter()
子句。
/groupby(
開始 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(
開始 compute()
子句。
(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate
針對所有不穩定測試,計算 FlakyRate
。
)
Close compute()
子句。
(可選)重新命名查詢
您可以將預設查詢標籤 Query1 重新命名為更有意義的專案。 只要從 [ 查詢設定 ] 窗格輸入新名稱即可。
展開 Power BI 中的 [測試] 資料行
展開 Test
欄位以顯示展開的實體 Test.TestName
。 展開數據行會將記錄扁平化為特定欄位。 若要瞭解如何,請參閱 轉換分析數據以產生 Power BI 報表、展開數據行。
變更數據行數據類型
從 Power Query 編輯器,選取
TotalCount
、PassedCount
、FailedCount
、NotExecutedCount
、NotImpactedCount
和FlakyCount
數據行;從 [轉換] 功能選取 [數據類型],然後選擇 [整數]。選取
FlakyRate
欄;從 轉換 菜單選取資料類型;然後選擇十進位數。
如需變更數據類型的詳細資訊,請參閱 轉換分析數據以產生Power BI報表、轉換資料行數據類型。
關閉查詢並套用您的變更
完成所有數據轉換之後,請從 [常用] 功能表選擇 [關閉及套用],以儲存查詢並返回 Power BI 中的 [報表] 索引卷標。
建立表格報表
在 Power BI 的 視覺化 中,選擇 資料表 並將欄位拖放到 欄 區域。
依照列出的順序,新增下列欄位至 欄 區段。
Test.TestName
TotalCount
PassedCount
FailedCount
FlakyCount
FlakyRate
您的報表看起來應該類似下圖。
測試工作資源
- 使用 Visual Studio 測試工作平行執行測試
- 針對任何測試執行器平行執行測試
- 使用測試影響分析來加速測試 (TIA)
- 管理不穩定測試
- UI 測試考量
- Azure 負載測試
- Azure Pipelines 工作參考,測試任務