Azure DevOps 服务 |Azure DevOps Server |Azure DevOps Server 2022
可以创建一份报表(如下图所示),列出在包含测试任务的管道运行中出现的不可靠测试。 不可靠测试是一种提供不同结果(例如通过或失败)的测试,即使源代码或执行环境未发生更改。 有关启用浮点测试的详细信息,请参阅 管理浮点测试。 有关将测试添加到管道的信息,请参阅 本文后面的“测试任务资源 ”部分。
使用本文中提供的查询生成以下报告:
- 生成工作流的不稳定测试
- 发布工作流中的不稳定测试
- 特定分支的不可靠测试
- 特定测试文件中的不稳定测试
- 特定测试所有者的不可靠测试。
注意
本文中的示例查询需要 v3.0-preview 或更高版本的 Analytics OData 源。 共享 反馈。
| 类别 | 要求 |
|---|---|
| 访问级别 |
-
项目成员。 - 至少 基本 访问权限。 |
| 权限 | 默认情况下,项目成员有权查询 Analytics 和创建视图。 有关服务和功能启用和常规数据跟踪活动的其他先决条件的详细信息,请参阅 访问 Analytics 的权限和先决条件。 |
注意
本文假设你已阅读使用 OData 查询的示例报表概述,并且对 Power BI 有基本了解。
示例查询
可以使用以下对 TestResultsDaily 实体集的查询来创建不同但相似的管道不可靠测试报表。
TestResultsDaily 实体集提供了按测试分组的 TestResult 执行的每日快照聚合。
注意
若要查找用于筛选或报告的可用属性,请参阅 test Plans Analytics 的 Metadata 参考和 metadata reference for Azure Pipelines。 可以通过使用在Property下定义的任何EntityType值,或为某个NavigationPropertyBinding Path列出的任何EntitySet值来筛选查询或返回属性。 每个 EntitySet 映射到一个 EntityType,后者记录了每个属性的数据类型。
生成工作流的不可靠测试
使用以下查询查看 Build 工作流管道的不可靠测试。
将以下Power BI查询直接复制并粘贴到 Get Data>Blank Query 窗口中。 有关详细信息,请参阅 使用 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
发布工作流中的不稳定测试
使用以下查询查看 Release 工作流管道的不可靠测试。
将以下Power BI查询直接复制并粘贴到 Get Data>Blank Query 窗口中。 有关详细信息,请参阅 使用 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
按分支筛选的不可靠测试
若要查看特定分支管道的失败测试,请使用以下查询。 若要创建报表,请执行以下额外步骤以及本文后面的说明。
- 展开
Branch到Branch.BranchName。 - 选择Power BI可视化切片器,并将字段
Branch.BranchName添加到切片器的 Field。 - 从切片器中选择需要查看结果摘要的分支名称。
有关使用切片器的详细信息,请参阅 Power BI 中的切片器。
将以下Power BI查询直接复制并粘贴到 Get Data>Blank Query 窗口中。 有关详细信息,请参阅 使用 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
按测试文件筛选的不可靠测试
若要查看管道和特定测试文件的异常测试,请使用以下查询。 若要创建报表,请执行以下额外步骤以及本文稍后定义的内容。
- 展开
Test到Test.ContainerName。 - 选择Power BI可视化切片器,并将字段
Test.ContainerName添加到切片器的 Field。 - 从切片器中选择需要查看结果摘要的容器名称。
将以下Power BI查询直接复制并粘贴到 Get Data>Blank Query 窗口中。 有关详细信息,请参阅 使用 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
按测试所有者筛选的不可靠测试
要查看管道的不可靠测试以及特定测试所有者拥有的测试,请使用以下查询。 若要创建报表,请执行以下额外步骤以及本文稍后定义的内容。
- 展开
Test到Test.TestOwner。 - 选择Power BI可视化切片器,并将字段
Test.TestOwner添加到切片器的 Field。 - 从切片器中选择需要查看结果摘要的测试所有者名称。
将以下Power BI查询直接复制并粘贴到 Get Data>Blank Query 窗口中。 有关详细信息,请参阅 使用 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 工作流的测试运行。
)
关闭filter()子句。
/groupby(
开始 groupby() 子句。
(TestSK, Test/TestName),
按测试名称分组。
aggregate(
开始 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。
)
关闭compute()子句。
(可选) 重命名查询
可以将默认查询标签 Query1 重命名为更有意义的标签。 在 “查询设置” 窗格中输入新名称。
展开Power BI中的“测试”列
展开列 Test 以显示展开的实体 Test.TestName。 展开该列可将记录分解成特定字段。 若要了解如何操作,请参阅 Transform Analytics 数据以生成Power BI报表、展开列。
更改列数据类型
在 Power Query 编辑器 中,选择
TotalCount、PassedCount、FailedCount、NotExecutedCount、NotImpactedCount和FlakyCount列。 从“转换”菜单中选择“数据类型”,然后选择“整数”。选择“
FlakyRate”列。 从“转换”菜单中选择“数据类型”,然后选择“十进制数”。
有关更改数据类型的详细信息,请参阅 Transform Analytics 数据以生成Power BI报表,转换列数据类型。
关闭查询并应用更改
完成所有数据转换后,从“开始”菜单中选择“关闭并应用”。 此操作将保存查询并将你返回到Power BI中的 Report 选项卡。
创建表格报表
在 Power BI 中,在 Visualizations 下,选择 Table。 将字段拖动到 列 区域。
按列出的顺序将以下字段添加到 “列” 部分。
Test.TestNameTotalCountPassedCountFailedCountFlakyCountFlakyRate
报表应如下图所示。
测试任务资源
- 使用Visual Studio测试任务并行运行测试
- 针对任何测试运行程序并行运行测试
- 使用测试影响分析 (TIA) 加快测试速度
- 管理不稳定测试
- UI 测试注意事项
- Azure 负载测试
- Azure Pipelines 任务参考、测试任务