乐于分享
好东西不私藏

【从0开始学AI】存量产品AI Coding自动化测试实战指南——无Yaml、无文档,如何从零构建自动化测试体系

【从0开始学AI】存量产品AI Coding自动化测试实战指南——无Yaml、无文档,如何从零构建自动化测试体系


背景:存量产品的测试困境

"这个系统没有接口文档,没有Yaml配置,连产品经理都换了两轮——测试怎么做?"

这是笔者在实际项目中遇到的真实场景。随着AI Coding工具(如Cursor、GitHub Copilot)的普及,存量产品(Legacy Product)的自动化测试成了一个新难题:没有标准化的接口定义文档、没有产品需求文档(PRD)、甚至连代码注释都残缺不全。

本文将介绍一套"逆向驱动 + AI协同"的测试方法论,帮助测试团队在没有Yaml、没有文档的情况下,高效完成自动化测试体系建设。


一、核心方法论:三层逆向分析法

1.1 为什么叫"逆向"?

传统自动化测试依赖 正向流程

需求文档 → 接口定义(YAML/Swagger) → 测试用例 → 自动化脚本

存量产品的困境是上游缺失,所以我们采用逆向追溯

代码/数据库 → 接口行为 → 测试用例 → 自动化脚本

1.2 三层逆向分析模型


二、第一层:代码层逆向——从代码中挖出测试点

2.1 工具链推荐

工具

用途

AI辅助功能

ASTExplorer

抽象语法树分析

可结合AI识别代码模式

SonarQube

代码质量扫描

自动标记业务逻辑函数

grep/ripgrep

日志/函数搜索

正则匹配批量提取

pSQL

数据库Schema逆向

自动生成ER图

2.2 实战案例:从订单模块提取测试点

步骤1:定位核心业务代码

# 搜索订单相关核心函数grep -rn "createOrder\|submitOrder\|payOrder" --include="*.py" ./src/

输出示例:

src/services/order_service.py:45:def create_order(request_data)src/controllers/order_controller.py:78:def submit_order()src/models/order.py:23:class Order(models.Model)

步骤2:AI辅助解读函数行为

提示词模板(用于AI Coding工具):
请分析以下Python函数,输出:1. 函数功能描述2. 输入参数及类型3. 返回值及类型4. 可能的异常场景5. 依赖的数据库表函数代码:[粘贴代码]

步骤3:从Model逆向生成测试数据模板

# 从Model定义逆向推导测试数据classOrder(models.Model):    order_id = models.CharField(max_length=32primary_key=True)    user_id = models.CharField(max_length=32)    amount = models.DecimalField(max_digits=10decimal_places=2)    status = models.CharField(max_length=16)    create_time = models.DateTimeField()# 推导测试数据:test_order = {    "order_id""ORD20260521001",  # 32字符上限    "user_id""USR00001",    "amount""100.00",           # 最大10位,小数2位    "status""pending",          # 常见状态值    "create_time""2026-05-21 10:00:00"}

2.3 代码层逆向输出模板

## 代码层逆向分析报告### 模块名称:订单模块### 分析日期:2026-05-21| 类/函数 | 业务含义 | 输入参数 | 输出 | 异常场景 ||---------|---------|---------|------|---------|| Order.create() | 创建订单 | user_id, items[], amount | order_id | 库存不足、用户不存在 || Order.pay() | 支付订单 | payment_method, amount | True/False | 余额不足、支付超时 || Order.cancel() | 取消订单 | reason | True/False | 订单已发货无法取消 |### 关键发现1. order_id格式:ORD + YYYYMMDD + 6位序号2. amount最大10位,小数点后2位3. status流转:pending → paid → shipped → completed

三、第二层:接口层逆向——从流量中还原API

3.1 流量捕获工具

┌──────────────────────────────────────────────────┐│                  流量捕获矩阵                      │├──────────┬───────────┬───────────┬──────────────┤│  环境     │   工具    │   捕获范围  │   适用场景   │├──────────┼───────────┼───────────┼──────────────┤│  测试环境 │ Charles  │ 全量HTTP   │ 完整API还原   ││  测试环境 │ Fiddler   │ 全量HTTP   │ 同上          ││  生产环境 │ MITMProxy │ 全量HTTPS │ 无法直接抓包时 ││  前端代码 │ DevTools  │ XHR/Fetch │ 快速定位接口  │└──────────┴───────────┴───────────┴──────────────┘

