资讯详情

资讯详情

测试准入准出标准怎么定?从缺陷管理到发布门槛的落地指南

这篇内容想解决什么问题先说明一下测试准入准出标准规范这个名字一听就是偏传统软件测试方向的东西但别急着划走。我做质量保障和测试管理已经快十年见过太多团队其实不是不会测而是不知道怎么定义什么时候能开始测以及什么时候算测完了。这两个问题不解决测试过程就永远是感觉差不多了就发版最后出问题全靠运气。准入准出Entry Criteria / Exit Criteria本质上是一种门槛机制准入条件告诉你代码到什么程度才有资格进入测试阶段准出条件告诉你测试到什么程度这个版本才有资格走向用户。这套标准不管你是创业小团队还是成熟研发体系都能用区别在于颗粒度和严格程度。适合测试工程师、测试负责人、研发项目经理、质量保障QA同学阅读参考也适合刚转行做测试管理的朋友建立体系化思路。我在这篇内容里会把准入准出的设计思路、具体指标怎么定、流程怎么落地、以及我踩过的坑全部梳理出来。不会给你讲那种准入准出很重要的空话直接给你可以抄作业的标准模板和实操细节。1. 测试准入准出标准背后的核心设计逻辑1.1 没有准入门槛造成的混乱你大概率遇到过先说准入。很多团队测试工作乱第一乱就乱在入口。开发说代码写完了可以测了测试同学打开环境一跑冒烟用例挂了三分之一环境部署失败数据库数据全是脏数据接口文档和维护代码完全对不上。然后测试就只能一边等开发修一边自己搭环境一边还要同步给项目经理汇报进度为什么还没测完。这种事我见过太多次了。没有准入标准的团队表面上看起来是敏捷缩短了等待时间实际上是拿测试的时间去补开发的进度。代码提交质量不稳定、环境不可用、数据不干净这些问题不解决就硬着头皮开始测最后测试报告的结论往往也是错的因为底层数据不对用例跑出来的结果根本不可信。所以说准入标准不是用来卡开发的也不是测试团队给自己找存在感。它的真实作用是过滤掉不合格的交付物保证测试活动从一开场就建立在相对健康的基线之上。这就像你做饭之前要先看看食材新不新鲜锅碗瓢盆洗没洗干净不会把发霉的菜直接下锅对吧。1.2 没有准出标准的版本发布就是一场赌局再说准出。准出条件决定了这个版本能不能正常发布。没有准出标准的团队最常见的决策方式是测试测了两周好像没什么大问题了开发也说改完了要不就发吧。听起来合理但仔细一想就会发现漏洞没什么大问题是什么标准是主要用例通过率还行还是线上反馈还没来我见过一个真实案例。某移动端App版本测试执行率只有百分之六十多性能测试没做兼容性测试只覆盖了三台主流机型。但因为业务方催得紧版本还是发了。上线一周后线上反馈各种卡顿和闪退市场份额肉眼可见地掉。后来复盘才发现问题根本不是测试不够努力而是测试停止的条件从来没有被定义清楚。准出标准就是要解决这个什么时候才算测完的问题。它把模糊的差不多了变成具体、可量化、可以评审的指标。有了准出标准测试团队可以挺直腰杆说当前条件不满足我不能签这个发布结论而不是凭感觉来回拉扯。1.3 准入和准出是一套完整闭环缺一个都有问题准入和准出不能分开看。准入管起始质量准出管结束质量它们是同一个过程的两个端点中间是测试执行的质量。准入太松准出再严格也没用因为大量低质量用例跑出来的结果会让你误判准出太松准入卡得再严也没意义因为测试本身偷工减料最后照样拦不住问题。我在实际推行这套标准的时候一贯的主张是准出比准入更值得花时间设计。因为准入条件相对客观代码编不编译得过、冒烟测试过没过、环境能不能起这些都是非黑即白的。准出条件就复杂多了它涉及覆盖率、缺陷趋势、遗留风险、性能指标、兼容性范围需要结合业务判断弹性空间大也最容易被拍脑袋。另外有一点要注意准入准出标准不能是测试一个部门自己闭门造车定出来的。一定要拉上开发负责人、产品经理、项目经理一起评审确认。否则测试单方面定了标准开发不认产品不认执行起来就是一张废纸。后面我会讲怎么联合评审。2. 准入条件怎么定义才既不卡人也不漏事2.1 准入条件设计的五个核心维度准入条件到底应该包含哪些内容根据我做过的多个项目总结下来可以分成五个维度每个维度下面对应有具体的检查项。第一代码维度的完成度。开发自测是否完成单元测试是否编写并通过代码是否符合项目的编码规范有没有遗留的阻塞级问题。简单说代码在功能层面已经实现了需求描述的内容而不是先提交上来测试帮忙看看还没写完的部分。第二构建与冒烟测试。最新的代码能否在测试环境顺利编译构建部署后能否正常启动核心冒烟测试用例是否全部通过。这里强调最新代码是因为我见过太多测试环境跑的是上一个版本的包测了半天发现根本不是这轮要测的功能等于白忙活。第三测试环境的可用性。测试环境是否稳定关联的依赖服务数据库、缓存、第三方接口是否就绪测试数据是否准备完成。环境问题不解决测试执行就会一直被环境故障打断效率极低。第四需求与文档的确认。被测版本的需求范围是否确认过产品文档、接口文档、设计文档是否已同步到位。这一条经常被忽略但特别重要。文档缺失会导致测试用例本身就是错的测试执行变成了自嗨。第五缺陷状态的确认。阻塞级Blocker问题是否已经修复并验证通过。如果还有阻塞主流程的缺陷没有解决测试进去也跑不了两条完整的业务链路这时候开始测试纯属浪费时间。2.2 一份可以抄的准入检查单下面这份准入检查单是我在多个团队实际用过的版本你可以根据自己的项目复杂度做增删。它不是教科书式模板而是经历过工程实践、能直接用的落地版。检查项通过标准负责人需求范围确认本轮迭代需求清单已确认无未明确项产品经理代码提交状态功能代码已全部提交到指定分支无未提交模块开发工程师单元测试执行新增/修改模块单元测试编写完成通过率100%开发工程师静态扫描与代码规范代码规范检查通过无致命和严重告警开发工程师环境部署验证测试环境部署成功服务正常启动无关键报错测试工程师冒烟测试执行核心业务冒烟用例通过率100%测试工程师测试数据准备基础测试数据已准备完成无脏数据阻塞测试工程师文档同步接口文档、需求文档、设计文档已同步最新开发工程师阻塞缺陷处理无Blocker级未关闭缺陷测试工程师每一行都很简单但合在一起就是一道有效的过滤网。实际执行过程中冒烟测试通过率100%这一条最容易引起争议因为开发经常觉得冒烟用例太严苛了。我的建议是冒烟用例只覆盖核心业务链路和主流程不要贪多控制在20到30条左右。冒烟用例覆盖面太广会导致执行时间过长反而失去了快速验证的意义。记住冒烟测试的目的是验证能不能开始深入测试不是验证所有功能都没问题。2.3 准入评审会议怎么开才高效准入不是开发提交一个申请、测试默默检查一下就完事的建议走一次简短的准入评审会议。这个会不需要很长十五分钟到二十分钟足够关键是固定节奏、固定参会人。评审会议按这个流程走开发负责人汇报本轮交付范围和自测情况测试负责人反馈冒烟测试结果和环境检查结果产品经理确认需求是否都可测最后项目经理确认是否满足准入条件。如果有不满足的项目直接明确阻塞项和修复时限下次评审前必须完成修复。这里有个实际心得准入评审会议不要太频繁更不要每轮迭代都走一个重型评审流程。对于迭代型项目建议每周固定一个时间统一评审准入对于版本型项目建议在功能开发率达到80%到100%这个窗口期做一次准入评审。节奏太密集容易让团队厌烦太松散又起不到拦截作用。3. 准出条件怎么定才算是真正测完了3.1 准出条件里最硬的三项硬指标准出条件比准入条件复杂。我把它拆成几大类第一类是执行度指标第二类是缺陷指标第三类是质量指标。先从最硬的说起。执行度指标包括用例执行率和用例通过率。用例执行率的计算公式是已执行用例数 ÷ 计划执行用例总数 × 100%。我见过很多项目用例执行率只有70%多就签发了理由是没执行的那部分用例不影响核心功能。这话听着有道理实际上经不起推敲。你没执行的那些用例可能恰恰覆盖了出问题的模块。合理的执行率要求建议设置在95%以上剩余未执行的原因要逐个说明并且经过评审确认不影响发布。用例通过率的计算公式是通过的用例数 ÷ 已执行用例数 × 100%。这个指标要求达到多少合适如果是核心业务模块我建议100%通过非核心模块最低也要95%以上。通过率不达标意味着遗留问题太多此时强行发布就是把风险转嫁给真实用户。缺陷指标里最核心的参考标准是零致命缺陷、零严重缺陷这个没有商量余地。致命缺陷在这里指的是会导致系统崩溃、数据丢失、主要功能无法使用的缺陷这类缺陷一旦流到线上就是事故。不是零漏洞而是零问题至于轻微缺陷和一般缺陷可以根据实际情况评估是否豁免但需要走正式豁免流程而不是口头拍板。3.2 用缺陷收敛趋势判断缺陷是否已经测透缺陷趋势分析是准出评估里最容易做假、也最容易被忽略的环节。很多团队只看当前还有多少个Bug没关闭却从不去看整个测试周期的缺陷分布趋势。这里我要重点介绍一下缺陷收敛的判断方法。一个健康的测试周期中缺陷发现数量曲线应该是这样的测试初期缺陷数逐步上升中期达到峰值后期开始下降并且在准出窗口期趋于平稳。如果到了测试周期的后半段缺陷发现数量还在高位徘徊甚至上升说明质量远远没有稳定这时候绝对不满足准出条件哪怕测试用例都执行完了也不行。举一个具体例子。某Web系统测试计划三周每周的缺陷发现数量分别是60、45、42到最后一周还有35个新缺陷产生。这个趋势就是不收敛的说明测试执行虽然是完整的但代码质量波动很大后面上线的风险不可控。我当时直接否掉了发布申请让开发团队先解决影响核心流程的缺陷并做一轮自测等下一轮缺陷趋势真正下落之后再评估准出。实际操作中你可以做一个简单的表格来辅助判断每周记录新发现缺陷数、关闭缺陷数、遗留缺陷数。如果连续两周新发现缺陷数明显下降且遗留缺陷数持续减少基本可以判断缺陷已经收敛。3.3 遗留缺陷到底怎么处理分级与豁免机制准出标准不是要求所有缺陷都必须关闭这种零缺陷主义在现实工程中不切实际。合理的做法是分级管理加豁免机制。缺陷等级参考标准A级致命指系统崩溃、数据丢失、核心功能不可用必须全部清零B级严重指主要功能受影响、无规避方案必须全部清零C级一般指功能受影响但有规避方案可以留有少量但需要给出修复计划和评估影响D级轻微指界面文案、交互优化类问题允许带量上线但要登记下个版本修复计划。这里我多讲一点实际心得。C级和D级缺陷的豁免不能由测试一个人说了算必须经过缺陷评审会。评审会由项目经理主持产品经理、开发负责人、测试负责人共同参与逐条确认豁免理由和上线风险。豁免之后不意味着不管了缺陷仍然要进入下个迭代的Backlog待办清单里确保带病上线但不带病遗忘。3.4 性能指标和兼容性范围怎么设定除功能外准出条件还必须覆盖性能测试和兼容性测试的结论。很多团队功能测试做得很细一到性能测试就敷衍了事甚至干脆不做。我理解性能测试成本高、门槛也高但至少你要知道自己系统的核心业务指标是什么。性能指标的设定思路是核心接口的响应时间、吞吐量、错误率、资源利用率要在预期范围之内。具体阈值根据业务场景定比如一个电商系统的核心接口TP99响应时间建议不超过500毫秒错误率不超过0.1%在200并发下CPU使用率不超过70%内存使用率保持稳定不出现持续增长。这些数值不能拍脑袋最好基于线上历史数据和业务方的实际预期来定。兼容性测试的准出标准应该提前定义支持范围。所谓兼容性不是所有设备和浏览器都要测一遍而是明确规定要支持的操作系统版本、浏览器版本、分辨率范围或硬件平台在这个范围内测试通过就算满足准出条件。范围之外的设备属于尽力而为在风险备注里写清楚即可。4. 准入准出标准在团队里怎么落地执行4.1 标准文档只是第一步关键在共识很多团队认为制定标准文档是核心工作其实不对。真正难的是让标准在团队里被执行、被认同、被持续改进。文档定得再完美如果开发不配合产品不认可项目经理不重视那就是一张废纸。落地第一步是拉通共识。我建议你在标准起草阶段就拉上开发负责人、产品经理、项目经理一起参与而不是自己闷头写。起草完组织一次评审会议逐条讲解为什么需要这个标准、每条标准具体怎么检查、达不到标准会有什么后果。让所有人理解这是降低团队整体风险的手段而不是测试部门找事的工具。落地第二步是试点先行。不要一上来就在所有项目上强制执行选择一个执行力强、配合度高的项目先试运行一到两个迭代。试点期间收集反馈评估标准是否有不合理的条目及时调整然后再逐步推广到其他项目。这样做的好处是可以控制变革风险避免推行过程中大面积反弹。落地第三步是持续运营。标准不是一成不变的至少每季度回顾一次看看哪些条件过于严格导致交付卡壳、哪些条件过松形同虚设并结合项目实际进行调整。我见过一些团队标准定了之后就再也不动了结果过了半年标准里的指标和业务现状早就对不上了。4.2 借助现有工具把准入准出数据跑起来标准落地不能靠手工填Excel表格那样一方面效率低另一方面也不透明、容易扯皮。今天稍微成熟一点的团队都至少有用例管理工具比如TestRail、Xray或者禅道和缺陷管理工具比如Jira、禅道、PingCode这些工具天然支持准入准出执行数据的采集和追踪。选型思路很简单用例执行率和通过率从用例管理工具直接导出缺陷相关的数据从缺陷管理工具导出然后对这些数据进行汇总分析。如果你用的是Jira还可以直接把准入准出项做成工作流里的检查项让开发在流转单子时主动确认是否满足条件测试在关闭任务前确认准出数据是否达标。更进一步如果你的团队有CI/CD流水线可以把冒烟测试、静态扫描、单元测试这些环节接入自动化。比如构建结束后自动触发冒烟测试执行结果自动回写达到准入门槛才允许进入下一步流程。这种方式能最大限度减少人为干预执行效果最稳定。没有自动化条件的小团队也不用焦虑手工填写加评审会确认一样能把标准跑起来只是需要加入人工检查环节确保数据不被遗漏。4.3 准入准出评审会节奏怎么定结论怎么记录准入准出评审会需要在项目中固定节奏。我的经验是建议把它作为版本评审的一个固定环节而不是单独开会。比如敏捷迭代评审中在迭代开发完成、测试启动前花十分钟确认准入在迭代测试完成、准备发布前花十五到二十分钟确认准出。这样的方式不增加额外会议负担也更容易让关键角色到场。评审结论一定要有记录。记录内容包括评审时间、迭代或版本号、参与人、准入/准出各检查项结论、不满足项及其修复责任人、最终结论通过/不通过/有条件通过。有条件通过也是一种常用结论意思是主标准基本达标但仍有个别非阻塞性问题需要上线前修复修复后需要在指定时间内向测试反馈验证结果。这种情况下一定要写明后续跟踪人和跟踪时间避免有条件通过变成无限期带病上线。5. 常见问题与避坑实录5.1 准入太严开发抵制怎么办准入标准推行初期最容易遇到的问题是开发人员的抵制。抵触的原因通常来自两方面一是觉得多了一套流程增加了交付负担二是觉得测试标准太高影响了迭代节奏和绩效考核。我的处理思路是先区分流程手段和业务目标。我不建议直接和开发团队在流程上硬碰硬而是讨论一个核心问题你是愿意在测试环境多花半天把自测做扎实还是愿意在线上出了事故之后花三天处理客诉和复盘几乎所有做过线上事故处理的开发都能快速理解这个对比的意义。另外一个实际技巧是把准入检查里和开发强相关的项目尽量自动化。比如代码规范检查、单元测试覆盖率检查、构建结果校验这些都可以在CI流水线上自动执行开发提交代码后自动反馈结果不需要人为通知、催促。工具自动化的检查结果比人催人更客观也更容易被接受。5.2 准出指标齐全但质量事故照发问题出在哪有一种情况最让测试团队崩溃准出评审时所有指标都达标了缺陷趋势也收敛了性能也过了但上线后还是出了事故。这到底是标准没用还是执行出了问题我复盘过很多次类似案例结论大多数时侯数据本身没问题问题是数据背后的验证深度不够。比如用例执行率达到了98%但那2%没执行的用例恰好覆盖了最核心的下单流程缺陷趋势看着是收敛了但新增的缺陷集中在某个并发模块恰恰是这个模块在线上出了问题性能测试通过了但压测场景没有覆盖促销峰值流量特征。指标是健康的表象深层次是理解不深。要避免这种情况你需要做两件额外的事。第一件事是在准出评审时不仅看数据还要让测试负责人口头说明本次测试覆盖了哪些风险点、哪些风险点还没完全覆盖、剩余的疑虑是什么。第二件事是判断用例设计本身的合理性对照需求清单确认每个需求点是否都有对应用例而不是只看执行占比。5.3 指标被数字游戏玩坏怎么破标准有了就一定会有人针对标准本身进行博弈。比如为了提高用例执行率把某些大用例拆成很多小用例充数为了缺陷收敛趋势好看压低测试前期提交缺陷的数量为了让通过率好看把失败的用例标记为环境问题跳过。这些动作看起来很高明实际上是在摧毁整个准入准出体系的公信力。我的做法是建立抽查机制测试负责人定期对已关闭的用例和缺陷进行抽查复核抽10%到15%的比例重点核对失败用例的处理理由和缺陷关闭时的验证记录。一旦发现数据造假不仅仅是纠正数据的问题还要升级到绩效层面去沟通。长效机制是建立数据质量文化比建立指标考核文化更重要宁可指标难看一点也不要指标失去可信度。5.4 标准定了却执行不下去多半是缺少闭环复盘最后一个常见问题是标准本身设计得很完美但执行一段时间后大家就慢慢不看了。这种情况说明团队缺少复盘—改进—再固化的闭环机制。我推荐每个版本结束后都开一次简短的质量复盘会议程包括本轮准入准出执行情况回顾、各指标是否达标、未达标的原因分析、有哪些质量问题在前面环节没被拦截、下个周期准入准出标准需要做什么调整。这个复盘会不需要很长重点在于把标准和实际结果持续对照让标准不断进化。如果连续几个版本都没有任何质量标准被触发或调整我反而要警惕了。要么是你的标准定得太高导致大家直接放弃了要么是标准定得太低已经完全失去了过滤作用。无论哪种情况都需要及时介入和调整。最后再分享几点个人心得说到底测试准入准出标准规范最终解决的是质量管理的确定性问题。它不会让你的测试工作变得轻松甚至短期内会让流程感知上变得更重但它能让你在发布决策面前少一些运气的成分。我个人最大的体会是标准不是用来束缚人的而是用来帮助团队在压力面前保持一致和底线。没有标准的时候业务催得紧你很容易就松口了有了标准你可以把决策压力交还给流程本身而不是靠个人意志硬扛。如果你想从零开始引入这套体系我的建议是从最小的闭环做起——不要追求一步到位先把冒烟测试准入和缺陷清零准出这两条跑起来再逐步完善性能、兼容性、覆盖率等各项指标。跑通一个版本之后再拉上团队一起评估效果逐步扩大标准范围这样落地阻力最小效果也最扎实。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →