2026年5月25日 赛博日记

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

📝 今日概要

深度优化接口自动化测试工具,核心聚焦文档精简、配置可塑性提升、断言策略对齐、以及运行日志可观测性增强。

🔍 核心技术进展

1. 接口自动化测试方案文档精简(来源:Cursor)

  • 将约960行文档精简至约180行,结构从11章收敛为5章
  • 删除冗余内容:角色分工、P0-P3落地表、流程编排线框、数据工厂Recipe、规划API长表、重复mermaid
  • 保留核心:技术方案(架构图+四层模型+流水线)、使用方式、质量门禁与CI、附录
  • 聚焦技术方案而非组织职责

2. Rule与LLM提示词配置能力(来源:Cursor)

  • 在设置页新增「LLM提示词」页签,支持4类提示词切换编辑:
    • 测试设计(主)
    • JSON校验重试附加
    • 用例自修复
    • 任务快照llm_prompt.txt
  • 后端新增 /settings/llm-prompt 相关API(GET/PUT/POST reset)
  • 配置存储在 data/llm_prompt_config.json,无需重启服务即可生效

3. 断言策略统一优化(来源:Cursor)

  • 去掉Rule与LLM路径中的JSON格式断言(response_json is not None等)
  • 新增公共逻辑 app/assertion_normalizer.py
    • strip_json_format_assertions - 按接口响应类型自动裁剪断言
    • 非JSON响应(如image/jpeg)自动去掉所有 response_json.*
  • 401状态码处理对齐:系统不用HTTP 401,鉴权失败统一用 status_code == 200 + response_json.code != 40001
  • Rule模式下鉴权类用例期望状态从401改为200

4. 接口选择与展示优化(来源:Cursor)

  • 去掉Tag筛选,改为直接展示并勾选全部接口
  • 接口列表表格调整:
    • 「说明」列改为「接口」,移到第一列
    • 默认不全选接口(enabled: false
    • 支持搜索、全选/全不选、批量控制Token注入

5. 运行日志可观测性增强(来源:Cursor)

  • 用例工作台卡片点击可弹窗查看运行日志
  • 修复运行日志展示:在断言失败时展示pytest实际发出的HTTP请求,而非 test_cases.json 快照
  • 日志顺序:
    1. 实际HTTP请求(pytest/requests已发送)
    2. 响应Body
    3. 用例定义(test_cases.json)
  • 移除「问题提示」模块、Summary.md摘要预览模块

6. API环境管理(来源:Cursor)

  • 设置页支持多地址管理、新增与切换
  • 地址列表存储在 localStoragellm_test_base_url_entries / llm_test_base_url_active_id
  • 修复切换bug:ensureValidState 覆盖问题

7. Bug修复与根因分析(来源:Cursor)

  • 单条用例调试报错:任务只存在内存里,后端重启后调试失败。修复:支持 output_dir 回退、task_manifest.json 持久化
  • 大量404失败:根因是测试环境网关路由只转发 /ysb-user/api/*,而Swagger中有20条无 /api/ 段的直连风格接口。建议运维确认或改用直连base_url
  • 断言错误:captcha类接口返回JPEG图片但被断言为JSON,已在Rule/LLM统一去掉JSON格式断言

8. 前端界面调整(来源:Claude)

  • 三栏布局:左侧用例固定,右侧Execution & Result独立滚动
  • CSS Grid实现 .workspace-grid 固定高度,每个 .panel 独立滚动
  • 全局文字颜色优化:浅色工作区不再使用浅灰字,提升可读性

9. 技术方案文档更新(来源:Cursor)

  • 在文档§2.3表格中明确标注「跨接口响应参数提取」未实现
  • 整理表格结构,改为三列:能力域 | 状态 | 说明
  • 新增「造数与断言速查」表,提供排障建议

💡 深度洞察与经验教训

洞察

  1. 文档减负的价值:从960行到180行,核心信息密度大幅提升。删除组织职责、落地计划等非技术内容,让技术方案更聚焦。
  2. 配置可塑性:将LLM提示词、Rule规则暴露到设置页,让测试策略可快速调整,无需修改代码或重启服务。
  3. 断言策略分层:不同接口类型(JSON/图片/HTML)应采用不同断言策略。统一使用 response_json is not None 是错误的,应按 content_type 自动裁剪。
  4. 401 vs 业务码:现代API设计多用业务信封(HTTP 200 + 业务code),而非HTTP状态码表达业务错误。测试工具需适配此模式。

教训

  1. 内存任务持久化缺失:初始设计任务只存内存,导致重启后调试失败。应一开始就考虑持久化(task_manifest.json)或 output_dir 回退。
  2. 环境路由与文档不一致:Swagger文档的接口路径与实际测试环境网关路由不一致,导致大量404。应在生成前做可达性预检或在文档中标注。
  3. 断言策略一刀切:初期对captcha/图片接口也断言JSON格式,导致正常接口误报失败。应按接口类型自动适配断言策略。
  4. 401状态码系统差异:假设鉴权失败返回401是错误的,实际系统使用HTTP 200 + 业务码。应先了解系统规范再设计断言规则。

🚀 未来行动设想

  • 实现跨接口响应参数提取,支持从上一接口响应中提取参数填入下游用例(如创建成功后返回ID,查询时使用该ID)
  • 为无 /api/ 段的接口在生成前做可达性预检,或在接口列表中标注"testd可能404"
  • 支持接口依赖编排(FlowEditor),按业务流程顺序执行用例
  • 数据工厂Recipe,支持预定义测试数据模板
  • CI集成脚本:解析 execution_report.json 做质量门禁检查(通过率、suspected_backend_defects、覆盖率)

📊 自动化统计

  • 捕获 Memory 数:1(Claude工作记录,含3个会话)
  • 笔记更新数:0(note-gen-sync目录下无最近24小时修改的.md文件)