3.2 实战:用Charles逆向解析接口

Step 1:配置Charles代理

  1. 设置代理端口:8888
  2. 启用SSL代理:Proxy → SSL Proxying Settings → Enable
  3. 添加目标域名:*.api.example.com

Step 2:用户操作,捕获完整业务流程

引导用户或自己操作核心业务功能(如:下单流程),Charles会自动记录所有HTTP请求。

Step 3:导出为接口文档

# Charles导出为JSON格式File → Export Session → JSON格式# 输出结构[  {    "method""POST",    "path""/api/v1/order/create",    "host""api.example.com",    "headers": {...},    "body": {...},    "response": {...}  }]

3.3 接口逆向分析模板

## 接口逆向分析报告### 接口簇:订单相关| # | 方法 | 路径 | 功能 | 请求体关键字段 | 响应关键字段 ||---|------|------|-----|---------------|-------------|| 1 | POST | /api/v1/order/create | 创建订单 | user_id, items[], address_id, coupon_id | order_id, total_amount || 2 | POST | /api/v1/order/pay | 支付订单 | order_id, payment_method | pay_status, transaction_id || 3 | GET | /api/v1/order/list | 订单列表 | user_id, page, page_size | orders[], total_count |### 请求体结构推导```json// POST /api/v1/order/create 请求体{  "user_id""USR00001",        // string, 用户ID  "items": [                    // array, 商品列表    {      "product_id""PRD001",   // 商品ID      "quantity"2,             // int, 数量      "price"99.00            // decimal, 单价    }  ],  "address_id""ADDR001",      // string, 地址ID  "coupon_id": null             // string|null, 优惠券ID}// 响应{  "code"0,  "message""success",  "data": {    "order_id""ORD20260521001",    "total_amount"198.00,    "status""pending"  }}

四、第三层:业务层逆向——从日志中还原用户路径

4.1 日志分析的方法

工具选择:

日志类型

分析工具

关键字段

访问日志

ELK Stack

client_ip, path, status, response_time

业务日志

Loki + Grafana

user_id, action, biz_id, timestamp

错误日志

Sentry

exception_type, message, stack_trace

日志分析提示词模板:

分析以下业务日志,识别:1. 核心业务流程(按时间顺序排列用户行为)2. 关键决策点(分支条件判断)3. 异常处理路径(错误重试、补偿机制)4. 测试场景优先级排序日志内容:[粘贴日志片段]

4.2 用户行为轨迹还原

原始日志片段:2026-05-21 10:00:01 INFO [order_service] user=USR001 action=VIEW_PRODUCT prod_id=PRD0012026-05-21 10:00:15 INFO [order_service] user=USR001 action=ADD_CART prod_id=PRD001 qty=22026-05-21 10:00:30 INFO [order_service] user=USR001 action=VIEW_CART items_count=22026-05-21 10:01:00 INFO [order_service] user=USR001 action=CHECKOUT address_id=ADDR0012026-05-21 10:01:30 INFO [order_service] user=USR001 action=PAYMENT_START order_id=ORD0012026-05-21 10:01:35 ERROR [payment_service] user=USR001 order_id=ORD001 error=INSUFFICIENT_BALANCE2026-05-21 10:01:40 INFO [payment_service] user=USR001 action=PAYMENT_RETRY order_id=ORD0012026-05-21 10:01:45 INFO [payment_service] user=USR001 action=PAYMENT_SUCCESS order_id=ORD001还原业务流程:┌─────────┐    ┌─────────┐    ┌─────────┐    ┌─────────┐    ┌─────────┐│ 浏览商品 │ → │ 加入购物车│ → │  结算   │ → │ 支付开始 │ → │ 支付成功 │└─────────┘    └─────────┘    └─────────┘    └─────────┘    └─────────┘                                           ↓                                    余额不足(异常)                                           ↓                                      重试成功测试场景:1. 正常流程:浏览→加购→结算→支付成功2. 异常分支:余额不足→重试→成功3. 异常分支:余额不足→重试→仍失败→提示用户

