2026年05月26日 赛博日记

生成时间:2026-05-26 23:58

📝 今日概要

深度优化测试用例库与自动化测试框架,攻克 Vue 3 IPC 序列化难题,统一 Rule/LLM 断言策略,显著提升测试用例管理与自动化执行体验。

🔍 核心技术进展

测试用例库功能增强(ysb_ai_auto_electron)

  • 目录删除功能修复:移除根目录限制,允许删除所有非 “all” 的目录(包括根目录和子目录)

    • 根因:事件冒泡时,父组件用自身 props.directory.id 判断而非传入的 id 参数
    • 修复:改为直接基于传入 id 参数判断,移除 isRootDirectory 依赖
  • 标签筛选功能开发:实现多标签 OR 并集查询

    • 后端:buildTestCaseListWhere 增加 tags?: string[] 参数,用 string_contains: '"tag1"' 精确匹配 JSON 数组
    • 前端:硬编码标签列表 [待整理, APP-AI自动化, PC-AI自动化, 已整理, 执行方式:手工],支持下拉多选,已选标签以中文逗号分隔显示
    • 分页统计:改为 “第 x / y 页(共 N 条)”
  • 用例入库修复:解决勾选 “通过” 用例无法入库问题

    • 根因:前端固定传 includePassed: false,后端排除所有 passed 用例
    • 修复:显式勾选时(传 case_ids)不再按 include_passed 过滤,工作台入库改为 includePassed: true

接口自动化测试优化(LLM-api-test-tool)

  • 断言归一化:新增 app/assertion_normalizer.py,统一移除 JSON 格式强制校验

    • 规则:非 JSON 响应(如 image/jpeg)去掉所有 response_json.* 断言,默认只保留 status_code
    • 覆盖范围:Rule 和 LLM 模式均生效,避免 captcha 等返回图片的接口被错误断言
  • LLM 提示词配置化:在设置页暴露 4 类提示词模板

    • 支持切换、查看和编辑:测试设计(主)、JSON 校验重试附加、用例自修复、任务快照
    • 存储位置:data/llm_prompt_config.json
  • 接口选择交互优化:上传 OpenAPI 后直接展示所有接口,不再依赖 Tag 筛选,默认不全选

  • 单条用例调试修复:解决后端重启后 Task not found 问题

    • 新增 resolve_execution_context,支持通过 output_dirtask_manifest.json 回退查找

界面体验优化

  • 去状态列:用例工作台隐藏 “状态” 列,点击卡片直接显示运行日志
  • 移除问题提示模块:统一日志入口到用例工作台卡片
  • 文字可读性提升:浅色工作区统一改为深色字 #111827,去掉未勾选行 opacity: 0.55

💡 深度洞察与经验教训

  • Vue 3 IPC 序列化陷阱An object could not be cloned

    • 根因:Vue Proxy 对象(如 filterTags.value)无法通过 Electron IPC 的 structuredClone() 序列化
    • 解决:用 [...value]toRaw() 转换为普通数组
    • 教训:Vue 3 响应式数据在跨进程传输时必须脱代理
  • 事件冒泡与组件状态隔离:子组件事件冒泡到父组件时,父组件不应基于自身 props 状态判断,而应基于传入参数

    • 示例:handleDeleteDirectory 应判断传入的 id 参数,而非组件自身的 isRootDirectory
  • LLM 生成测试用例的边界:对 OpenAPI 未定义响应 schema 的接口(如验证码),LLM 可能错误生成 JSON 断言

    • 解决方案:后处理归一化,按接口响应类型自动裁剪断言
    • 启示:生成式 AI 需要后处理约束,不能完全依赖模型生成
  • 测试环境一致性关键:自动化测试的 Base URL 必须与手工测试环境一致,否则会导致超时等误报

    • 案例:文档 server 写 http://test.ysbdev.cn:80,但实际请求 https://testd.ysbdev.cn 导致超时
    • 规范:任务表单的 Base URL 应与手工环境对齐

🚀 未来行动设想

  • 标签管理演进:从硬编码改为数据库维护标签元数据,支持分类和使用率统计
  • LLM 提示词版本化:支持版本历史、A/B 测试、团队共享模板库
  • 测试用例质量门禁自动化:基于 case_quality_report.json 实现冗余检测、缺陷上报、覆盖率基线对比

📊 自动化统计

  • 捕获 Memory 数:2(2026-05-26.md、claude_2026-05-26.md)
  • 笔记更新数:0