ARTICLE DETAIL

资讯详情

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

软件测试流程与测试规范文档全解析:从需求评审到上线验证

软件测试流程与测试规范文档全解析:从需求评审到上线验证 做测试这些年被新人和刚转行的朋友问得最多的一个问题往往不是“怎么用Postman”也不是“自动化框架怎么搭”而是“你们测试流程到底怎么走测试规范文档又是什么”。说实话这个问题比工具重要多了。工具只是手段流程和规范才是测试工作的骨架。一个项目如果没有清晰的软件测试流程测试人员就会变成想到哪测到哪的“敢死队”团队如果没有统一的测试规范标准文档每个人提交的用例风格各异、缺陷单写得像天书最后质量全靠运气。这篇就把我从功能测试到嵌入式、再到银行项目一路踩坑总结出来的流程和规范体系完整拆开讲。适合刚入行的测试新人也适合小团队里需要搭一套测试规范的同学照着落地就能少走很多弯路。1. 软件测试流程从提测到上线测试到底要过几道关很多新人以为测试流程就是从开发提测那一刻开始的拿到包就点点完就报bug。实际上真正的测试流程要早得多也从不止于“点点点”。一套成熟稳定的软件测试流程通常覆盖需求、计划、设计、执行、回归、上线验证六个阶段每个阶段都有明确的输入、输出和责任人缺一环后面就会出幺蛾子。1.1 需求评审测试介入的第一道门槛需求评审是测试最容易忽略、却又最值得投入的阶段。我见过太多项目开发吭哧吭哧写完了测试才拿到需求文档一看逻辑漏洞百出这时候再提问题就晚了。测试在需求阶段的核心任务不是“找茬”而是从可测试性的角度帮产品经理补漏洞。比如一个搜索功能需求只写了“支持关键词搜索”那就要追问关键词匹配的是标题还是正文是否支持模糊匹配特殊字符怎么处理搜索结果是按什么排序空结果页面长什么样这些边界情况和隐含需求如果不在评审阶段确认清楚后面用例设计就会漏场景执行阶段就会出现“这个我没考虑到”的争议。需求评审的产出物是经过确认的《需求理解确认单》或者打过标注的PRD测试人员要把自己对需求的理解用文字固定下来避免“我以为你懂了”的情况。变更管理也是从这个阶段就开始的需求一旦变更必须走变更流程同步影响测试计划、用例和排期不能口头说改就改。1.2 测试计划与用例设计把“测什么”变成可执行的任务需求稳定之后测试负责人的第一件事是写测试计划。一份合格的测试计划至少要包含测试范围、测试策略、资源安排、进度排期和风险评估。范围要写清楚“测什么”和“不测什么”比如这次版本只做功能测试性能测试放下一轮必须在计划里写明白否则最后扯皮。评估工作量的时候新人最容易犯的错是只估用例设计和执行的时间忽略了环境搭建、数据准备、缺陷沟通和回归测试的隐性成本。保险的做法是在估算时间上乘以1.3到1.5的缓冲系数尤其是涉及多端联调的项目。用例设计是整个流程中最吃功夫的一环。核心方法逃不开等价类划分、边界值分析、场景法、错误推测法和正交实验法。举个最简单的例子一个登录框要求输入6到12位密码等价类就是合法值、小于6位、大于12位、空值、非数字字符边界值就是6位、7位、11位、12位这四条线。这些方法本身不复杂难的是组合场景的覆盖。业务逻辑一复杂单一方法就漏场景了这时候我会用场景法把用户的主流程、备选流程和异常流程都画出来再配合正交实验法减少组合用例的数量。设计完的用例必须经过评审评审不是走过场而是让开发、产品和测试坐在一起拿业务流程图逐条对覆盖情况这一步能有效避免上线后才发现漏测。1.3 执行、回归与上线流程的临门一脚用例评审通过后就进入执行阶段。开发提测之后第一件事不是全量回归而是先跑冒烟测试。什么是冒烟测试就是把系统最核心的主流程快速过一遍登录能不能进、列表能不能加载、增删改查能不能通。冒烟不通过的直接打回给开发不要浪费时间在残缺的包上做深度测试。这一条规矩看着基础但实际操作中很多团队做得并不到位尤其是项目周期紧的时候测试一拿到包就开始全量跑结果跑出20个bug里有一半是环境问题或者基础功能没通导致的白白浪费了半天时间。冒烟通过之后才进入正式的功能测试和集成测试发现的问题统一进缺陷管理系统。缺陷从提交到关闭要经过一个完整的生命周期新建、指派、修复、验证、关闭被开发打回的要重新激活验证不通过的也要重新激活并备注原因。执行阶段的日报或周报建议用数据说话比如“新增缺陷数、遗留缺陷数、阻塞用例数”让项目经理能直观看到质量趋势。回归策略也要提前定是全量回归还是冒烟加重点模块回归取决于变更影响范围。上线前最后一轮回归必须保证用例全部执行完未执行的用例必须说明原因并经风险评估后签字确认。上线之后测试也不能直接撒手至少要观察一段时间的线上日志和监控数据确认没有线上问题才算真正闭环。2. 测试规范与标准文档把“经验”沉淀成“制度”流程解决的是“项目怎么走”的问题规范解决的是“人怎么干活”的问题。很多团队不是没有流程而是每个人对同一件事的理解不一样最后产出的文档五花八门。测试规范标准文档的价值就是让团队里任何一个测试人员接手项目都能按照统一的标准干活不用依赖“老员工口口相传”。这套文档体系说复杂也不复杂核心就四类计划类、设计类、执行类和报告类。2.1 标准文档体系测试项目应该建立哪些文档我把一个测试项目要用到的标准文档整理成了一张表新人照着这张表就能知道什么阶段该产出什么老员工也能用来查漏补缺。文档名称核心内容产出时机主要读者测试计划范围、策略、资源、排期、风险需求稳定后项目经理、测试团队测试方案技术选型、环境架构、数据准备方案测试计划之后测试工程师、开发测试用例用例编号、前置条件、步骤、预期结果用例设计阶段测试、开发、产品需求追踪矩阵(RTM)需求与用例的映射关系用例设计同步维护测试负责人、QA缺陷报告缺陷描述、复现步骤、日志、截图执行阶段持续提交开发、测试测试报告执行情况、缺陷统计、质量结论测试结束前项目经理、客户、高层这套文档里最容易被忽略的是需求追踪矩阵。很多团队从不维护RTM上线前自查漏测的时候只能凭感觉。我习惯在拿到需求清单的第一时间就建一个Excel每个需求模块对应哪些用例、用例状态是什么全部列清楚。这样到测试收尾时“我到底测完了没”这个问题就不是靠拍脑袋而是打开RTM一核对就知道。超过20条需求的迭代RTM的维护成本完全值得它能直接在版本质量评估会上撑起测试的话语权。2.2 用例编写规范什么样的用例算“好用例”测试用例是测试工作的核心资产但实际工作中很多人的用例写得根本没法看。常见的问题包括前置条件不写导致别人执行不了、操作步骤一步写了好几件事导致失败后定位不到具体环节、预期结果写“功能正常”这种主观描述导致无法判断结果。我团队里执行用例的规范是“四要四不要”用例标题要简洁明确要一眼看出测什么场景不要写“测试登录”“验证搜索”这种模糊标题。前置条件要写清数据准备和环境要求不要默认别人和你处于同一个状态。操作步骤要拆到最小可执行单元一步只做一件事不要在一段话里塞三个操作。预期结果要具体可判断要写“页面弹出‘保存成功’提示并跳转列表页”不要写“操作成功”。用例优先级也要规范定义。P0是核心主流程一旦失败直接阻塞发版P1是重要功能失败会影响主要使用场景但可绕过P2是普通功能失败不阻塞发版但需要修复P3是体验优化类问题。没有优先级体系的用例集执行的时候就会变成“全凭个人喜好选择先测什么”重要功能反而被排到后面。用例评审时我还会特别检查用例的可追溯性执行失败的用例一定要能对应到具体需求和模块这正是RTM要解决的事。2.3 缺陷提交规范一条好bug单的必备要素开发人员最痛恨什么样的bug单标题写“登录报错”正文写“我点登录就报错了你们自己看”。这种缺陷单传递的信息量几乎为零。一条合格的缺陷记录必须具备八个要素标题、所属模块、环境信息、前置条件、复现步骤、实际结果、预期结果、附件截图或日志。标题要写清楚“什么场景下发生了什么问题”比如“Chrome浏览器下使用手机号登录点击获取验证码无响应”比“登录验证码bug”要有效得多。复现步骤一定要能指导开发快速走到问题现场。如果缺陷是偶现的就必须备注出现概率、操作频率和观察到的规律同时保留好当时的日志因为偶现问题开发者复现不出来大多数情况下会先打回而测试手上没有证据就只能吃哑巴亏。遇到服务端问题我习惯把接口返回的status code、错误码、响应体一并粘贴到缺陷描述里这一个习惯能省去开发来来回回问“你抓包了吗”的大量沟通成本。缺陷的优先级和严重级别也要区分开严重级别描述的是对系统的影响程度优先级描述的是修复的紧迫程度。一个错别字可以是严重级别低但优先级高因为要赶版本一个数据库崩溃可以是严重级别高但优先级视触发场景而定两者不能混为一谈。3. 不同领域的流程差异TC8、嵌入式与银行项目怎么落地软件测试流程不是一把尺子量到底不同行业、不同技术栈、不同合规环境下流程的侧重差异非常大。如果只会做纯Web功能测试直接跳到嵌入式或者银行项目会觉得整个流程“全变了”。这里结合我接触过的两个典型方向说说流程怎么因地制宜。3.1 嵌入式软件测试与TC8规范流程如何向协议测试延伸嵌入式软件测试和普通应用测试最大的区别有两点一是硬件依赖性强很多问题必须结合真实设备才能复现二是质量要求往往与功能安全挂钩不能只测“功能对不对”还要测“失败的时候安不安全”。所以嵌入式测试流程里会多出好几个标准动作静态代码分析、单元测试、集成测试、结构覆盖率分析、硬件在环测试HIL等。这些动作不是可选项而是流程中的强制关卡。比如汽车电子项目里代码的语句覆盖率、分支覆盖率、MC/DC覆盖率往往都有明确指标要求达不到就不能签字放行。提到车载以太网就绕不开TC8测试规范。TC8是OPEN Alliance制定的一套以太网ECU测试规范覆盖物理层、链路层、网络层、传输层和应用层对报文格式、超时重传、错误帧处理这类内容做了非常细的规定。在嵌入式软件测试流程里引入TC8规范后测试计划就必须增加协议一致性测试环节用例设计要参照TC8定义的测试条目来写执行环境通常要用专业的测试工具模拟总线报文和故障注入。这一块的知识对新手来说门槛不低但思路和普通功能测试有相通之处都是先理解规范、再把规范转化成可执行的测试用例。区别在于普通测试的“规范”是PRDTC8的“规范”是协议文档而协议文档的严谨程度远高于普通PRD任何一个字段的位定义都不能靠“大概应该是这样”来猜。嵌入式项目的测试报告也和普通项目不一样。除了功能通过率还要包含代码覆盖率数据、静态分析结果、协议一致性测试结果等。这也是很多从Web方向转嵌入式测试的人最先不适应的地方流程里的“文档感”和“数据感”非常重没有数据支撑的结论在评审会上是站不住脚的。3.2 银行软件测试合规压力下的流程重灾区银行软件测试是另一个极端流程严谨到让很多互联网出身的人觉得“窒息”但正是这种严谨保证了核心系统的高稳定性。银行项目的测试流程有几个显著特点。一是接口联调测试比重极大绝大多数业务都不是一个系统独立完成的涉及核心系统、支付渠道、风控系统等一堆外部依赖测试环境里要做的第一件事就是把所有联调接口的可测性确认清楚。二是数据迁移测试是独立的大项系统改造版本经常涉及存量数据迁移迁移脚本的正确性、数据的一致性、边界值的处理每一项都要专门设计用例这部分占用的时间往往超出预期。银行项目的环境管理也有鲜明特征。开发环境、测试环境、准生产环境、生产环境四类环境分层严格权限隔离测试数据使用要脱敏。准生产环境的目的是模拟生产环境的行为但数据是脱敏的在准生产环境上通过不等于生产环境一定能通过所以上线演练成了流程里的标准动作。监管合规对测试文档也提出了更高要求测试计划、测试方案、测试用例、测试报告都要归档留存关键版本要能追溯到谁在什么时间基于什么数据做了什么测试。这套流程看上去很重但对银行这类系统而言一次生产事故的代价远远高于流程带来的效率损耗重一点反而是最稳妥的存活方式。4. 常见问题与排查技巧实录4.1 团队测试最容易踩的坑问题见得多了很多毛病是跨团队通用的。我做了一张高频问题排查表每一条都是真实场景里撞出来的经验对照着自查往往比闷头改用例更有效。常见问题根因分析排查思路与解决建议缺陷单质量低开发大量打回执行者缺少缺陷要素意识建立缺陷模板并在缺陷管理系统里设为必填评审不合格缺陷单直接打回用例评审走过场上线仍漏测评审只对用例格式不对业务评审前先花时间过业务流程图用RTM反向检查需求覆盖而不是一行行读用例测试环境不稳定用例执行中断环境变更没有管理和通知建立环境使用登记表环境变更必须提前在测试群公告保留稳定基线版本回归范围全靠感觉漏回归出了事变更影响范围没有系统分析每次提测必须要求开发提交代码变更说明测试据此圈定回归范围并写进计划偶现问题复现不了开发不认现场信息收集不足遇到偶现问题第一时间保留日志和截图记录操作时间轴有条件时录制屏幕第一条是新人最容易踩的坑。很多人以为缺陷写得不好只是态度问题实际上缺陷单写不好直接导致开发理解偏差、修复错误一来一回成本极高。如果团队没有硬性要求我建议测试负责人把缺陷模板做成系统里的必填项并在每周的质量例会上挑出典型案例做讲解比单纯要求“你们认真点”有效得多。第二条根子在于评审的组织方式不对用例评审的主角不应该是测试自己而应该是业务专家和开发测试要做的是把业务场景串起来讲请他们来判断“这个逻辑下还有没有遗漏场景”。很多团队跳过了这一步评审就变成了走个形式。4.2 我自己的几个实操心得和便利小技巧最后分享几个我实际工作中验证下来的小技巧。第一个是把RTM思维贯穿到用例设计的每一天不是等用例写完了再去补矩阵而是每设计完一个模块的用例马上把需求编号和用例编号挂上钩养成习惯之后漏测率会明显下降。第二个是用统一的缺陷描述格式我自己写缺陷单的固定模板是“操作场景具体步骤预期结果实际结果关键信息”这套模板在团队里推广后缺陷打回率下降了大半。第三个关于新手快速上手项目接手一个陌生项目的测试先不要急着看用例先去找项目的架构图、数据库表结构说明和接口文档把数据流跑通再回来看用例很多原来觉得莫名其妙的“预期结果”就有了解释。还有一个小技巧值得单独说修改测试计划和用例之前先看一下团队有没有持续集成流水线。如果有一定要把冒烟测试用例接入CI让每次提交代码后自动跑一遍发现基础功能挂了就拦住不让进测试环境。这个动作能极大减少测试人员拿到残包的概率也逼着开发在提测前自己关注基础质量属于流程上“花小钱办大事”的典型。没有CI条件的团队也要在提测清单里加上“开发自测报告”这一项让开发自己列出已自测的功能范围和已知问题信息差减少了流程走起来顺畅得多。一套测试流程和测试规范文档本质上就是把团队里“到底该怎么做测试”这件事用文字固定下来。它不是用来束缚测试人员的恰恰相反它是给测试人员兜底的。有了明确的流程测试人员可以在需求评审会上理直气壮地说“这个变更影响范围需要重新评估”有了规范的缺陷单测试人员可以在和开发沟通时拿数据说话而不是陷入“我感觉有问题”的拉扯。每一条规范和流程的背后其实都是前人在真实项目里用生产事故和上线故障换来的教训。新人最聪明的做法不是嫌流程麻烦而是先照着规范走一遍等理解每一步背后的原因之后再谈优化和裁剪。希望这篇拆解能帮你在测试这条路上少踩几个坑。
返回列表