4.3 业务流程图绘制方法

使用Mermaid语法快速绘制流程图:

graph TD    A[用户登录] --> B{是否VIP}    B -->|是| C[享受折扣]    B -->|否| D[标准价格]    C --> E[下单]    D --> E    E --> F{支付方式}    F -->|信用卡| G[扣款成功]    F -->|微信| H[扫码等待]    H --> I{支付结果}    I -->|成功| J[生成订单]    I -->|超时| K[订单取消]

五、AI Coding辅助测试用例设计

5.1 AI辅助测试用例生成流程

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐│  代码分析    │ →  │  接口还原    │ →  │  日志解析   │ →  │ AI生成用例  ││  (第一层)   │    │  (第二层)   │    │  (第三层)   │    │             │└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘      ↓                  ↓                  ↓                  ↓  识别类/函数        还原API结构         还原用户路径       输出标准化用例

5.2 AI生成测试用例的提示词模板

# 测试用例AI生成提示词## 输入信息- 业务背景:[系统功能描述]- 代码分析结果:[第一层输出]- 接口文档:[第二层输出]- 用户行为轨迹:[第三层输出]## 要求请生成测试用例,包含:1. 等价类划分(有效等价类、无效等价类)2. 边界值分析(最大值、最小值、临界值)3. 场景法用例(主流程、分支流程、异常流程)4. 异常测试用例(错误处理、超时、并发)## 输出格式| 用例ID | 用例标题 | 优先级 | 前置条件 | 测试步骤 | 预期结果 ||--------|---------|-------|---------|---------|---------|| TC001 | 正常创建订单 | P0 | 用户已登录,购物车有商品 | 1. 进入结算页... | 订单创建成功 |

5.3 实战示例:订单模块测试用例生成

AI输入:

业务背景:电商订单系统,包含创建订单、支付订单、取消订单功能接口信息:- POST /api/v1/order/create {user_id, items[], address_id, coupon_id}- POST /api/v1/order/pay {order_id, payment_method}- POST /api/v1/order/cancel {order_id, reason}代码分析:- amount字段:Decimal(10,2),最大99999999.99- status流转:pending→paid→shipped→completed/cancelled- 异常码:INSUFFICIENT_STOCK, INSUFFICIENT_BALANCE, ORDER_NOT_FOUND

AI输出:

## 订单模块测试用例### P0级用例(核心路径)| 用例ID | 用例标题 | 前置条件 | 测试步骤 | 预期结果 ||--------|---------|---------|---------|---------|| TC_ORDER_001 | 正常创建订单-使用优惠券 | 用户已登录,购物车有2件商品 | 1. 选择收货地址<br>2. 选择优惠券C01<br>3. 点击提交订单 | 订单创建成功,金额=原价-优惠金额 || TC_ORDER_002 | 正常创建订单-不使用优惠券 | 用户已登录,购物车有1件商品 | 1. 选择收货地址<br>2. 不选择优惠券<br>3. 点击提交订单 | 订单创建成功,金额=原价 || TC_ORDER_003 | 支付订单-余额充足 | 订单状态=pending | 1. 选择支付方式=余额<br>2. 点击确认支付 | 支付成功,订单状态变为paid || TC_ORDER_004 | 支付订单-余额不足 | 订单状态=pending,用户余额=50 | 1. 选择支付方式=余额<br>2. 点击确认支付 | 支付失败,提示余额不足 || TC_ORDER_005 | 取消订单-未付款 | 订单状态=pending | 1. 点击取消订单<br>2. 选择原因"不想买了"<br>3. 确认取消 | 订单取消成功,状态变为cancelled |### P1级用例(分支路径)| 用例ID | 用例标题 | 测试要点 ||--------|---------|---------|| TC_ORDER_006 | 创建订单-商品库存不足 | 验证库存不足时的错误提示 || TC_ORDER_007 | 创建订单-地址信息不完整 | 验证地址必填校验 || TC_ORDER_008 | 创建订单-优惠券已过期 | 验证过期优惠券不可用 || TC_ORDER_009 | 支付订单-支付超时 | 验证超时后订单状态回滚 || TC_ORDER_010 | 取消订单-已发货状态 | 验证已发货订单不可取消 |### P2级用例(异常场景)| 用例ID | 用例标题 | 测试要点 ||--------|---------|---------|| TC_ORDER_011 | 并发创建订单-同一商品 | 验证库存超卖问题 || TC_ORDER_012 | 重复支付-同一订单 | 验证幂等性保护 || TC_ORDER_013 | 金额边界-最大值 | 验证amount=99999999.99可正常处理 || TC_ORDER_014 | 金额边界-超限 | 验证amount>99999999.99被拒绝 |

