ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

测试左移落地实操:敏捷团队如何把质量保障前置到需求阶段

测试左移落地实操:敏捷团队如何把质量保障前置到需求阶段 做了这么多年测试我越来越觉得“测试左移”这个说法被严重低估了。敏捷开发讲求小步快跑、持续交付可很多团队还是在用瀑布时代的节奏做事开发闷头写代码测试在迭代末尾被塞进一堆需求加班熬夜赶上线测出问题再返工。Shift-Left 的概念提出来就是想改变这种被动局面——把质量保证的动作从“最后一道关”挪到“最前面几道关”。这两年我在两个产品团队里完整推过测试左移其中一条产品线是 6 个开发、2 个测试的小型敏捷团队迭代周期两周另一条是 20 人左右的多团队并行项目。两种规模下踩过的坑、摸索出的办法都不同这篇文章把整个落地过程掰开揉碎讲清楚希望能给正在做敏捷转型的同行一点可抄的作业。1. 先搞清楚测试左移到底在“左”什么很多人一提测试左移第一反应就是“测试提前介入”“尽早测试”这个理解没错但太表面了。如果只是把测试人员叫进需求评审会、把测试开始时间提前几天那不是左移只是换了个时间点做同样的事。1.1 成本曲线才是左移的根本驱动力业界流传很广的一组数据需求阶段的缺陷修复成本是 1 倍设计阶段发现修复成本变成 3~5 倍编码阶段是 10 倍左右到了系统测试阶段是 20~40 倍如果流到线上被用户碰到几百倍都有可能。虽然这个数字各家统计口径不一样但趋势是共识缺陷发现得越晚修复代价越大。我见过最典型的一个项目一个支付相关的参数校验问题开发本地测的时候以为是前端传参顺序错了前端检查后觉得是后端没做容错两拨人扯皮两天最后发现是需求文档里对“金额为 0 是否允许提交”根本没有定义。这个缺陷如果需求评审时有人问一句一分钟就能解决等代码写完、联调完才暴露前后花了差不多一天半的人力。这就是左移要解决的核心问题——不是把测试动作变早而是把缺陷发现的时间点提前从而把修复成本压下来。1.2 左移的本质是质量责任的转移在传统模式里质量是 QA 部门的责任开发把代码丢给测试就像是把产品丢给质检员测试说“过”产品就能发。但敏捷开发里已经没有独立的“测试阶段”了每个迭代都要交付可运行的功能质量必须是整个团队的责任。我在推左移的时候给团队讲过一句很直接的话如果质量还只是测试人员的事那左移就永远做不成。左移真正的含义是让开发、产品、测试在同一个迭代里共同承担质量目标。开发要对自己的代码质量负责产品要对需求描述的质量负责测试要做的是把质量风险的识别能力前移而不是等着接活。1.3 左移不是“只往前”也不是“不要测试了”还有一个常见的误区是把左移和右移对立起来。左移是把质量工作前置但线上监控、灰度发布、故障演练、用户反馈收集这些“右移”动作同样重要。测试左移做得好线上缺陷减少了但不可能归零。真正完善的策略是两头都抓左移减少缺陷的产生右移快速发现和修复漏网之鱼。我见有些团队一听说左移把测试团队砍半全指望开发自测结果线上事故翻倍这就是矫枉过正。2. 动手之前这四项自查不过关先别急着左移测试左移不是照着流程文档念一遍就能推起来的。我见过很多团队轰轰烈烈开启动会两周之后又回到老路。原因不外乎四个前置条件没满足。在立项之前哪怕用半天时间也值得把下面这四件事过一遍。2.1 需求质量左移的第一道坎左移的第一步是需求阶段就介入但如果需求本身是一坨浆糊测试介入也没用。我们团队推到第二个月时做了一次统计发现迭代里将近 40% 的缺陷根源是需求描述不清晰、口径不一致、边界条件没定义。所以我的建议是在启动测试左移之前先给需求流程立规矩。至少要回答这几个问题需求描述里有没有明确的验收标准没有验收标准的用户故事测试无法设计用例。异常分支、边界值有没有定义过比如“用户输入超过最大长度怎么办”“并发请求怎么处理”。涉及多系统交互时接口字段、错误码、超时时间有没有约定如果这几点在需求评审时还是回答不上来那说明团队的需求质量还没到能左移的水平。这时候强行让测试去评审也只是去凑个人头而已。2.2 技术与工程基建没有地基别盖楼测试左移要求测试动作能嵌入到开发和交付流程里这需要工程基建支持。最基本的几条代码能不能在本地一键构建如果新同学拉代码要配置半小时环境测试左移就是空谈。有没有持续集成环境提交代码能不能自动触发编译、静态检查、自动化测试测试环境能不能快速创建和销毁我见过有的团队还在用一台公共测试服务器谁先占用谁先用后到的人只能等着这种状态下自动化测试的稳定性完全没有保障。测试数据能不能隔离多团队共用一套测试库用例跑着跑着数据被改了结果全是红的。这几条不满足后面所有左移动作都是在沙滩上盖楼。我见过一个团队很积极需求评审、测试用例前移都做了但 CI 都没有开发提交代码后测试手动拉代码部署结果还是回归到老流程。所以先补基建再谈左移这是顺序问题。2.3 团队协作模式跨职能组合是关键敏捷开发讲究特性团队一个特性从需求到上线由一个跨职能小团队端到端负责。测试左移的落地最理想的载体也是这种跨职能组合。开发和测试坐在同一个项目里、参与同一个迭代计划、开同一个站会信息同步的成本最低。如果团队还是“开发组”和“测试组”两个独立部门测试被项目管理者当资源调配谁有空就测谁的项目那左移很难生根。因为测试对业务的理解、对需求的参与都是断断续续的根本不可能做到“预防缺陷”。这里我想特别提一下敏捷开发的学习路径。很多人问我团队怎么快速建立敏捷共识我通常推荐 Rails 敏捷开发那本经典书的第三版虽然它讲的更多是 Web 开发的例子但对迭代节奏、用户故事拆解、持续集成的解释非常通俗拿来做团队共读材料比看一堆晦涩的敏捷理论强很多。团队的认知对齐比工具和流程的引入更花时间也更重要。2.4 工具链选型工具是为人服务的工具方面我的建议是“先思想后工具”。很多团队上来就买测试管理平台、用例管理工具结果用例写了一大堆和代码脱节、和需求脱节最后变成摆设。左移的核心工具其实很简单需求协同工具、CI/CD 平台、自动化测试框架、缺陷管理工具这四个够了。选型的逻辑不是“哪个功能多选哪个”而是“哪个能嵌入现有流程”。比如你们用 Jira 管理需求那就看测试用例能不能关联用户故事、执行结果能不能回传CI 用 GitLab CI 还是 Jenkins决定了自动化测试怎么触发。工具选得再花哨如果团队用不起来就是负资产。我在第二个团队推左移的时候一开始上了三个工具后来砍到两个半——砍掉的那个测试管理平台就是因为开发根本不看用例都躺在网页里还不如放在代码仓库里随代码评审一起走。顺便提一句现在有些人工智能驱动的敏捷框架比如 bmad 这类思路开始尝试用 AI 从需求描述里直接生成测试用例甚至测试代码。我自己试用下来的感受是这类工具在“补齐边界条件”和“生成基础脚本”上确实能省不少事但离“替代人判断业务逻辑是否正确”还差得远。左移的本质是人对质量的理解前置AI 只能是辅助——这个定位一定要清醒。3. 六个切入点测试左移落地的具体步骤前置条件准备好之后就可以按步骤推进了。我把整个落地过程拆成六个切入点从需求到线上每个切入点都有明确动作和产出物。3.1 需求评审测试视角从“听会”变成“共建”第一步是让测试真正参与需求评审而不是坐那儿旁听。光在场没用要带产出去。我要求测试人员在需求评审结束时必须输出三样东西
返回列表