
【测试基础】02-软件的生命周期和软件的测试流程很多刚入行测试的同事问我第一步应该学什么我给的答案从来不是测试用例怎么写、bug怎么提而是先把软件生命周期和测试流程这条主线搞清楚。为什么因为这两个概念决定了你日常工作的节奏、你该在哪个环节介入、你该重点关注什么。没有这条主线你做测试就是东一榔头西一棒子——今天点点界面明天跟着别人瞎忙根本谈不上系统性和可复用性。这篇文章我把这两个核心基础拆开揉碎讲清楚你照着捋一遍心里就有谱了。1. 软件生命周期整体认知为什么必须先搞懂流程1.1 什么是软件生命周期它到底解决什么问题软件生命周期英文叫Software Development Life Cycle通常缩写为SDLC。说白了就是一个软件从“有这个想法”到“最终不再使用被淘汰”的整个经历过程。你可以把它类比成一个人的一生孕育需求提出→ 出生开发完成→ 成长持续迭代→ 成熟稳定维护→ 衰老逐渐弃用。软件也一样它不是一个一次性的静态产物而是一个动态演化的实体。那为什么测试人员必须先把这个搞懂呢我遇到过不少新人对测试的理解就停留在“开发写完了代码我上去点一点看有没有问题”。这个理解不能说全错但它把测试放到了开发之后是一个被动响应的工作模式。真正懂行的人知道软件生命周期定义了测试的介入时机和介入方式。你在需求阶段就能发现“这个功能逻辑根本说不通”的问题成本可能是1等到上线后再发现成本可能就是100甚至1000。这个成本差距就是生命周期理论存在的核心价值。从行业大环境看现在主流的开发模式已经从传统的“先想清楚再做”演变为“边想边做、快速验证”生命周期模型也随之发生了很大变化。但无论怎么变生命周期都离不开几个固定阶段需求分析、设计规划、编码开发、测试验证、部署上线、运维维护、迭代演进。测试人员和这几个阶段各有各的关系下面我会分别展开。1.2 生命周期与测试流程的关系一张总览图很多刚接触测试的人容易混淆两个概念软件生命周期SDLC和软件测试流程Software Testing Life CycleSTLC。我打个比方SDLC是整个项目的“大航海路线图”而STLC是航海途中的“每一次设备检查表”。两者互相嵌套、互相配合但不能等同。软件生命周期是从项目管理的全局视角出发关注的是“软件怎么做出来、怎么活下去”软件测试流程则是从质量保障的视角出发关注的是“每一步做出来的东西质量怎么样能不能达到标准”。测试流程是嵌入在生命周期里面的它不是独立于生命周期之外的另一个流程而是生命周期中“验证环节”的一个系统化展开。理论上测试应该贯穿整个生命周期——这就是业内常说的“测试左移、测试右移”。左移是指把测试活动往需求阶段、设计阶段推进右移是指把测试延伸到生产环境、用户使用阶段。这两个方向在传统的瀑布模型时代并不受重视但在敏捷时代已经是标配动作了。后面我会讲到具体的模型时再细化。2. 五大经典生命周期模型拆解特性对比与选型场景2.1 瀑布模型最经典但最容易踩坑瀑布模型是软件工程里历史最悠久、也是讲解生命周期时绕不开的第一个模型。它的核心理念是“阶段分明、顺序执行”需求分析→概要设计→详细设计→编码→测试→部署→维护。前一阶段完全完成后才允许进入下一阶段就像瀑布的水从高处一层一层往下流不会倒流。瀑布模型的优点是阶段划分清晰、管理过程简单各阶段都有明确产出物。这给测试人员带来的好处是测试政策可以非常明确地制定需求阶段评审需求文档、设计阶段评审设计文档、编码完成后执行测试用例、上线前做回归测试。每个环节都有“书面依据”后续出现问题可以清晰地追踪到底是在哪个阶段引入的缺陷。但瀑布模型有个致命短板它对变更的容忍度极低。需求一旦冻结进入设计阶段后面想改需求就意味着先行阶段的文档和代码都要跟着返工成本极高。我见过一个项目团队按照瀑布流程走了三个月产品经理突然说要调整核心业务逻辑结果整个测试计划全部推翻重来相当于前三个月的测试准备白做了。所以在实际工作中瀑布模型更适合需求明确、变更极少的项目比如一些政府类信息系统、航空航天软件、银行核心交易系统的外围模块等。2.2 V模型把测试阶段和开发阶段一一对应起来V模型是瀑布模型的一个重要变体也是测试人员必须掌握的一个模型。它的核心思想是把开发和测试的各个阶段进行映射单元测试对应详细设计、集成测试对应概要设计、系统测试对应需求分析。整个图形看起来像一个字母V左边是开发过程的各个阶段右边是测试过程的各个阶段中间底部是编码。V模型的价值在于它明确承认了测试不是一个独立于开发的阶段而是从需求分析阶段就开始有对应的测试活动。比如在需求分析阶段测试人员就可以开始编写系统测试计划和测试用例的框架在概要设计阶段就可以准备集成测试方案。这种“并行准备”让测试团队的准备工作量大幅前置测试不再是被动等待开发交付代码而是主动参与进来。但V模型的局限也很明显它本质上仍然是顺序执行的思维模式测试活动依然是在编码完成之后大规模执行需求变更的问题并没有真正解决。此外V模型中的“测试”仍然偏向验证缺少对需求本身是否合理、设计是否优秀的质疑环节。对于测试人员来说V模型是从“开发完了才测”到“测试提前介入”的一个过渡性的关键思维转变。2.3 螺旋模型与W模型迭代思想引入测试参与更进一步螺旋模型是巴里·鲍姆提出的风险驱动模型。它的核心思路是把项目分解为多个迭代周期每一个周期都经历“制定计划→风险分析→工程实施→客户评估”四个环节像旋转楼梯一样一圈一圈往上螺旋推进。这个模型的创新点在于把“风险分析”显式化要求团队在每个迭代周期都评估风险并制定应对策略。测试在这种模型里不只是验证也是风险发现工具——很多测试用例本身就是围绕高风险点设计的测试结果直接反馈到下一轮的风险评估中。W模型则是将瀑布模型和V模型进一步结合强调开发和测试的双V并行。开发侧的V和测试侧的V通过编码阶段连接在一起形成“W”的形状。W模型的实践意义在于它对测试的介入要求更早从需求评审阶段就必须有测试人员在场而不是像V模型那样等到设计阶段。同时W模型把测试文档体系串起来了需求测试计划→设计测试方案→编码后单元测试→集成测试→系统测试→验收测试一条链全串上。从测试从业经验来说W模型比V模型更适合作为测试流程的“思想底座”。因为W模型更强调测试的全程同步开发做需求分析时测试做需求测试、开发做概要设计时测试做概要测试、开发做详细设计时测试做详细设计测试。层层对应这样每一层的缺陷都能在当层就被发现不会流到下一层才暴露。这也是为什么很多测试课程强调“测试不只是最后验收的那一道关卡”。2.4 敏捷开发模型主流实践测试的核心角色已变如果说前面几种模型是“计划优先”的典型代表那么敏捷开发模型就是“响应变化优先”的代表。敏捷的核心价值观包括个体和互动高于流程和工具、可工作的软件高于详尽的文档、客户合作高于合同谈判、响应变化高于遵循计划。常见的敏捷实践有Scrum、Kanban、XP等其中Scrum是目前最流行的框架。在敏捷项目里测试人员的角色发生了根本性变化。传统模型中测试是独立的阶段、独立的团队敏捷模型中测试被融入迭代中测试人员和开发人员在同一个迭代周期里共同工作。单位时间内版本的交付节奏从“几个月一个版本”变成“一到四周一个迭代”测试人员必须在极短的时间内完成需求理解、测试设计、用例执行和缺陷跟踪。这就带来了几个关键变化第一自动化测试不再是可选动作而是必要动作因为人工测试根本跟不上迭代节奏第二测试人员必须具备业务理解和测试设计的双重能力因为你没时间等产品经理写完又长又细的需求文档你得快速理解user story然后直接设计测试点第三测试尽量做到持续集成中每次代码提交都自动触发冒烟测试有问题立刻反馈给开发而不是等攒了一堆bug再集中处理。我遇到过很多从传统项目转型做敏捷的测试同学初期非常痛苦核心痛点在于“没有详细需求文档怎么做测试”。但实际做下来发现敏捷反而逼着你直接和产品经理、开发对话信息丢失更少测试效率更容易提上去。2.5 模型对比总结与选型建议说了这么多模型我整理一个对比表格帮你快速把握它们各自的核心差异和适用场景。模型核心理念测试介入方式适用场景典型风险瀑布模型严格分阶段、顺序执行开发完成后集中测试需求稳定、变更少变更代价极高V模型开发与测试阶段映射需求阶段起测试并行准备测试流程规范度要求高的项目需求变更仍难应对螺旋模型风险驱动、迭代演进测试作为风险发现工具高风险、大规模项目对风险评估能力要求高W模型开发和测试双V并行全程参与、层层对应重视过程质量的中大型项目文档成本较高敏捷模型快速迭代、持续反馈测试融入迭代自动化为主需求变化快、互联网类产品文档缺失、回归压力大实际选型不可能只看理论还得结合团队规模、客户关系、合同约束、公司流程成熟度等因素。我的建议是作为测试人员你不必纠结于“哪个模型最好”而是必须理解你当前所处的项目用的是哪种模式然后根据模式特点去调整自己的测试策略。你硬要把敏捷那套自动化节奏套在瀑布项目上或者拿瀑布的完整文档要求去逼敏捷团队最后都会非常别扭。3. 软件测试流程完整拆解从需求评审到测试报告3.1 测试流程五阶段总览软件测试流程STLC在业界大体分为五个阶段需求分析、测试计划、测试设计、测试执行、测试报告。不管项目用的是什么生命周期模型这五个步骤的逻辑顺序是基本稳定的。区别只在于每一步的深度、输出物形式和迭代次数。我见过不少测试新手一上来就急着写用例、点界面连“需求分析”这一步都省了。这是最大的误区。需求分析是整个测试流程的地基地基不稳后面全都是空中楼阁。你连这个功能到底要解决什么问题、边界是什么、竞品怎么做的都没搞清楚写出来的用例能有质量吗所以下面我把每个阶段都展开讲一下每个阶段我会附上我这些年做项目时的实操经验。3.2 需求分析与需求评审测试最容易被忽视的黄金期需求分析阶段的核心任务有三块第一理解业务背景搞清楚“为什么做这个功能”第二梳理显式和隐式的需求点显式需求是需求文档里明确写的隐式需求包括性能要求、安全性要求、易用性要求等非功能性需求第三识别需求中的模糊点、矛盾点、缺失点尽早提出疑问。需求评审是这个阶段最重要的活动。企业经常提“测试前置”具体执行起来就是让测试人员参加需求评审而且不是坐在那里当听众是要带着问题清单去参加这个字段的长度限制有没有明确这个按钮点击后的异常分支是怎么处理的这个页面在弱网环境下表现如何兼容到哪些平台和版本需求文档提到的指标是够合理这些问题大部分产品经理一个人答不全需要拉上开发、UI、运维一起讨论。测试在这个环节的作用不是“挑刺”而是“查漏补缺”。这里我要特别提示一个新手常犯的错误拿到需求文档不仔细读直接就开始按自己理解写用例结果写完发现和真实需求对不上。正确做法是第一遍通读文档掌握整体逻辑第二遍精读每个模块的规则第三遍画出业务流程示意图第四遍列出所有存疑点去和产品经理确认。经过这四步再动手写用例才不会返工。需求文档如果有版本更新一定记得同步更新自己的理解和用例不然被测到的东西是旧逻辑浪费时间和资源。3.3 测试计划阶段确定策略、资源、排期的关键一环需求确认之后进入测试计划阶段。测试计划的核心产出物就是《测试计划文档》一个合格的测试计划至少要包含这几个部分测试范围测什么、不测什么、测试策略功能/性能/安全/兼容性的测试方法和深度、资源安排谁负责哪块、环境需求测试环境怎么搭、需要哪些数据、排期计划每个阶段的时间节点、风险与应对措施。我在写测试计划时有一个习惯就是在“测试范围”里明确列出“不测什么”。你以为范围界定是项目经理的事不这个部分测试人员最清楚——有的模块在本次迭代里只是静态展示不涉及核心逻辑那就没必要安排全量用例有的模块是纯文案修改可以直接跳过自动化回归。把“不测什么”写清楚一方面能让测试资源集中到重点区域另一方面也能提前和项目经理、产品经理对齐预期避免后期扯皮。排期计划这块我给新人一个比较实用的经验公式功能测试的执行时间 用例总量 × 单用例平均执行时间 × 系数通常取1.2~1.5。这个系数用来覆盖沟通、返工、环境故障等时间损耗。很多新人排期时只见森林不见树木把一天8小时全部算作有效执行时间最后必然翻车。实际上你一天能集中精力投入执行的有效时间可能只有5到6个小时再加上中途查bug、和开发扯皮实际的用例执行速度远低于你的预期。留出安全边际是对自己负责也是对整个项目进度负责。3.4 测试设计从TestCase到测试数据的一整套准备测试设计是整个流程中的技术核心直接决定了测试执行的效率和发现的缺陷数量。测试设计阶段的任务包括编写测试用例、准备测试数据、搭建测试环境、制定测试数据的构造规则等。这一步最能区分一个测试工程师是“初级”还是“高级”。测试用例的书写本身有很多方法论比如等价类划分、边界值分析、因果图法、判定表法、场景法、正交实验法。这些方法不是选修课而是必修课。设计用例时我推荐以场景法为主线辅以等价类和边界值来补充分支细节。先把用户的主要操作路径走通正常流程再插入各种异常分支支付失败、网络超时、参数为空、并发重复提交等用例放进去才会形成一张完整的天罗地网。测试数据准备是新手最容易忽略的环节。你写用例时说要验证“用户名长度为6-12位”那执行前就要准备好6位、12位、5位、13位、空值、特殊字符等不同长度和内容的数据。很多测试环境只有少量基础数据导致执行过程中临时造数不仅效率低还可能破坏数据的真实性比如在正式回归环境里造了脏数据影响后续测试。所以设计阶段就应该把测试数据需求列出来提前和开发、DBA一起准备好一套干净可控的数据集合。最好准备一套“数据字典”每一批数据是干嘛用的、什么状态、关联哪些用例都写得清清楚楚后面排查问题时就能省很多时间。3.5 测试执行与缺陷生命周期从发现到关闭的完整链路测试执行阶段就是把设计好的用例拿到被测系统上去逐条验证。看起来很简单实际操作中需要关注的细节非常多。首先执行之前要确认环境就绪服务版本是你要测的版本吗数据库里是干净的数据吗第三方依赖服务可用吗这些基础检查不做一旦执行过程中报错你根本分不清是代码问题还是环境问题。执行过程中要如实记录每一步的结果。通过就标记通过失败就要写清楚失败的具体步骤、预期结果和实际表现的差异并附上日志、截图、接口返回等证据。很多测试同学刚开始写bug报告时只有一句话“点击按钮没反应”。这种bug提交方式会让开发非常头疼开发得反复向你确认重现步骤、被测环境、相关日志。优秀的bug报告应该是“让开发不问你任何问题就能稳定复现”。这个基础的差距在团队协作中就体现出来了。缺陷生命周期管理也是一个专业基本功一个bug从发现到关闭通常走的是“新建→指派→修复→复验→关闭”的流转路径。如果缺陷验证不通过还得重新打开并发回给开发。在缺陷流转的各个环节都应注意及时更新状态不要出现“bug已经改好了但状态还挂在新建上”这种混乱局面。测试人员是缺陷生命周期的主要“推动者”你懈怠了整个流转就会卡住最终影响的还是版本交付质量。执行阶段另一个关键动作是回归测试策略的制定。每修一个bug不能只验证这个bug本身还要检查它的修复是否引入了相邻模块的新问题。最稳妥的做法是每天执行完合理数量的回归用例而不是把所有回归都留到版本发布前的最后一天突击。我自己的经验是建立“核心用例回归集”里面包含主流程、高频使用功能、历史重点缺陷对应的验证用例每次版本更新都先跑这套核心回归剩余次级用例按优先级和风险度安排抽测。这套做法在敏捷迭代里尤其管用。3.6 测试报告与上线评估测试的最后一道闸口测试执行结束后进入测试报告阶段。测试报告不是简单罗列“总共发现了多少个bug”而是要给项目决策层提供一个清晰的质量结论当前版本能不能上线质量风险有哪些哪些已知问题可以接受哪些必须堵住才能放行一份合格的测试报告至少包含以下内容测试概览测试范围、执行轮次、用例执行率、缺陷统计分析缺陷总数、严重等级分布、遗留情况、缺陷密度、收敛趋势、关键风险评估哪些模块还不稳定、性能瓶颈点在哪里、哪些问题决定上线后影响面、测试结论通过/有条件通过/不通过。其中缺陷收敛趋势图非常有用它是按周期统计新增缺陷和关闭缺陷的数量曲线如果新增缺陷数持续走低、关闭缺陷数持续走高说明质量在向好的方向发展如果临到上线前新增缺陷数反而飙升那就要谨慎了说明可能还有大块逻辑链没走通。最后就是上线评审与线上监控。在上线前测试要提前准备好冒烟用例上线后第一时间执行线上冒烟验证确保核心链路可用。我的做法是提前准备一个“线上冒烟清单”它只覆盖最核心的十几个功能点比如登录、支付主链路、首页加载、数据列表查询等。服务器一发布完测试同学立刻按清单快速验证半个小时内给出“线上可用”或“紧急回滚”的结论。这个动作看着不起眼但关键时刻是能给团队保住颜面的。4. 生命周期与测试流程的对应实践测试人员在各阶段的职责清单4.1 不同生命周期阶段测试分别要做什么既然生命周期模型决定了测试的介入程度那我在下面把测试在各个生命周期阶段的核心动作列一份清单你可以直接当作自检表用。生命周期阶段测试核心动作输出物备注需求阶段需求评审、需求澄清、可行性评估、识别隐含需求需求问题清单、测试初步思路尽早识别需求缺口设计阶段设计评审、接口评审、可测试性分析测试方案初稿、接口测试清单检查设计是否存在逻辑漏洞编码阶段单元测试支持、代码走查、冒烟测试准备冒烟测试用例集与开发同步反馈系统测试阶段全面执行功能、接口、性能、安全测试测试执行记录、缺陷报告重点关注全局集成链路验收测试阶段支持用户验收、演示场景准备验收测试报告提前准备验收演示环境发行阶段发布冒烟测试、线上监控线上冒烟报告半小时内给出放行/回滚结论维护阶段缺陷修复验证、回归测试、只增迭代测试回归测试报告关注存量功能干扰影响从这个表里你可以看到测试不是某一个“阶段”而是贯穿始终的一系列连续动作。这也是为什么越来越多团队强调“全员质量意识”——因为质量不是测出来的是设计和开发过程中一点点构建出来的测试负责的是“验证和反馈”这个环节保障质量这条链路没有断裂。4.2 测试团队内部流程测试计划评审怎么做很多人分不清“项目计划评审”和“测试计划评审”。项目计划评审是整个项目团队的排期对齐测试计划评审则是测试团队内部对未来一段时间测试工作的详细梳理。测试计划评审通常由测试负责人主持参与人员包括测试团队各模块负责人和测试经理。测试计划评审要重点审查的内容测试范围是否有遗漏测试策略是否合理排期是否匹配开发计划资源和技能是否能满足需求风险项是否考虑全面评审会不是走形式如果只是把计划文档念一遍就完事那这个环节的价值就被浪费了。我在评审会上通常直接提非常尖锐的问题比如“这个模块由谁负责他最近还在支持另一个项目时间冲突怎么解决”“接口自动化测试计划至少提了两周了为什么里面连一个接口清单都没有”这些问题如果不当场逼出结论到执行阶段就会变成事故。4.3 从流程反推质量建立质量度量体系流程走完了但你怎么知道流程走得对不对、结果好不好呢这就需要质量度量。质量度量并不是只在测试报告阶段做而是贯穿整个测试流程。我常用的质量度量指标有这么几个用例执行率实际执行用例数 ÷ 计划执行用例总数低于95%就说明执行不彻底一定有漏网之鱼。缺陷检出率该阶段发现的缺陷数 ÷ 总缺陷数需求阶段和设计阶段能检出缺陷说明前置工作做得好。缺陷修复率已关闭缺陷数 ÷ 总缺陷数低于80%时需要特别关注上线风险。漏测率线上发现的缺陷数 ÷ 测试阶段发现缺陷数 线上发现缺陷数。漏测率持续偏高说明测试设计存在系统性盲区。平均缺陷修复周期缺陷从提交到关闭的平均天数。周期越长说明开发效率和协作效率越低。这些指标并不是为了“考核谁”而是为了让团队知道质量水位在哪里。比如连续几个迭代漏测率都偏高那就该停下来分析是需求了解不透彻还是用例设计方法有问题还是测试环境与生产环境差异太大质量度量本质是倒逼流程改进的工具是测试从“执行者”走向“质量分析师”必经的路。5. 常见问题、认知误区与避坑指南5.1 新人最容易踩的四个坑我把这些年带新人过程中反复出现的四类问题整理出来你遇到了就可以直接对照排查。第一跳过需求分析直接写用例。这个我前面已经强调过但值得再说一遍。很多新人拿着一个功能模块就去写用例写完才发现核心业务逻辑完全理解反了。正确做法是先花时间把需求文档吃透画出业务流程图找产品经理确认疑点再动手。第二只关注功能流程忽视非功能需求。性能、安全、兼容性、易用性这些非功能测试很多新人压根没概念。实际工作中性能瓶颈、数据安全问题往往比功能bug更致命。建议至少在测试计划阶段列一下非功能测试的基本要求哪怕没有专职性能测试工程师也要做一个基础的压力摸底。第三bug报告写得像流水账。前面举过例子好的bug报告是“零沟通即可复现”。写清楚复现步骤、预期结果、实际结果、日志或截图、关键环境信息、严重级别、所属模块这几项缺一不可。不要小看这个基本功它直接影响开发修复bug的速度和团队协作的顺畅度。第四把回归测试当作纯体力劳动。回归测试确实是重复劳动居多但没有章法的回归测试效率极低还容易漏掉关键链路。正确做法是建立分级回归体系冒烟回归核心链路、常规回归受影响模块、全面回归整个系统。根据风险和变更范围决定走到哪一级既不浪费资源又不冒漏测的风险。5.2 生命周期和测试流程的结合经验敏捷模式下的实战心得最后聊一个很多从传统测试转敏捷的新人非常关心的话题在敏捷迭代模式下生命周期和测试流程怎么落地。敏捷迭代的节奏通常是一到四周这个周期本身就是一个“微型生命周期”。每个sprint里都有需求梳理、计划会议、开发执行、测试验证、评审回顾这些阶段只是它们被压缩得非常紧凑。在这种模式下我强烈建议测试人员做到以下几点第一必须参加每日站会。站会不是走过场你可以在会上及时了解到开发进展、识别到风险、同步测试阻塞问题。很多测试同学觉得站会浪费效率实际上站会是信息同步成本最低的方式。如果等测试执行时才想起问开发“你的接口出包了吗”整个迭代周期就来不及了。第二测试用例设计必须前置到需求梳理阶段。敏捷迭代中需求可能就几行用户故事描述很多信息是不完整的测试人员要主动通过对话去挖掘完整信息在sprint开始前就把测试点列出来。这不是增加工作量而是避免sprint结束后才发现测试覆盖严重不足。第三自动化测试必须跟上迭代节奏。手工测试在敏捷模式下能做但很有限你要尽早把核心用例做成自动化回归脚本每次代码提交都触发执行。没有自动化一个迭代做下来你根本没有时间做深度测试全时间都消耗在基础回归上。第四线上监控和反馈闭环要建立起来。敏捷模式下功能上线频率很高测试人员要关注线上用户反馈、错误日志、监控告警把线上的问题及时反馈到下一个迭代的需求列表里。这也是软件生命周期中“维护阶段”的质量动作不能因为版本交付频繁就连线上质量也不管了。5.3 流程重要还是技术重要我的真实看法这个话题经常在测试圈被讨论。我的观点是流程和技术都不是万能的但两者缺一不可。没有流程技术再好也是各干各的、无法形成合力没有技术流程再完善也执行不走你连自动化用例都写不出来怎么在两周一个迭代的节奏里保证质量不过如果非要让我在“流程感”和“技术能力”之间给新人一个优先建议我会说先把流程感建立起来。原因很简单技术能力可以在具体项目里慢慢磨练但流程感决定了你的工作方式和工作习惯决定你能不能在一个团队里有效协作。一个测试工程师如果连生命周期和测试流程都不清晰那他的技术水平再高也很难真正发挥出价值。我自己看简历面试测试工程师时有一个必问的问题“请你说一下你们项目的测试流程是什么你个人在其中的角色是什么。”这个问题非常能看出一个测试工程师是真正在做事还是停留在会写用例的层面。能把流程说清楚、能说明白自己在这个流程中做了什么优化、解决了什么问题的候选人通常综合能力都不会差。这篇文章讲的就是这个层面的基本功希望你能把它真正吃透变成自己工作方法论的一部分。