六、自动化测试框架选型与落地

6.1 框架选型矩阵

┌────────────────────────────────────────────────────────────┐                    测试框架选型指南                          ├──────────────┬────────────┬────────────┬─────────────────┤   场景         推荐框架      适用语言     关键优势        ├──────────────┼────────────┼────────────┼─────────────────┤ 接口自动化     pytest      Python     丰富插件生态好    接口自动化     Newman      Node.js    Postman集成佳     UI自动化       Playwright  多语言     AI辅助定位强       UI自动化       Cypress     JavaScript 文档完善API简单  性能测试       k6          Go/JavaScript| 轻量门槛低     移动端测试     Appium      多语言     跨平台支持        └──────────────┴────────────┴────────────┴─────────────────┘

6.2 存量产品推荐:pytest + Allure

理由:

  1. Python生态成熟:与AI Coding工具集成最佳(如Cursor、Copilot均支持Python)
  2. 参数化测试强:@pytest.mark.parametrize轻松实现数据驱动
  3. 报告可视化:Allure生成美观的HTML报告
  4. 学习曲线平缓:测试人员无需太多编程背景

6.3 快速上手模板

# conftest.py - 测试配置import pytestimport requestsBASE_URL = "https://api.test.example.com"@pytest.fixturedef auth_token():    """获取登录Token"""    response = requests.post(f"{BASE_URL}/api/v1/login", json={        "username""test_user",        "password""test_pass"    })    return response.json()["data"]["token"]# test_order.py - 订单模块测试import pytestclass TestOrder:    """订单模块测试套件"""    @pytest.mark.parametrize("coupon_id,expected_discount", [        (None0),           # 无优惠券        ("COUPON10"10),   # 10元优惠        ("COUPON20"20),   # 20元优惠    ])    def test_create_order_with_coupon(self, auth_token, coupon_id, expected_discount):        """测试不同优惠券场景"""        # 测试步骤        pass    def test_pay_order_insufficient_balance(self, auth_token):        """测试余额不足支付失败"""        # 测试步骤        pass

七、实战案例:2周完成存量系统自动化测试覆盖

7.1 项目背景

  • 系统:某电商后台系统(10年历史,代码量50万行)
  • 痛点:无接口文档、无Yaml、无产品文档
  • 目标:2周内完成核心业务链路自动化测试

7.2 实施路线图

Week 1 Day 1-2:代码层逆向├── 定位核心模块(订单、支付、用户)├── AST解析识别业务函数└── 输出:模块分析报告.mdWeek 1 Day 3-4:接口层逆向├── Charles抓包还原API├── 导出JSON格式接口定义└── 输出:接口文档.jsonWeek 1 Day 5:日志层逆向├── ELK分析用户行为路径├── 还原核心业务流程└── 输出:用户轨迹图.mdWeek 2 Day 1-2:测试用例设计├── AI辅助生成用例├── 用例评审与筛选└── 输出:测试用例.xlsxWeek 2 Day 3-4:自动化脚本开发├── pytest框架搭建├── PageObject模式封装└── 输出:test_suite.pyWeek 2 Day 5:测试执行与报告├── 执行全套测试├── Allure报告生成└── 输出:测试报告.html

7.3 关键成果

指标

数值

还原API数量

127个

生成测试用例

386条

自动化覆盖率

78%

发现遗留Bug

23个

执行时间

45分钟(vs 人工4小时)

7.4 经验总结

  1. "三还原"原则:代码还原、接口还原、日志还原,缺一不可
  2. AI辅助关键点:提示词质量决定输出质量,模板化提示词效率最高
  3. 优先覆盖核心链路:P0用例优先,2周内先跑通主流程
  4. 文档即资产:输出的逆向文档可供后续维护,真正解决"知识流失"问题

