Rovo Automation - TestRail Agent设计支持用例编写

背景

Atlassian推出Ask Rovo重塑了当前AI使用的工作方式,它专为集成Confluence和Jira等协作工具而设计。它能够自动检索和整合团队在Confluence文档和Jira工单中的知识与数据,帮助成员快速找到所需信息和最佳实践。通过Ask Rovo,团队成员无需手动翻查大量页面或任务,只需提出问题,即可获得精准、实时的答案。

目标

鉴于当前公司项目通过Jira管理软件开发流程工单和使用Confluence作为知识库,因此Ask Rovo天然地有了大部分背景,对于开发团队中的测试角色来说,需要完成用例编写这样的任务,除了使用Jira单据和Confluenct知识库作为上下文外,还有一个非常重要的上下文就是TestRail中存放的已有用例,现在需要设计并实现一个TestRail Agent工具集成到Rovo中,能够最大限度地获取相关的上下文,以便Rovo辅助QA从一个Jira单据中生成测试用例。

整体架构设计

复制代码
flowchart TD
    A[用户在Jira中向Rovo提问] --> B{Rovo分析问题意图}
    B --> C[需要编写测试用例]
    
    C --> D[调用 TestRail Agent]
    
    subgraph D [TestRail Agent 工作流]
        D1[调用 get_module_features] --> D2[AI分析系统结构<br>选择相关模块]
        D2 --> D3[调用 get_relevent_cases<br>传入选定模块]
        D3 --> D4[返回精准的用例列表]
    end
    
    D --> E[Rovo结合需求+用例上下文<br>生成分析报告和新用例]
    E --> F[最终响应返回用户]

功能实现

阶段一:TestRail Agent开发

Step 1: 设计Agent接口

1.1 get_module_features 方法

  • 输入: 无

  • 输出: TestRail中完整的模块-功能树状结构

  • 数据格式:

    javascript 复制代码
    {
      "modules": [
        {
          "module_name": "用户管理",
          "module_id": "M1",
          "features": [
            {"feature_name": "用户登录", "feature_id": "M1-F1"},
            {"feature_name": "用户注册", "feature_id": "M1-F2"},
            {"feature_name": "密码重置", "feature_id": "M1-F3"}
          ]
        },
        {
          "module_name": "支付系统", 
          "module_id": "M2",
          "features": [
            {"feature_name": "微信支付", "feature_id": "M2-F1"},
            {"feature_name": "支付宝支付", "feature_id": "M2-F2"}
          ]
        }
      ]
    }

1.2 get_relevent_cases 方法

  • 输入 : module_id, feature_id

  • 输出: 指定模块-功能下的所有测试用例详情

  • 数据格式:

    javascript 复制代码
    '''json
    {
      "module": "用户管理",
      "feature": "用户登录", 
      "cases": [
        {
          "case_id": "C100",
          "title": "验证用户使用正确用户名密码登录成功",
          "steps": "1. 输入用户名...",
          "expected_result": "登录成功,跳转到首页",
          "coverage_scope": ["正常流登录", "会话建立"]
        },
        {
          "case_id": "C101",
          "title": "验证用户登录失败提示信息",
          "steps": "1. 输入错误密码...",
          "expected_result": "显示'用户名或密码错误'提示",
          "coverage_scope": ["错误流", "密码错误处理"]
        }
      ]
    }

    Step 2: 实现Agent后端服务

开发人员需要创建一个独立的服务,提供这两个API端点:

python 复制代码
# 伪代码示例
class TestRailAgent:
    def get_module_features(self):
        """从TestRail API获取所有模块和功能目录"""
        # 1. 调用 TestRail API: get_sections/{project_id}
        # 2. 解析模块和功能的层级结构
        # 3. 返回标准化的模块-功能树
        
    def get_relevent_cases(self, module_id, feature_id):
        """根据模块和功能ID获取相关测试用例"""
        # 1. 调用 TestRail API: get_cases/{project_id}&section_id={feature_id}
        # 2. 解析用例详情并格式化返回

阶段二:Ask Rovo 集成配置

Step 3: 注册自定义函数

在Ask Rovo的管理后台注册这两个方法:

3.1 注册 get_module_features

javascript 复制代码
'''yaml
name: "get_module_features"
description: "获取TestRail中所有的模块和功能目录结构,用于让AI了解系统有哪些测试覆盖区域"
parameters: {}
returns: "系统模块功能树状结构"

