基于前端代码仓库切片 + 向量化 + Agent 的自动化测试方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
meetthebest

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

  •  
  •   meetthebest Mar 27 756 views

    最近在做一个自动化测试方向的 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  
       Mar 27
    代码不需要向量化。

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

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

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

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

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

    测试同学使用自然语言描述测试用例,,也要通过 cc 生成,让 cc 自己在需要节点加 data-test-id ,落地成 playwright 的 test_case 。不要在测试的运行时接入大模型。failed 的时候可以接入。
    meetthebest
        9
    meetthebest  
    OP
       Mar 27
    @weixind 好的,感谢大佬的建议和方向~
    About     Help     Advertise     Blog     API     FAQ     Solana     918 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 22:36 PVG 06:36 LAX 15:36 JFK 18:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86