一个人做开发,没有人给你测代码
我提交的代码,没有 QA 帮我回归,没有同事帮我 review。写错了,上线了,用户就是 QA。
所以我不得不自己写测试。不是"最佳实践",是"生存刚需"。
我的测试策略(不是大厂那套)
大厂要求覆盖率90%,但我一个人做50个平台,不可能每个都测到。我的原则是:
测什么:高风险 > 高频 > 高影响
优先级:
P0:支付、用户数据、登录 → 必须有测试
P1:核心业务逻辑(搜索、下单)→ 尽量有
P2:展示类页面 → 手动测就够了
P3:静态页面、配置 → 不用测
怎么测:够用就行
// 不是大厂的测试金字塔,是独立开发者的"够用测试"
describe('PaymentService', () => {
it('支付成功应该创建订单', async () => {
const order = await paymentService.processPayment({
userId: 1,
amount: 100,
platform: 'mishimao',
})
expect(order.status).toBe('paid')
})
it('余额不足应该返回错误', async () => {
await expect(
paymentService.processPayment({ userId: 1, amount: 999999 })
).rejects.toThrow('余额不足')
})
it('重复支付不应该重复扣款', async () => {
await paymentService.processPayment({ userId: 1, amount: 100, orderId: 'same' })
await expect(
paymentService.processPayment({ userId: 1, amount: 100, orderId: 'same' })
).rejects.toThrow('订单已支付')
})
})
测试的 ROI
坦白说,我只有30%的代码有测试。但这30%覆盖了所有支付、登录、核心业务——这些如果出bug会直接丢钱或丢用户的模块。
另外70%的代码——展示页面、配置、边缘功能——我用 E2E 手动测一遍就够了。不是偷懒,是算账:一个展示页的 bug 最多让我收到一条差评,但支付 bug 会让我直接赔钱。
我的测试工具链
- 单元测试:Jest
- API 测试:Supertest + Jest
- E2E:手动 + 上线前检查清单
写在最后
测试这件事,对于独立开发者来说,不是"要不要做"的问题,是"做多少"的问题。
不写测试的代码,就像没有刹车的三轮车——能跑,但你不敢快跑。
我现在的底线是:任何涉及钱的代码,必须先写测试再过。