ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

只有标题?零需求信息下的系统化测试执行方法

只有标题?零需求信息下的系统化测试执行方法 手头接到一条测试任务标题栏只写了五个字测试文章标题01。正文空、关键词空、摘要空连个需求文档都没挂。我盯着这个任务看了半分钟第一反应是找负责人第二反应是打开文档开始拆。说实话这种只有个标题的任务在交付团队里一点都不罕见需求方可能只是占个位也可能默认你什么都知道。干等只能浪费时间更现实的做法是把测试文章标题01当成一个真实存在的被测对象用一套系统化的流程把它从空壳推进到可验收的结果。这篇文章就把我当时用的完整思路捋一遍。不管你是做软件测试、内容审核还是任何需要按需求验收的工作这套从空需求里榨出技术方案的方法都能直接拿去用。与其说我在解决一个具体项目不如说我在处理一种最容易被低估的工程问题信息不足时怎么靠结构化的追问和执行让交付结果依然站得住。1. 接到只有一个标题的需求时先别急着建用例库遇到只有标题的任务大多数人的本能是把需求扔回去等产品经理补充说明。但等待只有在对方明确表示会补的前提下才成立。更常见的情况是对方根本不知道怎么把需求描述清楚才会丢给你一个测试文章标题01。这时候你能做的最有价值的事情不是催文档而是把这个标题拆成可讨论、可验证的颗粒。1.1 把标题拆成可测试的验收点任何标题都是一个浓缩句。测试文章标题01我切成四块来看测试、文章、标题、01。然后逐个问这个词提示我什么动作测试是动作主体文章标题是被测对象01是编号或版本标识。连起来读最合理的解释是有一类涉及文章标题的功能或内容需要被验证而这次验证的对象编号是01。有了这个解释往下推就顺了。如果这是一个功能测试任务被测单位大概率是文章标题的创建、编辑、展示、检索、权限控制如果这是一个内容测试任务被测单位可能是某篇文章的标题样式、字数限制、敏感词过滤。不管哪种标题这个对象决定了所有用例都要围绕标题的产生和消费来设计。这一步做完我已经不觉得需求空了它至少给了我一个锚点。1.2 无文档状态下的需求澄清四连问在没有文档的时候我不急着拉一堆人开会先自己回答四个问题回答不了的再去找人测试对象是什么是一个功能模块、一次发布内容还是一条设备配置验证成功的标准长什么样是页面不报错数据落库正确还是报表数值匹配谁最终拍板说通过没有验收人测试范围永远没有尽头。边界在哪里测到哪一层算完哪些改动不属于本次范围这四个问题里第二个最关键。测试这个动作如果说不清成功标准后面所有用例都是空中楼阁。以测试文章标题01为例我最后得到的成功标准大概是在发布流程中标题能够按预期保存、回显且不符合规则的输入会被拦截并提示。这个标准就是整个测试方案的唯一坐标。后面写的每一条用例都要能回答它和服务于这个标准有什么关系。2. 没有需求文档也能圈定测试范围关键词反推法圈定测试范围最难的从来不是多测了而是不知道少了哪块。有需求文档的项目还能对着文档查漏没有文档就只能反向推。我的办法是把标题里的名词和动词还原成相关的功能清单再按风险排优先级最后把推断过程记录下来。2.1 从标题中的动词和名词反向还原功能清单拿测试文章标题01来说动词是测试名词是文章标题。从名词开始我列出和标题相关的所有常见操作创建新建文章时输入标题编辑修改已有文章标题校验标题长度、字符类型、重复标题、敏感词存储与回显保存后能否正确显示在页面和数据库中检索标题能否被搜索命中删除删除文章后标题相关引用是否也清理干净权限普通用户和管理员能否看到、编辑同一个标题再看动词测试它说明这个任务的性质是验证而非开发。所以上面这些功能点全部要转化成验证动作。功能清单一旦列出来范围就有了血肉。哪怕最后证明有些功能不在本次范围内这份清单也能当作和需求方沟通的底稿而不是空对空争论你到底要测什么。2.2 用风险优先级决定先测哪个列出来的功能点不会一样重要测试资源也永远有限。我一般用一个最简单的二维矩阵排优先级横轴是影响范围纵轴是出错概率。影响大且容易出错的两块最先测影响大但不容易错的排第二影响小概率低的最后测甚至可以不测。放在文章标题这个例子里创建和编辑属于影响最大、使用频率最高的操作肯定排最前存储和回显次之删除的关联清理排在最后因为即使出了问题影响面也相对可控。这样排下来哪怕时间不够我也能保证最重要的路径被覆盖到。很多测试翻车不是因为用例设计得不好而是执行顺序反了——先用大量时间测冷门功能等核心链路出问题时已经没有余量处理了。2.3 范围不清晰的兜底手段没有文档时圈定的范围一定包含大量推断兜底手段只有一条让真正有决定权的人确认。哪怕对方只是回一句先按你说的范围测也要把这句话存档。我习惯在测试方案里专门开一节范围假设把每一个基于推断的测试点列清楚标注若与预期不符请指出。这个动作不单是为了甩锅更是为了给后续验收留证据。项目是01后面很可能还有0203这次划定的范围会变成下一次回归的基线。有了书面记录下次就不需要重新猜一遍。没有文档的项目最怕的就是信息只存在于某个人脑子里把推断显性化是测试人员能为团队提供的最大增量价值。3. 一套零信息也能直接套用的测试用例骨架范围定完之后下一个难题是写用例。没有需求文档时最大的麻烦不是不知道测什么而是不知道把用例写成什么样才会被人翻来覆去地问。我用的办法是固定一套用例骨架不管面对多空的输入都能往里填东西。3.1 用例设计的四个固定字段我常用的用例字段已经精简到不能再精简只有四个用例编号前置条件操作步骤预期结果实际结果/备注TC_001进入标题编辑页输入框可用在标题框输入这是一个测试标题点击保存页面提示保存成功刷新后标题正常显示待填写TC_002进入标题编辑页存在一篇已发布文章将标题清空点击保存系统拦截并提示标题不能为空待填写有人会把用例写得很重加入优先级、模块、编写人、设计日期。那些信息对管理有一定意义但在信息不足的项目里它们会分散注意力。我宁愿先把四个核心字段写得足够扎实让开发照着操作步骤能复现让验收人看着预期结果能判断其他字段等需求明确后再补。3.2 没有业务流程时怎么设计场景用例没有流程文档就自己画一个最简模型输入—处理—输出。被测对象是文章标题核心输入就是标题字段的字符串处理逻辑是校验和存储输出是页面效果和数据状态。针对这个模型最值得测的是边界值和非法值。还是用标题举例可以设计这样一组用例标题为空保存时是否拦截标题长度1个字符边界内是否正常标题长度达到系统设定的最大值是否正常标题超过最大值1个字符是否拦截提示是否准确标题包含特殊字符引号、百分号、换行是否会引发异常标题与已有标题重复是否需要提醒这些用例不需要需求文档也能写出来因为它们来自软件的通用逻辑。一个字段做校验等价类和边界值永远是最先要考虑的这一步能覆盖掉绝大多数低级缺陷。很多测试新手拿到一个没有详细需求的对象时不知道从哪下手其实只要把输入字段的边界值列一遍用例库就立住了一半。3.3 用例评审你自己就能做正常流程里用例写完后要拉上开发、产品一起评审。但空需求项目里往往没有这个条件我自己的做法是走查把写好的用例从头到尾念一遍同时模拟使用者的真实路径。比如我写完创建标题的用例后会强行按用户的顺序走一遍——先打开页面、再输入内容、再点保存、再刷新页面看看数据是否还在。这个过程中经常能发现自己漏掉了刷新后数据是否丢失连续保存两次会怎样这类场景。用例评审的意义不是走形式而是用第二视角找出盲区没人配合时你自己站在使用者视角再走一遍就是最便宜的评审方式。走查时我会顺手在用例后面标一个场景来源字段是需求里写的是我从行为反推的还是我凭经验补充的。标注来源能让后续排优先级更容易。4. 测试执行阶段最容易翻车的三个细节用例写完真正进入执行阶段翻车往往不是翻在用例本身而是翻在环境、数据和缺陷记录这三个地方。这三个细节在文档齐全的项目里尚且容易出问题在零信息测试里风险更是成倍放大。4.1 环境准备先确认在哪儿测而不是测什么测试环境至少要有两个前提版本和被测系统保持一致数据状态可恢复。如果被测环境上跑着的程序和待测版本对不上后面所有结果都无效。我见过太多团队一上来就猛跑用例跑到一半发现这个功能本来就不该是这个版本的样子整轮作废。碰到测试文章标题01这种带编号的标题还要确认一个坑这个01是构建版本号还是功能编号如果是版本号环境必须部署到对应构建如果是功能编号环境只要包含这个功能即可。确认方式很简单看环境上的版本信息并截图存档。这一步五分钟就能做完却能让整个测试周期的结论站得住。环境没人维护时我宁愿先花一小时把环境状态彻底摸清楚也不要急着点第一个用例。4.2 测试数据用不完要清清不干净要命测试数据是最容易被低估的坑。一个标题小功能看着简单但数据一旦污染后面所有结果都会被带偏。比如测完超长标题后系统里可能残留一条脏数据记录测完删除标题后相关主图、标签的引用可能没清干净。这些残留数据会让后续用例的结果变得不可信甚至会影响同一环境里的其他人。我的习惯是准备一套独立的数据账号固定数据前缀用例执行完立刻清理这一条用例产生的数据。如果平台有数据重置能力每天执行前先重置如果没有就手动维护一张数据清单记录每条数据的创建位置和清理状态。宁可每天多花十分钟清理也绝不把脏数据留给下一个人。这里有个很容易被忽略的连带问题测试账号本身也会产生数据比如测试文章标题01这篇文章的浏览记录、操作日志如果后续要用这个环境做性能测试清理不干净等于白测。4.3 缺陷单怎么写才能让开发一次看懂执行中一定会发现缺陷。写得好的缺陷单开发看一眼就能定位写得差的缺陷单会被反复打回白白消耗时间。我写缺陷单固定用三段式标题一句话说明问题带关键信息。例如保存文章标题超过50个字符后页面返回500错误复现步骤从进入页面开始一步一步写明每一步都能照着执行期望结果与实际结果对比呈现附上界面截图或对应日志片段这个三段式之所以有效是因为它给了开发最需要的两样东西定位路径和判定依据。在很多信息不足的项目里缺陷单里多一行日志、多一张截图可能就省下一个下午的沟通成本。另外空需求项目通常没有现成的缺陷模板我建议直接在用例表里加一列是否提缺陷关联提交编号这样收尾时能快速核对哪些用例发现了问题、问题是否关闭。5. 空壳项目的验收标准怎么证明测完了而不是测累了没有需求文档时最怕的就是测试变成无底洞。没人告诉你做多少算够你就得自己定义一个客观的收工标准否则永远不敢交差。这个标准如果在测试方案里提前写清楚后续所有人都会轻松很多。5.1 退出标准的三条硬指标我习惯在测试开始前就把退出标准写进方案里固定三条本轮所有设计用例执行完毕执行率达到100%致命和严重级别的缺陷数为0且所有已关闭的缺陷都有验证记录遗留问题有明确评估要么有替代方案要么有明确的下轮处理计划不允许悬挂这三条标准看起来基础但价值在于把我觉得测好了变成有数字能验证。执行率100%看起来是态度指标实际上是在倒逼执行人不要偷工减料。缺陷清零保证了核心质量。最后一条最容易被忽略但恰恰是它约束了测试人员别用时间不够来掩盖没收拾干净的尾巴。写存在遗留问题不可怕可怕的是问题没有被量化评估就直接下线验收。5.2 回归策略和高风险兜底退出标准里还缺一个回归策略。如果这次测的对象是文章标题01那么创建标题、编辑标题、列表展示这三条核心链路必须纳入回归范围。回归不是把用例池里所有用例再跑一遍而是只挑出这次改动可能碰到的功能重跑空壳项目里改动范围本身模糊所以回归范围宁可大一点也不要迷信就改了一个字段。字段越小它被复用的链路往往越多影响也越隐蔽。高风险兜底说白了就是给未知留一份预案。如果测试过程中发现标题功能会影响搜索、消息推送、推荐位等间接场景就要立即扩大回归范围并同步给干系人而不是自己偷偷多测几条就完事。同步的目的不是汇报压力而是让决策人知道范围漂移了可能影响上线时间。没有文档的项目里范围漂移是常态能不能被提前看见才是测试人员专业性的分水岭。6. 这类零信息测试折腾下来我的几点实在体会写到这里我自己也在心里复盘了一遍只有标题的任务。第一次接到时我的心态是烦躁现在反而见怪不怪了因为我已经把它当成一种独立的测试类型来对待信息约束下的验证工作。第一个体会是先写测试方案再写测试用例哪怕方案只有一页。很多人拿到空需求会直接开始写用例写到一半发现范围没定推倒重来。先花半小时把测试对象、成功标准、退出标准、关键假设列出来后面反而更快。这一页纸就是整个测试工作的骨架所有细节都从它身上长出来。第二个体会是标题里的编号要认真对待。010203往往代表一个系列的开始。第一次如果能把基础梳理清楚后续的回归测试就能复用同一套基线越做越轻松第一次稀里糊涂以后每个版本都要重新猜成本是指数增长的。我后来处理类似任务时会把上一轮的范围假设文件直接做为模板只改几个关键字段半天就能出一版新方案。第三个体会更偏管理层面空需求是流程本身的问题不是一个测试技巧能根治的。测试能做的是把缺失的信息结构化地补出来把假设记录下来把成功标准显性化。至于需求方为什么只给一个标题那不是我们能在验收环节解决的事。但至少有了这份记录下一次沟通时的信息差会小很多出问题也能说清楚当时是基于什么假设测的。最后说一个小技巧我每次在这种项目收尾后都会把范围假设和实际验证结果放进同一个文件归档。这个文件看起来普通却是整个测试过程中最值钱的东西。等下一次有人再丢一个测试文章标题02过来我只需要把01的文件拿出来把对象编号换掉功能点沿用上一轮的基线再根据新编号的语义补几条边界场景整个框架就能直接延续。空标题也就没那么可怕了。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进