Azure DevOps 服务 |Azure DevOps Server |Azure DevOps Server 2022
对于包含测试任务的管道运行,可以创建一个报告,其中列出了失败的测试,如下图所示。 有关向管道添加测试的信息,请参阅本文后面的 测试任务资源 。
使用本文中的查询生成以下报表:
- 生成工作流的失败测试
- 发布工作流的失败测试
- 特定分支的测试失败
- 特定测试文件的失败测试
- 某测试所有者的测试失败
注意
本文中的示例查询需要 v3.0-preview 或更高版本的 Analytics OData 源。 共享 反馈。
| 类别 | 要求 |
|---|---|
| 访问级别 |
-
项目成员。 - 至少 基本 访问权限。 |
| 权限 | 默认情况下,项目成员有权查询 Analytics 和创建视图。 有关服务和功能启用和常规数据跟踪活动的其他先决条件的详细信息,请参阅 访问 Analytics 的权限和先决条件。 |
注意
本文假设你已阅读使用 OData 查询的示例报表概述,并且对 Power BI 有基本了解。
示例查询
使用以下实体集的 TestResultsDaily 查询来创建不同但类似的测试失败报告。 此实体集提供按测试分组的 TestResult 每日执行快照聚合。
注意
若要查找用于筛选或报告的可用属性,请参阅 test Plans Analytics 的 Metadata 参考和 metadata reference for Azure Pipelines。 可以通过使用在EntityType下定义的任何Property值,或为某个EntitySet列出的任何NavigationPropertyBinding Path值来筛选查询或返回属性。 每个 EntitySet 映射到一个 EntityType,后者记录了每个属性的数据类型。
构建工作流的测试失败
使用以下查询查看构建工作流管道中失败的测试。
将以下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(FailedCount gt 0) "
&"/compute( "
&"iif(TotalCount gt NotExecutedCount, ((PassedCount add NotImpactedCount) div cast(TotalCount sub NotExecutedCount, Edm.Decimal)) mul 100, 0) as PassRate) "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
发布工作流的失败测试
使用以下查询查看发布工作流管道的失败测试。
将以下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 'Release' "
&") "
&"/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(FailedCount gt 0) "
&"/compute( "
&"iif(TotalCount gt NotExecutedCount, ((PassedCount add NotImpactedCount) div cast(TotalCount sub NotExecutedCount, Edm.Decimal)) mul 100, 0) as PassRate) "
,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(FailedCount gt 0) "
&"/compute( "
&"iif(TotalCount gt NotExecutedCount, ((PassedCount add NotImpactedCount) div cast(TotalCount sub NotExecutedCount, Edm.Decimal)) mul 100, 0) as PassRate) "
,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(FailedCount gt 0) "
&"/compute( "
&"iif(TotalCount gt NotExecutedCount, ((PassedCount add NotImpactedCount) div cast(TotalCount sub NotExecutedCount, Edm.Decimal)) mul 100, 0) as PassRate) "
,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(FailedCount gt 0) "
&"/compute( "
&"iif(TotalCount gt NotExecutedCount, ((PassedCount add NotImpactedCount) div cast(TotalCount sub NotExecutedCount, Edm.Decimal)) mul 100, 0) as PassRate) "
,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 Date/Date ge {startdate}
返回在指定日期或之后运行的测试。
and Workflow eq 'Build'
返回工作流管道的测试运行。Build
)
关闭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(FailedCount gt 0)
仅筛选出包含至少一个失败的测试。
/compute(
开始 compute() 子句。
iif(TotalCount gt NotExecutedCount, ((PassedCount add NotImpactedCount) div cast(TotalCount sub NotExecutedCount, Edm.Decimal)) mul 100, 0) as PassRate
对于所有测试,计算 PassRate。
)
关闭compute()子句。
(可选) 重命名查询
可以将默认查询标签 Query1 重命名为更有意义的标签。 在 “查询设置” 窗格中输入新名称。
展开Power BI中的“测试”列
展开列 Test 以显示展开的实体 Test.TestName。 展开列时,则将记录展平到特定字段中。 有关详细信息,请参阅 转换分析数据以生成 Power BI 报表,展开列。
更改列数据类型
在 Power Query 编辑器 中,选择
TotalCount、PassedCount、FailedCount、NotExecutedCount、NotImpactedCount和FlakyCount列。 从“转换”菜单中选择“数据类型”,然后选择“整数”。选择“
PassRate”列。 从“转换”菜单中选择“数据类型”,然后选择“十进制数”。
有关更改数据类型的详细信息,请参阅 Transform Analytics 数据以生成Power BI报表,转换列数据类型。
关闭查询并应用更改
完成所有数据转换后,从“开始”菜单中选择“关闭并应用”。 此操作将保存查询并将你返回到Power BI中的 Report 选项卡。
创建表格报表
在 Power BI 中,在 Visualizations 下,选择 Table。 将字段拖动到 列 区域。
按列出的顺序将以下字段添加到 “列” 部分。
Test.TestNameTotalCountPassedCountFailedCountNotImpactedCountNotExecutedCountFlakyCountPassRate
报表应如下图所示。
测试任务资源
- 使用Visual Studio测试任务并行运行测试
- 针对任何测试运行程序并行运行测试
- 使用测试影响分析 (TIA) 加快测试速度
- 管理不稳定测试
- UI 测试注意事项
- Azure 负载测试
- Azure Pipelines任务参考; 测试任务