You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ADO测试计划OData查询:能否关联TestPoints与TestResults?

问题

我需要借助OData v4.0预览版,为ADO测试计划的Power BI报表获取特定AreaPath下TestSuite所属TestCase关联的TestRuns及相关字段值。根据微软文档,TestSuites、TestConfiguration、TestPoints、TestCaseWorkItem可互相关联;TestResults、TestRuns、Tests等虽自成关联体系,但无法与TestSuite/TestPoints层级关联。TestPoints虽有LastResultOutcome字段,但同一TestPoint可对应多次测试执行,其时间戳、执行结果等细节无法关联到所属TestCase。ADO界面中双击TestPoint的TestCase可查看执行历史,说明存在逻辑关联,但未找到可用关联字段,TestCaseReferenceId与TestPoints的TestCaseId、TestCaseWorkItem的WorkItemId均不匹配。

现有查询如下:

https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestPoints? 
    $apply=filter(TestSuite/TestPlanWorkItem/Area/AreaPath eq '{areapath}') 
    &$select= 
        LastResultState,LastResultOutcome,ChangedDate,AnalyticsUpdatedDate, 
        TestPlanId,TestSuiteId,TestPointId,TestCaseId,Priority,AutomationStatus 
    &$expand=
        TestSuite( 
            $select= 
                TestPlanTitle,Title, 
                IdLevel1,TitleLevel1,IdLevel2,TitleLevel2, 
                IdLevel3,TitleLevel3,IdLevel4,TitleLevel4, 
                IdLevel5,TitleLevel5,Depth;
            $expand=TestPlanWorkItem($expand=Area($select=AreaPath))), 
        AssignedTo($select=UserName), 
        Tester($select=UserName), 
        TestCase(
            $select= 
                WorkItemId,InProgressDate,CompletedDate, 
                Revision,Title,WorkItemType,ChangedDate, 
                CreatedDate,State,Reason,ClosedDate,ResolvedDate, 
                Priority,StateCategory,StateChangeDate; 
            $expand= 
                ChangedBy($select=UserName), 
                ActivatedBy($select=UserName), 
                ClosedBy($select=Username), 
                ResolvedBy($select=Username)
                )

请问是否存在遗漏的关联TestResults的方式?


解决方案
  • 通过TestPoints直接关联TestResults和TestRuns:OData v4.0预览版中,TestPoints实体可以通过TestResults导航属性关联到该测试点的所有执行结果,再通过TestResults的TestRun导航属性获取对应的测试运行信息。调整原有查询加入该关联逻辑:
https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestPoints?
    $apply=filter(TestSuite/TestPlanWorkItem/Area/AreaPath eq '{areapath}')
    &$select=TestPointId,TestCaseId,LastResultOutcome
    &$expand=
        TestSuite($select=Title,TestPlanTitle),
        TestCase($select=WorkItemId,Title),
        TestResults(
            $select=Outcome,State,CompletedDate,DurationInMs;
            $expand=TestRun(
                $select=Id,Name,StartedDate,CompletedDate,State;
                $expand=StartedBy($select=UserName),CompletedBy($select=UserName)
            )
        )

该查询会返回符合AreaPath条件的TestPoints,以及每个测试点对应的所有TestResults和关联的TestRun详情。

  • 从TestCaseWorkItem出发关联全链路数据:如果需要从TestCase维度聚合所有执行记录,可以从TestCaseWorkItem实体入手,通过Tests导航属性关联到测试执行实例,再串联TestResults和TestRuns,同时过滤AreaPath:
https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestCaseWorkItem?
    $apply=filter(Area/AreaPath eq '{areapath}')
    &$select=WorkItemId,Title,State,Priority
    &$expand=
        Tests(
            $select=Id,TestCaseWorkItemId;
            $expand=
                TestResult($select=Outcome,CompletedDate,State),
                TestRun($select=Id,Name,StartedDate),
                TestPoint($select=TestPointId,TestSuiteId;$expand=TestSuite($select=Title))
        )

这种方式可以直接获取每个TestCase对应的所有测试执行记录,同时关联到所属的TestSuite和TestPoint。

  • 修正关联字段认知:TestPoints的TestCaseId与TestCaseWorkItem的WorkItemId是匹配的,而Tests实体的TestCaseWorkItemId也对应这个值,这是三者之间的核心关联字段。之前遇到的TestCaseReferenceId是测试用例的内部引用标识,无需用于跨实体关联。

内容的提问来源于stack exchange,提问作者Candice McKune

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:37:56