测试摘要示例报告

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 或更高版本。 我们鼓励你使用这些查询并提供反馈。

先决条件

  • 若要查看 Analytics 数据并查询服务,你需要是具有 基本 访问权限或更高访问权限的项目的成员。 默认情况下,向所有项目成员授予查询 Analytics 和定义 Analytics 视图的权限。
  • 若要了解有关服务和功能启用以及常规数据跟踪活动的其他先决条件,请参阅 访问 Analytics 的权限和先决条件

注意

本文假定你已阅读 使用 OData 查询的示例报表概述 ,并基本了解 Power BI。

示例查询

可以使用实体集的以下查询 TestResultsDaily 来创建不同的但类似的管道测试摘要报告。 实体TestResultsDaily集提供按测试分组的TestResult每日执行快照聚合。

注意

若要确定用于筛选器或报表目的的可用属性,请参阅 Azure Pipelines 的测试计划分析和元数据参考的元数据参考。 可以使用 提供的 EntitySetNavigationPropertyBinding 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

发布工作流的测试摘要

使用以下查询查看发布工作流管道的测试摘要。

注意

若要确定用于筛选器或报表目的的可用属性,请参阅 测试计划分析的元数据参考。 可以使用 提供的 EntitySetNavigationPropertyBinding 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

按分支筛选的测试摘要

若要查看特定分支管道的测试摘要,请使用以下查询。 若要创建报表,请执行以下额外步骤以及本文后面的说明。

  • 展开 BranchBranch.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

测试文件筛选的测试摘要

若要查看特定测试文件的管道的测试摘要,请使用以下查询。 若要创建报表,请执行以下额外步骤以及本文稍后定义的内容。

  • 展开 TestTest.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

测试所有者筛选的测试摘要

若要查看特定测试所有者拥有的测试的管道的测试摘要,请使用以下查询。 若要创建报表,请执行以下额外步骤以及本文稍后定义的内容。

  • 展开 TestTest.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'

仅针对使用 BuildRelease 工作流指定的管道返回测试运行。

)

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 重命名为更有意义的标签。 只需在 “查询设置” 窗格中输入新名称。

Power BI 查询菜单选项的屏幕截图,重命名查询。

(可选)重命名列字段

可以重命名列字段。 例如,可以将列 Pipeline.PipelineName 重命名为 Pipeline NameTotalCount 重命名为 Total Count。 若要了解如何操作,请参阅 “重命名列字段”。

关闭查询并应用更改

完成所有数据转换后,从“开始”菜单中选择“关闭和应用”以保存查询并返回到 Power BI 中的“报表”选项卡。

Power Query 编辑器“关闭并应用”选项的屏幕截图。

创建圆环图报表

  1. 在 Power BI 的“可视化效果”下,选择圆环报表。

    测试摘要报表的可视化字段选择的屏幕截图。

  2. 按指示的顺序将以下字段添加到 “值”。 右键单击每个字段,并确保 已选择 Sum

    • ResultPassCount
    • ResultFailCount
    • ResultNotExecutedCount
    • ResultNotImpactedCount

报表应如下图所示。

示例测试摘要圆环报表的屏幕截图。

测试任务资源