很多人觉得,全栈工程师只要能把前后端都搭起来,页面能跑,接口能通,任务就算完成了。但现实往往更骨感——上线五分钟,bug 涌现,用户投诉不断,排查到凌晨才发现是个简单的空值没处理。
写代码的人,也得会“找茬”
全栈工程师通常身兼多职:前端界面、后端逻辑、数据库设计、部署运维,样样都得上手。在这种节奏下,测试很容易被当成“可以往后放”的环节。可问题是,谁写的代码谁最清楚坑在哪。你刚写完一个用户注册接口,知道参数校验的边界条件是什么,这时候顺手写个单元测试,不过多花十分钟,却能在下次重构时救你一命。
比如你用 Node.js 写了个 API:
app.post('/api/register', (req, res) => {
const { email, password } = req.body;
if (!email || !password) {
return res.status(400).json({ error: 'Missing required fields' });
}
// ... save to DB
});
这个逻辑看起来简单,但如果没有测试覆盖,别人(甚至未来的你)改代码时可能不小心删了校验,导致系统接收空数据。而一段简单的测试就能守住底线:
it('should return 400 when email is missing', async () => {
const res = await request(app)
.post('/api/register')
.send({ password: '123' });
expect(res.statusCode).toEqual(400);
});
测试不是 QA 的专属
有些团队有专门的测试人员,于是开发就抱着“反正有人测”的心态,把问题留到后期。但实际协作中,QA 更关注业务流程和用户体验层面的问题,底层的数据异常、边界情况、接口兼容性,往往还是得靠开发者自己提前发现。
一个典型的场景是:你在前端提交表单时忘了加 loading 状态,用户连点两次,结果订单生成了两笔。这种问题 QA 可能会报给你,但如果你在开发时写个简单的防重逻辑,并加上测试,就能避免后续扯皮。
自动化测试是效率工具,不是负担
很多人抗拒写测试,是因为觉得“开发时间都不够,哪有空写测试”。但真正的效率高手,反而更愿意花时间写测试。因为随着项目变大,手动验证每一个功能会越来越慢,而自动化测试一旦建立,每次提交代码都能自动跑一遍,发现问题立刻报警。
尤其是全栈项目,前后端联调频繁,一个小小的改动可能引发连锁反应。当你修改了用户模型字段,前端展示页突然空白,这时候如果有端到端测试(E2E),就能快速定位是数据格式变了,而不是前端组件崩溃。
不会测试的全栈,就像只踩油门不踩刹车
开车不能只靠加速,刹车同样重要。写代码也一样,推进功能是能力,保证稳定更是本事。全栈工程师掌握测试技能,不是为了转行做测试工程师,而是让自己的产出更可靠、迭代更安心。
从最简单的单元测试开始,到接口测试,再到集成测试,逐步搭建自己的质量防线。你会发现,那些曾经让你半夜被叫醒的 bug,正一个个消失在发布之前。