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
相关产品推荐
相关产品推荐

