2026年06月22日 赛博日记

生成时间:2026-06-22 23:58

📝 今日概要

完成Web自动化测试平台的8项核心功能实现与Bug修复,涵盖高级模型配置、用例跳过机制、Agent输出宽容规则及防重试优化,并部署至正式服。

🔍 核心技术进展

Web自动化配置与模型切换

  • PC侧高级模型配置:在Web设置页新增高级模型配置区(API Base URL、Model Name、API Key),仅在测试计划重试阶段且配置了高级模型时自动切换,保持首轮执行效率。
  • Agent输出宽容通过规则:检测到 [WebAgent][LLM_AGENTOUTPUT_FAIL]no JSON candidate for AgentOutput 等模型输出校验失败标记时,若无业务失败信号则默认记为通过,区分模型问题与用例问题。

用例跳过机制

  • 计划级跳过配置:数据库新增 test_plans.skip_case_ids 字段(JSON数组),测试计划编辑页每条用例右侧新增「跳过」复选框,勾选的用例不跑Agent、不计失败、不重试。
  • 运行时跳过判定:未进入目标页面或操作元素不存在时触发跳过,不增加 runFailCount,统一日志协议 [WebAgent] YSB_CASE_SKIP {"category":"page"|"element","reason":"..."}

防重试优化

  • Wait防死循环:新增 wait_guard.py,每次wait前扫描页面可见文本+browser_state对照用例预期,满足时自动done,连续wait上限4次,click/scroll/navigate后重置计数。
  • Click防重复:区分Tab与Button策略——Tab禁止重复切换,Button允许索引变化重试;支持【】括号解析点击顺序;索引失效时自动扫描最新state返回新index;skeleton加载时阻止click;文案从 [点击防重复] 改为 [点击提示],不触发失败判定。

Bug修复

  • 日报企微通知失败明细泄露:移除第三节失败用例明细列表,仅保留失败日志看板链接+未解决条数+整体印象。
  • 传统UI报告链接未显示:CI实际文件名格式 {Platform}-{ENV}-{YYYYMMDDHHmm}.html 与解析逻辑不匹配,在 test-plans-report-filename.util.ts 增加对应正则。
  • 鸿蒙设备识别失败:从Windows注册表读取User/System PATH查找 hdc.exe,解决Electron进程未继承用户PATH更新的问题。
  • 文案准确性修正:区分「计划配置跳过」与「准备失败」,批量开始提示分别统计 runSkipCountplanPrepSkippedItems.length

代码与部署

  • 提交记录71c2150(dev/main),包含数据库迁移 20260622120000_test_plan_skip_case_ids,已通过Jenkins部署到正式服,容器 ysb_ai_auto_web_api-api-1 已重建。

💡 深度洞察与经验教训

  • 洞察:CI实际输出可能与文档不一致(如文件名格式),解析逻辑需覆盖所有实际格式而非仅参考规范;环境变量继承问题在Windows上IDE子进程常见,直接读注册表更可靠。
  • 洞察:Agent提示词需同步新增守卫机制(如点击顺序、防重复提示),否则模型无法理解并调整行为,出现空转(如tab↔按钮ping-pong)。
  • 教训:变量覆盖bug隐蔽但致命(如 ordered_click_targets = [] 覆盖解析结果),需显式检查所有显式赋值是否意外清空关键数据;统计文案需准确描述实际含义(「跳过」vs「准备失败」混用会误导排查)。
  • 教训:守卫提示词若未进入模型上下文,模型会尝试「重头执行任务」而非继续待执行项,提示词注入与拦截响应需配套设计。

🚀 未来行动设想

  • 实现测试计划智能重试策略:根据失败原因自动选择(模型输出问题→切换高级模型,环境问题→跳过)。
  • 记录Agent行为模式(如空转模式),用于后续优化提示词或自动判定。
  • 企微日报分层通知(失败汇总→链接→详细报告),平衡信息量与可读性。

📊 自动化统计

  • 捕获 Memory 数:2(memory/2026-06-22.md、memory/claude_2026-06-22.md)
  • 笔记更新数:0(note-gen-sync目录下最近24小时无新增.md文件)