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 等返回图片的接口被错误断言
- 规则:非 JSON 响应(如
LLM 提示词配置化:在设置页暴露 4 类提示词模板
- 支持切换、查看和编辑:测试设计(主)、JSON 校验重试附加、用例自修复、任务快照
- 存储位置:
data/llm_prompt_config.json
接口选择交互优化:上传 OpenAPI 后直接展示所有接口,不再依赖 Tag 筛选,默认不全选
单条用例调试修复:解决后端重启后
Task not found问题- 新增
resolve_execution_context,支持通过output_dir和task_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 响应式数据在跨进程传输时必须脱代理
- 根因:Vue Proxy 对象(如
事件冒泡与组件状态隔离:子组件事件冒泡到父组件时,父组件不应基于自身 props 状态判断,而应基于传入参数
- 示例:
handleDeleteDirectory应判断传入的id参数,而非组件自身的isRootDirectory
- 示例:
LLM 生成测试用例的边界:对 OpenAPI 未定义响应 schema 的接口(如验证码),LLM 可能错误生成 JSON 断言
- 解决方案:后处理归一化,按接口响应类型自动裁剪断言
- 启示:生成式 AI 需要后处理约束,不能完全依赖模型生成
测试环境一致性关键:自动化测试的 Base URL 必须与手工测试环境一致,否则会导致超时等误报
- 案例:文档 server 写
http://test.ysbdev.cn:80,但实际请求https://testd.ysbdev.cn导致超时 - 规范:任务表单的 Base URL 应与手工环境对齐
- 案例:文档 server 写
🚀 未来行动设想
- 标签管理演进:从硬编码改为数据库维护标签元数据,支持分类和使用率统计
- LLM 提示词版本化:支持版本历史、A/B 测试、团队共享模板库
- 测试用例质量门禁自动化:基于
case_quality_report.json实现冗余检测、缺陷上报、覆盖率基线对比
📊 自动化统计
- 捕获 Memory 数:2(2026-05-26.md、claude_2026-05-26.md)
- 笔记更新数:0