V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
meetthebest
V2EX  ›  程序员

基于前端代码仓库切片 + 向量化 + Agent​ 的自动化测试方案

  •  
  •   meetthebest · 3 月 27 日 · 442 次点击

    最近在做一个自动化测试方向的 Agent ,核心思路是将前端代码仓库“切片”——即把组件、路由定义、字段校验规则、关键业务逻辑等拆成片段,通过 embedding 存入向量数据库,再配合一个 page-agent 接入 Kimi K2.5 模型。该 Agent 目前具备路由映射、字段规则解析、代码向量化检索、路由查询 tool 、页面跳转 tool 等能力,整体遵循 ReAct 范式,目标是实现一种能够理解代码语义、自主探索页面并执行验证的自动化测试。

    整体流程大致如下:

    1 、代码仓库切片:将前端仓库中的关键信息(路由、组件、表单规则等)拆成片段,通过 embedding 存入向量数据库;

    2 、Agent 决策与执行:page-agent 接入大模型( Kimi K2.5 ),结合 ReAct 模式,利用路由查询、页面跳转等工具,根据用户意图(如“测试登录流程”)从向量库中检索相关代码知识,生成测试步骤并执行;

    3 、闭环反馈:执行过程中如果遇到异常,Agent 可以根据报错信息再次检索相关代码片段,调整策略。

    目前有类似的开源实践吗?或者有哪些大佬在尝试么?这套功能有落地的可能性么?

    weixind
        1
    weixind  
       3 月 27 日
    代码不需要向量化。

    不要自己做什么 Agent ,用 claude code 生成测试用例,自反馈。failed 的要么改测试用例,要么改代码。

    ci 跑的时候 failed 也可以挂个钩子用 claude code 处理。

    要技术产出的也就包一层壳子跑 cc 完事。
    nc
        2
    nc  
       3 月 27 日
    给 Agent 一个 grep 就行了,Claude code 就是这么搞的
    Razio
        3
    Razio  
       3 月 27 日
    代码也向量,是不是抽象了。
    meetthebest
        4
    meetthebest  
    OP
       3 月 27 日
    @Razio
    如果将整个代码给大模型,大型项目的代码量可能很大,会暂用很多的上下文。代码向量化后,可以做到需要什么查询时候,更主要的是在页面中使用 agent 时,基于当前 DOM 结构进行分析时,无法纵观全局,基于代码向量分析,可以做到需要什么查询什么,模型分析我手头有什么有,在做策略。
    (仅个人思考理解~)
    meetthebest
        5
    meetthebest  
    OP
       3 月 27 日
    @weixind
    @nc 目前内部主要用 cursor 开发,cc 比较少尝试,不过基于上一楼的理解,我感觉有必要弄个 agent 或则用 playwright 来去做自动化也是 OK 的。cc 的模型上下文是很大,但是全量查可能没有向量化精准吧(个人理解~)
    weixind
        6
    weixind  
       3 月 27 日
    @meetthebest #5 可以查一下 anthropic 相关的文档,有聊为什么不做代码向量化的。你要做的这些 claude code 已经做过、踩过坑了。

    还有一点,不要让大模型分析 dom 结构,直接在代码里面使用 data-test-id 埋点,线上打包的时候去掉就可以了。
    meetthebest
        7
    meetthebest  
    OP
       3 月 27 日
    @weixind 了解了一下,感觉可以使用 data-test-id 和 代码切片 进行互补~
    我想实现的场景是类似这样子的,有 100 条测试用例(比如说测试同学写的),但是他们写的时候,不会知道我们代码里有 data-test-id 这些标记,大概形式是:
    case1: A 页面-详情-字段 F-必填
    case2: A 页面-详情-字段 F-输入范围 0-10000
    case3: A 页面-详情-提交按钮-正常提交
    比较偏自然语言描述,所以我才想基于代码切片去做检索,这样子 agent 不用教也能跑通比较长链路的页面操作。算最终理想吧,不过目前只是在尝试阶段也不清楚当前的方向有没有对😂
    weixind
        8
    weixind  
       3 月 27 日
    @meetthebest #7

    代码切片的思路是错的,放弃代码切片的方向。

    测试同学使用自然语言描述测试用例,,也要通过 cc 生成,让 cc 自己在需要节点加 data-test-id ,落地成 playwright 的 test_case 。不要在测试的运行时接入大模型。failed 的时候可以接入。
    meetthebest
        9
    meetthebest  
    OP
       3 月 27 日
    @weixind 好的,感谢大佬的建议和方向~
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   860 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:03 · PVG 06:03 · LAX 15:03 · JFK 18:03
    ♥ Do have faith in what you're doing.