3.2 注册 get_relevent_cases

javascript 复制代码
'''yaml
name: "get_relevent_cases" 
description: "根据指定的模块和功能ID,获取该功能下所有的现有测试用例"
parameters:
  module_id: "string"  # 模块ID
  feature_id: "string" # 功能ID
returns: "指定功能下的详细测试用例列表"

Step 4: 设计AI推理逻辑

这是最核心的部分------设计AI的思考链:

步骤1:需求分析

  • AI读取Jira单据的标题、描述、验收标准

  • 理解本次需求涉及的核心业务功能

步骤2:系统结构探索

  • AI自动调用 get_module_features 获取完整目录

  • 基于需求内容,选择最相关的模块和功能

步骤3:精准用例查询

  • AI调用 get_relevent_cases,传入选定的模块功能ID

  • 获取该功能下所有现有用例

步骤4:智能分析与生成

  • 对比"新需求"和"现有用例覆盖范围"

  • 识别测试缺口,生成补充用例

如何在Ask Rovo中预制Prompt Template实现AI推理逻辑?

1.设计System Prompt

Jira管理员在Ask Rovo后台配置Prompt

复制代码
'''prompt
# Role: 智能测试分析师
## Core Function: 测试用例分析与生成

你专门负责为Jira需求分析测试覆盖并生成测试用例。当用户要求编写测试用例时,你必须严格按照以下推理链执行:

### 推理步骤:
1. **需求分析阶段**
   - 仔细阅读当前的Jira单据(包括标题、描述、验收标准)
   - 识别需求涉及的核心业务功能、模块边界和测试点

2. **系统结构探索阶段** 
   - 自动调用 `get_module_features` 获取TestRail中所有模块功能目录
   - 基于需求分析结果,选择最相关的1-3个模块和功能
   - 如果找不到完全匹配的模块,选择最接近的或识别为"全新功能"

3. **现有用例查询阶段**
   - 对每个选定的功能,调用 `get_relevent_cases` 获取现有测试用例
   - 分析现有用例的覆盖范围、测试场景和验证点

4. **智能生成阶段**
   - **对比分析**:明确指出现有用例已覆盖新需求中的哪些部分
   - **缺口识别**:精准识别新需求中未被覆盖的测试场景
   - **用例生成**:仅针对测试缺口生成详细的测试用例

### 输出格式要求:
- 首先展示**覆盖分析报告**
- 然后列出**需要补充的测试场景** 
- 最后提供**详细的测试用例草案**
- 每个用例包含:用例标题、测试步骤、预期结果、覆盖的业务场景

严禁跳过任何步骤直接生成用例!

2.创建用户友好的Prompt Template

为了让团队成员更容易使用,可以创建几个预设的模板指令:

模板1:标准用例生成

/生成测试用例

需求分析:{自动读取当前Jira上下文}

执行模式:完整分析

模板2:快速覆盖检查

复制代码
/检查测试覆盖
关注模块:{用户可指定特定模块}
详细程度:简要报告

3.配置触发逻辑

在Ask Rovo后台设置触发规则:

