Vibe Tutorial
功能测试流程与自动化脚本

8.1 测试金字塔理论

Tip

很多新手怕写测试,觉得那是高级程序员才做的事。其实测试就是**“自动化的点检代码”**。就像工厂造好零件后,用机器自动扫描一遍有没有裂纹,而不是靠人眼去看。


1. 为什么要学这个?

想象你在造一辆车

  • 不写测试:你把几万个零件拼在一起,直接让试飞员上去开。万一刹车失灵,车毁人亡(线上事故),公司倒闭。
  • 写测试
    1. 先测一颗螺丝结不结实(单元测试)。
    2. 再测刹车片能不能装进轮毂(集成测试)。
    3. 最后让假人坐在车里在封闭跑道跑两圈(E2E 测试)。
    4. 确认没问题了,才卖给客户。

Vibe 定义:测试不是为了证明你“很牛”,而是为了让你敢改代码。有了测试,你把核心逻辑重写一遍,只要跑一遍测试全是绿的,你就敢放心上线。


2. 核心概念:测试金字塔 (The Testing Pyramid)

测试分三种,就像盖房子一样,底座要宽,塔尖要窄。

🧱 砖块层:单元测试 (Unit Test)

  • 这是什么:测试代码里的最小单位(通常是 1 个函数)。
  • 比喻:检查一块砖头硬不硬。
  • 特点
    • 极快:几毫秒就能测完。
    • 极便宜:不需要连数据库,不需要启动浏览器。
  • 例子
    • 函数:function add(a, b) { return a + b }
    • 测试:expect(add(1, 1)).toBe(2) (期待 1+1 等于 2)。如果不等于,报错。

🏗️ 组装层:集成测试 (Integration Test)

  • 这是什么:测试两个或多个模块连在一起能不能工作。
  • 比喻:检查门能不能装进门框里,会不会卡住。
  • 特点
    • 速度适中:可能需要连接一个测试用的数据库。
  • 例子
    • 测试:调用 注册API,然后去 数据库 查一下,看有没有多出一条用户记录。

🏎️ 验收层:端到端测试 (E2E Test)

  • 这是什么E2E (End-to-End) 就是从头到尾。模拟真实用户的操作。
  • 比喻:找个买房团,从进门开始,开灯、开水龙头、冲马桶,真的住进去试试。
  • 特点
    • 最慢:因为要真的启动一个浏览器(Chrome)。
    • 最真实:如果这个测试过了,说明用户真的能用。
  • 例子
    • 打开 vibecoding.com -> 点击“登录” -> 输入密码 -> 点击“确定” -> 看到“欢迎回来”。

3. 为什么新手容易放弃? (The Trap)

很多大公司(如 Google)早年犯过一个错误:倒金字塔。 也就是写了太多的 E2E 测试(几万个),忽略了单元测试

后果

  1. 慢到爆炸:跑一次测试要 10 个小时。开发人员改一行代码,要等第二天早上才知道对不对。
  2. 不仅慢,还脆:前端改了个 CSS 类名,把“登录”按钮从红色改成蓝色,结果几千个依赖“寻找红色按钮”的 E2E 测试全挂了。

Vibe 策略: 我们是独立开发者,时间最值钱。

  • 多写单元测试:逻辑复杂的计算(算钱、算日期),用 AI 生成单元测试,保住底座。
  • 只写关键 E2E:只测那条**“能让你收到钱”**的路径(注册 -> 付费 -> 看到内容)。只要这条路通的,样式丑一点也没关系。

4. 真实案例

Story

CrowdStrike 蓝屏事件 (2024)

2024 年 7 月,安全公司 CrowdStrike 推送了一个几 KB 的小更新,导致全球 850 万台 Windows 电脑蓝屏。机场瘫痪、医院停摆。 原因:开发人员改代码时,未能验证输入数据为空的情况(空指针异常)。 本质:这是一个典型的单元测试就能发现的错误。如果他们有一个简单的测试用例 test('输入为空时,不应崩溃'),这个价值数十亿美元的灾难就能避免。

Vibe 心法:不要觉得改一行代码没事。墨菲定律告诉我们:凡是可能出错的事,必定会出错。测试就是那个永远不知疲倦、帮你检查每一块砖头的“安检员”。


5. 本章小结

  1. Unit Test(单元测试):测砖头,要多写,为了稳。
  2. E2E Test(端到端测试):测流程,测核心,为了钱。
  3. 不要头重脚轻:不要试图用 E2E 覆盖所有细节,否则你会因为测试跑太慢而放弃测试。