八、AI驱动工具链——用Skills替代传统工具

在传统测试流程中,我们需要 Charles/Fiddler 抓包、SonarQube 扫描、ELK 分析日志——工具繁多、学习成本高。而在 AI Coding 时代,我们可以用一套 "AI + Skill" 方案替代上述全部工具,实现 一个窗口完成所有逆向分析

8.1 工具替代矩阵

┌─────────────────────────────────────────────────────────────────────────┐│                        AI Skill 工具链替代方案                           │├─────────────────┬──────────────────────┬─────────────────────────────────┤│    传统工具      │      替代Skill       │         核心能力                │├─────────────────┼──────────────────────┼─────────────────────────────────┤│ Charles/Fiddler │ agent-browser        │ 网页自动化、流量捕获、接口还原    ││ SonarQube       │ claude-code-guide    │ 代码分析、业务逻辑识别           ││ ELK/Loki        │ software-testing    │ 日志解析、业务流程建模           ││ Sourcetrail     │ claude-code-guide    │ 代码可视化追踪、依赖分析         ││ Postman         │ api-test-generator   │ API测试用例生成、接口验证        │└─────────────────┴──────────────────────┴─────────────────────────────────┘

8.2 核心Skill详解

Skill 1:agent-browser —— 替代Charles/Fiddler/Postman

能力: 网页自动化 + 流量捕获 + 接口逆向

触发场景:

  • 用户说"抓包"、"分析网页"、"还原接口"时使用
  • 需要访问网站、截图、分析页面结构时使用

使用示例:

# 场景:用 agent-browser 逆向分析电商订单接口# Step 1:打开目标页面agent-browser open https://shop.example.com/order/create# Step 2:执行用户操作(加购物车、结算)# ... 用户操作 ...# Step 3:捕获网络请求agent-browser network requests --type xhr,fetch# Step 4:导出接口JSONagent-browser network har start# ... 用户操作 ...agent-browser network har stop ./orders_api.har# 输出:完整的订单相关API定义

agent-browser 核心命令速查:

命令

用途

agent-browser open <url>

打开网页

agent-browser snapshot -i

获取页面元素快照

agent-browser screenshot

截图

agent-browser network requests

查看网络请求

agent-browser network har start/stop

录制HAR文件

agent-browser chat "分析这个页面的API结构"

AI自然语言控制


Skill 2:claude-code-guide —— 替代SonarQube/Sourcetrail

能力: 代码结构分析 + 业务逻辑识别 + 代码可视化追踪

触发场景:

  • 用户说"分析代码"、"理解业务逻辑"、"追踪代码调用链"时使用
  • 需要理解某个函数的作用、识别业务逻辑时使用

使用示例:

# 场景:用 claude-code-guide 分析订单模块业务逻辑# 输入:订单服务核心代码# 输出:# - 函数功能描述# - 输入输出参数类型# - 业务异常场景# - 调用依赖关系图claude-code-guide> 请分析以下Python代码的业务逻辑,输出:> 1. 函数功能描述> 2. 输入输出参数> 3. 业务异常场景> 4. 调用依赖关系>> 代码:> [粘贴代码]

核心能力:

  • 代码模式识别(识别CRUD、事务处理、权限校验等模式)
  • 业务逻辑提炼(从代码中还原业务规则)
  • 调用链追踪(追踪函数调用关系,还原业务链路)

Skill 3:software-testing —— 替代ELK/Loki

能力: 日志解析 + 用户行为轨迹还原 + 业务流程建模

触发场景:

  • 用户说"分析日志"、"还原用户路径"、"建模业务流程"时使用
  • 需要从日志中提取业务信息时使用

使用示例:

# 场景:用 software-testing 分析用户行为日志# 输入:原始日志片段2026-05-21 10:00:01 INFO [order_service] user=USR001 action=VIEW_PRODUCT2026-05-21 10:00:15 INFO [order_service] user=USR001 action=ADD_CART2026-05-21 10:01:30 INFO [order_service] user=USR001 action=CHECKOUT# AI分析输出:# - 用户行为轨迹图# - 核心业务路径# - 异常分支识别# - 测试场景优先级

