从数据库到结构化用例:一套可落地的测试智能体架构

三层智能体架构

在企业环境中,测试用例生成不是"写几条文本"的问题,而是:

  • 如何精确读取数据库需求

  • 如何稳定生成结构化用例

  • 如何保证结果可控

  • 如何嵌入现有系统

  • 如何控制生产风险


目录

  1. 问题定义:企业真正要解决什么

  2. 为什么纯 RAG 不可持续

  3. 三层智能体架构设计

  4. 数据访问层:SQL Agent 实现(含代码)

  5. 规则生成层:Case Agent 实现(含代码 )

  6. 约束校验层:结果控制机制

  7. 与现有系统的集成方式

  8. 什么时候不适合使用智能体

  9. 生产环境风险控制

  10. 测试工程师能力演进趋势


一、问题定义:企业真正要解决什么

典型企业场景:

  • 需求沉淀在关系型数据库

  • 需求数量大、更新频繁

  • 测试用例需结构化输出

  • 需要自动入库

  • 不希望重构现有系统

本质问题是:

构建一条自动读取 → 自动生成 → 自动校验 → 自动入库的稳定链路。


二、为什么纯 RAG 不可持续

常见做法:

  • 文档向量化

  • RAG 召回

  • 直接生成用例

现实问题:

  1. 文档是模糊数据

  2. 每次生成结果不同

  3. 难以保证覆盖率

  4. 无法精确字段过滤

数据库中的数据是精确数据。

所以架构必须围绕数据库设计,而不是围绕文档设计。


三、三层智能体架构设计

系统拆分为三层:

  1. 数据访问层(SQL Agent)

  2. 规则生成层(Case Agent)

  3. 约束校验层(Validator)

整体架构:

三层职责:

  • 第一层保证数据精确

  • 第二层负责生成逻辑

  • 第三层控制风险


四、数据访问层:SQL Agent 实现

1. 定义结构化返回模型

复制代码
from pydantic import BaseModel
from typing import List, Any

class SQLResult(BaseModel):
    sql: str
    explanation: str
    data: List[Any]

设计原则:

  • 强制结构化输出

  • 禁止自由文本


2. 构建 SQL Agent

复制代码
@agent(
    model=deepseek_model,
    result_type=SQLResult,
    dependencies=[db_connection]
)
def sql_agent(user_query: str):

    return f"""
    根据以下数据库结构生成查询SQL。
    
    数据库结构:
    {schema_info}

    用户请求:
    {user_query}

    返回:
    - SQL语句
    - SQL解释
    - 查询结果
    """

3. SQL 校验机制

复制代码
@result_validator(sql_agent)
def validate_sql(result: SQLResult):

    forbidden = ["delete", "update", "insert", "drop"]

    for word in forbidden:
        if word in result.sql.lower():
            raise ValueError("禁止写操作")

    if result.data is None:
        raise ValueError("查询结果为空")

    return result

执行流程:


五、规则生成层:Case Agent 实现

1. 定义用例结构

复制代码
class TestCase(BaseModel):
    title: str
    steps: List[str]
    expected: str

class CaseResult(BaseModel):
    cases: List[TestCase]

2. 构建 Case Agent

复制代码
@agent(
    model=deepseek_model,
    result_type=CaseResult
)
def case_agent(requirements: list):

    return f"""
    根据以下需求生成测试用例。

    规则:
    1. 输出JSON
    2. 包含正常流程与边界场景
    3. 每条用例包含title, steps, expected
    4. 不生成无关内容

    需求:
    {requirements}
    """

3. 用例生成图

这张图体现:

  • 智能体协作

  • 数据流向

  • 可替换结构


六、约束校验层

复制代码
@result_validator(case_agent)
def validate_case(result: CaseResult):

    if len(result.cases) == 0:
        raise ValueError("未生成测试用例")

    for case in result.cases:
        if not case.steps:
            raise ValueError("步骤不能为空")
        if not case.expected:
            raise ValueError("预期不能为空")

    return result

校验层作用:

  • 防止格式错误

  • 防止空输出

  • 保证结构完整


七、与现有系统集成方式

推荐方式:

  • 封装 REST API

  • 输入需求ID

  • 返回 JSON

  • 原系统入库

无需重构数据库。


八、什么时候不适合使用智能体

不建议使用场景:

  • 需求数量极少

  • 业务逻辑简单

  • 已有稳定自动化规则

智能体适合:

  • 需求规模大

  • 规则复杂

  • 更新频繁

  • 需要批量生成


九、生产环境风险控制

必须增加:

  • 数据库只读权限

  • SQL 白名单

  • JSON Schema 校验

  • 敏感数据脱敏

  • 日志隔离

  • 批量限流

智能体不是风险来源。 缺乏约束才是。


十、测试工程师能力演进趋势

未来测试工程师的核心能力:

  • 数据结构理解

  • 智能体设计能力

  • 校验机制构建能力

  • 架构思维

真正的竞争力不是写多少脚本。

而是:

是否能设计一个可控、可扩展、可验证的智能体系统。

相关推荐
数字新视界12 分钟前
信创动环监控品牌的技术架构及应用解析
数据库·物联网·需求分析·机房管理·动环监控
宇宙第一小趴菜24 分钟前
五、Oracle vs MySQL 架构深度对比笔记
mysql·oracle·架构
qq_4542450337 分钟前
ClineRule系统提示词
人工智能·架构
BerryS3N40 分钟前
深度解析 LangChain V1.3:架构演进、核心源码剖析与企业级应用落地指南
架构·langchain
学网安的肆伍1 小时前
【046-WEB攻防篇】注入工具&SQLMAP&Tamper编写&指纹修改&高权限操作&目录架构
前端·架构
海兰1 小时前
【高速缓存】RedisVL 高级查询(全文搜索、混合搜索和 多向量搜索)
数据库·人工智能·redis·缓存
DBA_G2 小时前
GBase 8s数据库大对象存储详解
数据库
sbjdhjd2 小时前
SQL 注入零基础详解:原理、手工注入流程与 Sqli-Labs 靶场实战1~5关和第9关思路
数据库·sql·计算机网络·web安全·网络安全·网络攻击模型·安全架构
某林2123 小时前
ROS2 + WebRTC + MQTT 异构系统架构
架构·系统架构·机器人·硬件架构·webrtc·ros2