验收要看用户任务是否真的完成,而不是只看页面是否打开、按钮是否可点、数据是否上报。把“技术成功”和“任务成功”拆成两套可核对的事实,分歧才有落点。
常见矛盾是:执行者看到接口返回正常、页面无报错、日志有记录,于是判定成功;用户却说自己没拿到想要的东西。例如用户要下载一份报表,点击后浏览器开始下载,但文件里只有表头。执行者认为下载链路通了,用户认为任务没完成。两者都没说谎,只是验收对象不同:一个验的是动作是否发生,一个验的是结果是否可用。
这类分歧不能靠“再测一遍”解决,因为再测一遍往往还是同一套观察点。需要先把“用户任务”写成一句可判定的完成句,例如“用户拿到一份包含全部筛选行、字段完整、可被表格软件打开的报表”,再逐项找证据。
如果页面提供了结果,但入口位置、文案或状态提示与用户预期不一致,用户可能误判为失败。区分证据:让一个不了解实现细节的人按任务描述独立走一遍,记录他每一步的点击位置和当时的判断。若他能完成,但需要你口头指路,说明是可发现性问题。
如果结果本身缺失、为空、被截断或格式不可用,那么接口成功只是中间步骤成功。区分证据:直接检查最终产物,而不是检查触发动作。下载文件的行数、字段数、是否能被目标软件打开;表单提交后数据是否出现在用户需要的位置;导出内容与筛选条件是否一致。若产物不满足完成句,就属于结果缺陷,与技术链路是否通畅无关。
能区分两种解释的关键动作是:绕开执行者,直接检查最终产物。这个动作的结果决定下一步——产物合格,就修入口和提示;产物不合格,就回到数据处理和输出环节,不要先改文案。
假设一个场景:团队把“报表导出”标记为成功,用户反馈“没数据”。如果只核对按钮点击和接口返回,双方会一直争论。改为核对导出文件后,若文件只有表头,则确认是结果缺陷;若文件有完整数据,则问题在入口提示或用户操作路径。这个假设说明的是比较方法:先固定检查对象,再判断分歧属于哪一类。
产物合格也可能被误判为失败,常见条件是环境差异:用户使用的软件版本、编码、权限或时间范围与验收时不同。此时不要直接改功能,先复现用户条件,确认差异是否来自环境。另一个条件是数据采集差异:统计口径、采样时间或缓存状态不同,会让同一操作呈现不同结果。一次改动前后比较,还要考虑季节、搜索需求变化和采集差异,不能把同时发生当成因果。
若核对后仍无法区分,就把问题缩小到一个最小可复现步骤:固定账号、固定筛选条件、固定产物类型,记录每一步的输入和输出。最小步骤能复现,才值得进入修复;不能复现,就先补充观察点,而不是凭印象改代码。
通过的条件不是“没有人反对”,而是完成句里的每一项都有产物证据支持,并且不同角色看的是同一份产物。若某项证据缺失,就标记为未验收,而不是默认通过。这样处理的好处是:后续出现分歧时,可以回到具体检查项,而不是重新争论“到底算不算成功”。验收记录应保留完成句、检查项、当时条件和结论,方便下一次同类操作直接复用。