复制代码
'''yaml
triggers:
  - pattern: ["编写测试用例", "生成测试用例", "创建测试case", "/生成测试用例"]
    action: execute_qa_workflow
    auto_invoke: 
      - get_module_features
      - analyze_requirements
      
workflow_steps:
  1. 验证Jira上下文存在
  2. 执行System Prompt中定义的4步推理链
  3. 确保每次调用都遵循module_features -> relevent_cases -> analysis的流程

4.针对测试场景的优化配置

为了确保符合Step 5的测试场景目标,需要在System Prompt中加入场景识别逻辑:

复制代码
''prompt
## 场景识别与处理策略:

### 场景1:功能增强型需求(如:登录功能新增图形验证码)
- 识别关键词:"新增"、"增强"、"优化"、"增加"
- 处理策略:重点分析现有功能的用例,识别增量测试点
- 预期输出:明确指出"现有登录流程已覆盖,需要补充验证码相关场景"

### 场景2:全新功能开发(如:全新的消息推送中心)  
- 识别关键词:"全新"、"新功能"、"首次开发"
- 处理策略:确认TestRail中无相关模块后,完整生成用例集
- 预期输出:"这是全新功能,需要完整编写测试用例"

### 场景3:缺陷修复相关
- 识别关键词:"修复"、"缺陷"、"Bug"、"问题"
- 处理策略:分析缺陷根本原因,生成回归测试用例
- 预期输出:包含"缺陷验证用例"和"回归测试用例"

阶段三:测试与优化

Step 5: 端到端测试场景

测试场景1:用户登录功能增强

  • 输入: "为PROJ-456编写测试用例,需求是为用户登录新增图形验证码功能"

  • 预期AI行为:

    1. 调用get_module_features,发现"用户管理"模块下的"用户登录"功能

    2. 调用get_relevent_cases获取现有登录用例

    3. 分析发现现有用例覆盖了用户名密码登录,但缺少验证码相关场景

    4. 生成验证码显示、验证、错误处理等新用例

测试场景2:全新功能开发

  • 输入: "为PROJ-457编写测试用例,需求是开发全新的消息推送中心"

  • 预期AI行为:

    1. 调用get_module_features,发现没有"消息推送"相关模块

    2. 返回提示:"这是全新功能,TestRail中暂无相关用例,需要完整编写"

    3. 基于需求生成完整的测试用例集

Step 6: 优化提示词工程

为AI设计清晰的推理指令:

prompt

复制代码
你是一个资深QA分析师。当需要编写测试用例时,请按以下步骤思考:

1. **分析需求范围**:仔细阅读Jira需求,确定涉及的业务模块和功能点。

2. **探索系统结构**:调用get_module_features了解现有测试覆盖的模块,选择与当前需求最相关的模块和功能。

3. **获取现有用例**:调用get_relevent_cases获取选定功能下的所有现有测试用例。

4. **对比分析生成**:
   - 指出现有用例已经覆盖了哪些场景
   - 识别新需求中哪些场景尚未被覆盖
   - 仅针对未覆盖场景编写详细测试用例
   
始终基于实际的模块结构和现有用例来做出准确判断。

技术实现要点

  1. 缓存机制 : get_module_features 的结果可以缓存,避免频繁调用TestRail API

  2. 错误处理: 当AI选择了不存在的module_id时的降级策略

  3. 超时控制: 设置合理的API超时时间,保证用户体验

  4. 结果格式化: 确保返回的数据结构清晰,便于AI理解

相关推荐
SEO_juper4 小时前
AI SEO实战:利用人工智能提升网站排名与流量的完整策略
人工智能·搜索引擎·百度·ai·seo·数字营销
L.EscaRC4 小时前
【AI基础篇】长短时记忆神经网络LSTM的解析与应用
神经网络·ai
Francek Chen4 小时前
【自然语言处理】预训练04:预训练word2vec
人工智能·pytorch·深度学习·自然语言处理·word2vec
视觉&物联智能6 小时前
【杂谈】-制造业变革:机器人与自动化引领新时代
人工智能·ai·机器人·自动化·aigc·agi·deepseek
陈果然DeepVersion7 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(十二)
java·spring boot·ai·kafka·面试题·向量数据库·rag
Elastic 中国社区官方博客14 小时前
在 Elasticsearch 中使用 Mistral Chat completions 进行上下文工程
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
2401_8414956418 小时前
【自然语言处理】轻量版生成式语言模型GPT
人工智能·python·gpt·深度学习·语言模型·自然语言处理·transformer
是Yu欸19 小时前
【博资考5】网安2025
网络·人工智能·经验分享·笔记·网络安全·ai·博资考
leafff12319 小时前
【大模型】多模态大语言模型(MLLMs):架构演进、能力评估与应用拓展的全面解析
人工智能·语言模型·自然语言处理