Xray Cloud与Azure DevOps集成场景下,手动触发自动化工作流时的测试用例检索方法及架构咨询
问题背景
我目前在使用Atlassian托管的Xray Cloud + Jira Cloud(非自托管),想要实现一个手动触发的自动化工作流:
目标架构
- 新版本部署到预生产环境
- 创建测试计划(Test Plan)
- 为测试计划添加多个测试执行(Test Execution),每个测试执行包含多个测试用例(Test Case)
- Jira用户手动触发针对特定测试执行的自动化规则,完成以下操作:
- 检索该测试执行关联的所有测试用例
- 提取每个测试用例的自定义字段(External ID)
- 构建逗号/竖线分隔的字符串参数
- 将参数发送至Azure DevOps流水线
- Azure DevOps流水线执行完成后,将测试结果通过测试执行的Issue ID回传至对应测试执行
当前问题
我无法可靠地检索到特定测试执行关联的测试用例,尝试过JQL查询、Jira REST API、AI建议的多种方法,但都没有得到预期结果。
我的疑问
- 在Xray Cloud中,通过自动化或REST API检索特定测试执行关联的所有测试用例的正确方式是什么?
- 我的整体架构(测试计划→测试执行→手动触发→Azure DevOps→结果回传至测试执行)是否合理?
- Xray Cloud与Azure DevOps流水线有没有更优或更标准的集成模式?
专业解答
1. 检索特定测试执行关联测试用例的正确方法
针对Xray Cloud,有两种稳定可靠的实现方式,分别适配自动化规则和REST API场景:
方式一:Jira自动化规则中检索
在Jira Automation的手动触发规则中(触发事件选择「Manual trigger on issue」,目标问题类型指定为「Test Execution」),可以按以下步骤操作:
- 添加「Lookup issues」动作,在JQL输入框中使用Xray专属的关联查询语句:
这个JQL会精准返回所有与当前触发的测试执行("Test Execution" = {{issue.key}}{{issue.key}}为当前测试执行的唯一Key)关联的测试用例。 - 后续可以通过「Loop through issues」动作遍历查询到的测试用例,提取「External ID」自定义字段,拼接成需要的字符串参数。
如果需要快速获取测试用例列表,也可以直接使用Xray的内置智能值{{issue.fields.xray.testCases}},但需要注意对返回的列表格式做简单处理。
方式二:Xray Cloud REST API检索
不要使用Jira通用REST API,而是调用Xray专属的测试执行端点,这是官方推荐的稳定方案:
- 端点:
GET https://xray.cloud.getxray.app/api/v2/testexecutions/{testExecutionKeyOrId}/testcases - 认证:使用Jira Cloud基础认证,请求头携带
Authorization: Basic <Base64编码的邮箱:API Token>,以及Content-Type: application/json - 响应说明:返回的JSON数组包含每个测试用例的完整数据,你可以直接从中提取「External ID」等自定义字段。
2. 整体架构的合理性评估
你的整体架构非常合理,且符合Xray的最佳实践,理由如下:
- 分层清晰:Test Plan用于对齐测试范围和版本,Test Execution对应单次独立的测试运行,手动触发完全适配预生产环境按需执行的灵活需求;
- 闭环可追溯:从触发流水线到结果回传,所有测试动作和结果都与具体的Test Execution绑定,保证了测试链路的全可追溯性;
- 松耦合设计:通过字符串参数和Issue ID实现Xray与Azure DevOps的交互,双方仅依赖简单的标识和参数,便于后续维护和扩展。
小优化建议:如果未来需要支持批量触发多个Test Execution,可以在Test Plan上添加手动触发规则,批量获取所有关联的Test Execution并依次触发流水线,但当前的单Test Execution触发模式完全满足你的需求。
3. Xray Cloud与Azure DevOps的标准集成模式
除了你当前的架构,还有几种官方推荐的标准集成模式可以参考:
模式一:Xray官方Azure DevOps集成插件
Xray提供了Azure DevOps的官方集成扩展,能大幅减少自定义开发量:
- 触发流水线时可自动关联Xray的Test Execution或Test Plan;
- 使用Xray CLI工具在流水线执行完成后,一键将测试结果上传至对应的Test Execution;
- 支持从Azure DevOps同步测试用例到Xray,实现双向用例管理。
模式二:Webhook驱动的自动化集成
如果需要标准化测试流程、减少人工操作,可以将手动触发改为状态驱动的自动触发:
- 在Jira Automation中设置规则:当Test Execution的状态变为「Ready for Automation」(可自定义状态)时,自动触发Azure DevOps流水线;
- 流水线执行完成后,通过Xray API将结果回传,并将Test Execution的状态更新为「Completed」。
模式三:Test Set分组的精细化集成
如果你的测试用例需要按业务模块或场景分组,可以在Xray中使用「Test Set」管理测试用例,再将Test Set关联到Test Execution。这种模式下,触发流水线时可以按Test Set传递参数,实现更精细化的测试执行控制,尤其适合大型项目的测试管理。
备注:内容来源于stack exchange,提问作者Swap-IOS-Android