核心能力:

  • 日志结构化解析
  • 用户行为序列识别
  • 业务流程状态机建模
  • 测试场景自动生成

Skill 4:api-test-generator —— 替代Postman

能力: API测试用例生成 + 接口验证 + 测试数据准备

触发场景:

  • 用户说"生成API测试"、"验证接口"、"创建测试用例"时使用
  • 需要基于已有信息生成可执行测试用例时使用

使用示例:

# 场景:用 api-test-generator 生成订单API测试用例# 输入:# - 接口路径:POST /api/v1/order/create# - 请求参数:user_id, items[], address_id, coupon_id# - 响应结构:order_id, total_amount, status# AI输出:# - 完整测试用例(Excel格式)# - 参数边界值测试数据# - 异常场景覆盖# - pytest兼容脚本

核心能力:

  • 接口定义 → 测试用例自动转换
  • 等价类划分 + 边界值分析自动应用
  • 测试数据自动生成
  • 支持导出为Excel/JSON/pytest格式

8.3 AI Skill协同工作流

┌──────────────────────────────────────────────────────────────────┐│                  AI Skill 逆向分析完整流程                         │└──────────────────────────────────────────────────────────────────┘Step 1:代码分析 (claude-code-guide)    ↓    输入:项目代码目录    输出:业务模块清单 + 函数关系图Step 2:接口还原 (agent-browser)    ↓    输入:用户操作行为    输出:API定义文档(JSON/HAR)Step 3:日志解析 (software-testing)    ↓    输入:系统日志    输出:用户行为轨迹 + 业务流程图Step 4:测试用例生成 (api-test-generator)    ↓    输入:前三步输出    输出:标准化测试用例.xlsx┌──────────────────────────────────────────────────────────────────┐│                     一条命令启动全流程                              │└──────────────────────────────────────────────────────────────────┘# 启动AI协同分析agent-browser chat "请分析这个电商系统的逆向测试能力,按以下步骤:1. 用claude-code-guide分析代码结构2. 用agent-browser抓取核心API3. 用software-testing解析用户日志4. 用api-test-generator生成测试用例"# AI自动按顺序执行,并输出完整报告

8.4 AI Skill调用速查表

需求

调用Skill

触发指令

网页抓包/接口还原

agent-browser

Skill: agent-browser

代码分析/业务逻辑识别

claude-code-guide

Skill: claude-code-guide

日志分析/流程建模

software-testing

Skill: software-testing

测试用例生成

api-test-generator

Skill: api-test-generator

API文档生成

api-doc-generator

Skill: api-doc-generator

测试报告生成

api-test-report

Skill: api-test-report

8.5 提示词模板库

模板1:代码功能分析

请分析以下[编程语言]代码,输出:1. 函数功能描述(用中文)2. 输入参数及类型3. 返回值及类型4. 可能的异常场景(至少3个)5. 依赖的数据库表或外部服务代码:[粘贴代码]模板2:接口逆向(结合agent-browser)请根据以下HTTP请求/响应信息,还原完整的API定义:1. 请求方法、路径2. 请求头要求3. 请求体JSON结构(含字段说明)4. 响应体JSON结构(含字段说明)5. 常见错误码及含义请求:[粘贴请求信息]响应:[粘贴响应信息]模板3:测试用例生成基于以下业务信息,生成完整的测试用例:- 业务场景:[描述]- 接口定义:[API信息]- 代码分析结果:[代码层逆向输出]- 用户行为轨迹:[日志层逆向输出]要求:1. 包含正常场景(主流程)2. 包含异常场景(错误处理)3. 包含边界值测试4. 输出格式:Excel兼容的表格请生成至少20条测试用例,覆盖率≥95%。

结语:没有文档不是借口,是挑战

存量产品的自动化测试确实更难,但并非不可能。"三还原方法论"提供了一条清晰的路径:先从代码中挖出业务逻辑,再从流量中还原接口定义,最后从日志中还原用户路径。三层逆向分析辅以AI Coding工具,可以大幅提升效率。

更重要的是,这个过程本身就是一种知识沉淀——你输出的逆向分析文档,将成为团队下一任接手时的"活文档",彻底告别"系统没人看得懂"的困境。