测试摘要示例报告
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
执行管道运行并在管道定义中包括测试任务时,可以创建一个报告,指示不同测试结果的测试运行数:通过、失败、未执行、未执行、不受影响。
下图显示了测试摘要报表的示例。
使用本文中提供的查询生成以下报告:
- 生成工作流的测试摘要
- 发布工作流的测试摘要
- 特定分支的测试摘要
- 特定测试文件的测试摘要
- 特定测试所有者的测试摘要
重要
Power BI 集成 和对 分析服务的 OData 源 的访问权限通常用于 Azure DevOps Services 和 Azure DevOps Server 2020 及更高版本。 本文中提供的示例查询仅适用于 Azure DevOps Server 2020 及更高版本,具体取决于 v3.0-preview 或更高版本。 我们鼓励你使用这些查询并提供反馈。
先决条件
- Access:至少是具有基本访问权限的项目的成员。
- 权限: 默认情况下,项目成员有权查询 Analytics 和创建视图。
- 有关服务和功能启用和常规数据跟踪活动的其他先决条件的详细信息,请参阅 访问 Analytics 的权限和先决条件。
注意
本文假设你阅读 了使用 OData 查询 的示例报表概述,并基本了解 Power BI。
示例查询
可以使用实体集的以下查询 TestResultsDaily
来创建不同的但类似的管道测试摘要报告。 实体 TestResultsDaily
集提供按测试分组的执行的 TestResult
每日快照聚合。
注意
若要确定用于筛选器或报表目的的可用属性,请参阅 Azure Pipelines 的测试计划分析和元数据参考的元数据参考。 可以使用 提供的 EntitySet
或 NavigationPropertyBinding Path
值下EntityType
的任何Property
值筛选查询或返回属性。 每个对应 EntitySet
一个 EntityType
。 有关每个值的数据类型的详细信息,请查看为相应 EntityType
值提供的元数据。
生成工作流的测试摘要
使用以下查询查看生成工作流管道的测试摘要。
将以下 Power BI 查询直接复制并粘贴到 “获取数据>空白查询” 窗口中。 有关详细信息,请参阅 使用 OData 查询的示例报告概述。
let
Source = OData.Feed (
"https://analytics.dev.azure.com/mseng/AzureDevOps/_odata/v4.0-preview/TestResultsDaily?"
&"$apply=filter("
&"Pipeline/PipelineName eq '{pipelineName}' "
&"And DateSK ge {startdate} "
&"And Workflow eq 'Build' "
&")/aggregate("
&"ResultCount with sum as ResultCount, "
&"ResultPassCount with sum as ResultPassCount, "
&"ResultFailCount with sum as ResultFailCount, "
&"ResultNotExecutedCount with sum as ResultNotExecutedCount, "
&"ResultNotImpactedCount with sum as ResultNotImpactedCount"
&")",
null, [Implementation="2.0", OmitValues = ODataOmitValues.Nulls, ODataVersion = 4]
)
in
Source
替换 {pipelineName}
并 {startdate}
替换为查询的实际值。
发布工作流的测试摘要
使用以下查询查看发布工作流管道的测试摘要。
注意
若要确定用于筛选器或报表目的的可用属性,请参阅 测试计划分析的元数据参考。 可以使用 提供的 EntitySet
或 NavigationPropertyBinding Path
值下EntityType
的任何Property
值筛选查询或返回属性。 每个对应 EntitySet
一个 EntityType
。 有关每个值的数据类型的详细信息,请查看为相应 EntityType
值提供的元数据。
将以下 Power BI 查询直接复制并粘贴到 “获取数据>空白查询” 窗口中。 有关详细信息,请参阅 使用 OData 查询的示例报告概述。
let
Source = OData.Feed (
"https://analytics.dev.azure.com/mseng/AzureDevOps/_odata/v4.0-preview/TestResultsDaily?"
&"$apply=filter("
&"Pipeline/PipelineName eq '{pipelineName}' "
&"And DateSK ge {startdate} "
&"And Workflow eq 'Release'"
&")/aggregate("
&"ResultCount with sum as ResultCount, "
&"ResultPassCount with sum as ResultPassCount, "
&"ResultFailCount with sum as ResultFailCount, "
&"ResultNotExecutedCount with sum as ResultNotExecutedCount, "
&"ResultNotImpactedCount with sum as ResultNotImpactedCount"
&")",
null, [Implementation="2.0", OmitValues = ODataOmitValues.Nulls, ODataVersion = 4]
)
in
Source
按分支筛选的测试摘要
若要查看特定分支管道的测试摘要,请使用以下查询。 若要创建报表,请执行以下额外步骤以及本文后面的说明。
- 展开
Branch
到Branch.BranchName
- 选择 Power BI 可视化切片器,并将字段
Branch.BranchName
添加到切片器的 字段 - 从切片器中选择需要查看结果摘要的分支名称。
有关使用切片器的详细信息,请参阅 Power BI 中的切片器。
将以下 Power BI 查询直接复制并粘贴到 “获取数据>空白查询” 窗口中。 有关详细信息,请参阅 使用 OData 查询的示例报告概述。
let
Source = OData.Feed (
"https://analytics.dev.azure.com/mseng/AzureDevOps/_odata/v4.0-preview/TestResultsDaily?"
&"$apply=filter("
&"Pipeline/PipelineName eq '{pipelineName}' "
&"And DateSK ge {startdate} "
&"And Workflow eq 'Build'"
&")/groupby("
&"(Branch/BranchName),"
&"aggregate("
&"ResultCount with sum as ResultCount, "
&"ResultPassCount with sum as ResultPassCount, "
&"ResultFailCount with sum as ResultFailCount, "
&"ResultNotExecutedCount with sum as ResultNotExecutedCount, "
&"ResultNotImpactedCount with sum as ResultNotImpactedCount"
&")",
null, [Implementation="2.0", OmitValues = ODataOmitValues.Nulls, ODataVersion = 4]
)
in
Source
测试文件筛选的测试摘要
若要查看特定测试文件的管道的测试摘要,请使用以下查询。 若要创建报表,请执行以下额外步骤以及本文稍后定义的内容。
- 展开
Test
到Test.ContainerName
- 选择 Power BI 可视化切片器,并将字段
Test.ContainerName
添加到切片器的 字段 - 从需要查看结果摘要的切片器中选择容器名称。
将以下 Power BI 查询直接复制并粘贴到 “获取数据>空白查询” 窗口中。 有关详细信息,请参阅 使用 OData 查询的示例报告概述。
let
Source = OData.Feed (
"https://analytics.dev.azure.com/mseng/AzureDevOps/_odata/v4.0-preview/TestResultsDaily?"
&"$apply=filter("
&"Pipeline/PipelineName eq '{pipelineName}' "
&"And DateSK ge {startdate} "
&"And Workflow eq 'Build'"
&")/groupby("
&"(Test/ContainerName),"
&"aggregate("
&"ResultCount with sum as ResultCount, "
&"ResultPassCount with sum as ResultPassCount, "
&"ResultFailCount with sum as ResultFailCount, "
&"ResultNotExecutedCount with sum as ResultNotExecutedCount, "
&"ResultNotImpactedCount with sum as ResultNotImpactedCount"
&")",
null, [Implementation="2.0", OmitValues = ODataOmitValues.Nulls, ODataVersion = 4]
)
in
Source
测试所有者筛选的测试摘要
若要查看特定测试所有者拥有的测试的管道的测试摘要,请使用以下查询。 若要创建报表,请执行以下额外步骤以及本文稍后定义的内容。
- 展开
Test
到Test.TestOwner
- 选择 Power BI 可视化切片器,并将字段
Test.TestOwner
添加到切片器的 字段 - 从切片器中选择需要查看结果摘要的测试所有者。
将以下 Power BI 查询直接复制并粘贴到 “获取数据>空白查询” 窗口中。 有关详细信息,请参阅 使用 OData 查询的示例报告概述。
let
Source = OData.Feed (
"https://analytics.dev.azure.com/mseng/AzureDevOps/_odata/v4.0-preview/TestResultsDaily?"
&"$apply=filter("
&"Pipeline/PipelineName eq '{pipelineName}' "
&"And DateSK ge {startdate} "
&"And Workflow eq 'Build'"
&")/groupby("
&"(Test/TestOwner),"
&"aggregate("
&"ResultCount with sum as ResultCount, "
&"ResultPassCount with sum as ResultPassCount, "
&"ResultFailCount with sum as ResultFailCount, "
&"ResultNotExecutedCount with sum as ResultNotExecutedCount, "
&"ResultNotImpactedCount with sum as ResultNotImpactedCount"
&")",
null, [Implementation="2.0", OmitValues = ODataOmitValues.Nulls, ODataVersion = 4]
)
in
Source
替换字符串和查询明细
将以下字符串替换为值。 不要在替换中包含括号 {} 。 例如,如果组织名称为“Fabrikam”,请将 替换为 {organization}
Fabrikam
,而不是 {Fabrikam}
。
{organization}
- 组织名称。{project}
- 团队项目名称。{pipelinename}
- 管道名称。 示例:Fabrikam hourly build pipeline
。{startdate}
- 开始报表的日期。 可以采用 YYYYMMDD 格式输入日期。 例如,20220815
对于 2022 年 8 月 15 日。
查询明细
下表描述了查询的每个部分。
查询部件
描述
$apply=filter(
Start filter()
子句。
Pipeline/PipelineName eq '{pipelineName}'
返回指定管道的测试运行。
and CompletedOn/Date ge {startdate}
返回在指定日期或之后运行的测试。
and Workflow eq 'Build'
或 and Workflow eq 'Release'
仅针对使用 Build
或 Release
工作流指定的管道返回测试运行。
)
Close filter()
子句。
aggregate(
aggregate
启动与筛选器条件匹配的所有测试运行的子句。
ResultCount with sum as ResultCount,
将测试运行总数计为 ResultCount
。
ResultPassCount with sum as ResultPassCount,
将通过的测试运行总数计为 ResultPassCount
。
ResultFailCount with sum as ResultFailCount
将失败的测试运行总数计为 ResultFailCount
。
ResultNotExecutedCount with sum as ResultNotExecutedCount,
将未执行的测试运行总数计为 ResultNotExecutedCount
。
ResultNotImpactedCount with sum as ResultNotImpactedCount
将未受影响的测试运行总数计为 ResultNotImpactedCount
。
)
关闭子 aggregate()
句。
(可选) 重命名查询
可以将默认查询标签 Query1 重命名为更有意义的标签。 只需在 “查询设置” 窗格中输入新名称。
(可选)重命名列字段
可以重命名列字段。 例如,可以将列 Pipeline.PipelineName
重命名为 Pipeline Name
或 TotalCount
重命名为 Total Count
。 若要了解如何操作,请参阅 “重命名列字段”。
关闭查询并应用更改
完成所有数据转换后,从“开始”菜单中选择“关闭和应用”以保存查询并返回到 Power BI 中的“报表”选项卡。
创建圆环图报表
在 Power BI 的“可视化效果”下,选择圆环报表。
按指示的顺序将以下字段添加到 “值”。 右键单击每个字段,并确保 已选择 Sum 。
ResultPassCount
ResultFailCount
ResultNotExecutedCount
ResultNotImpactedCount
报表应如下图所示。