从用户问题到验收标准:把“好用一点”写具体
朋友说:“这个知识库不太好用,给我加个收藏吧。”你马上开始写按钮,结果他真正想要的是快速找回上周读到一半的文章。收藏也许有用,但还没证明它就是合适的办法。本章先练习把模糊的话变成可以讨论、可以验证的需求。
1. 先问发生过什么
比起问“你要什么功能”,先请对方复述最近一次经历:当时想做什么,在哪里卡住,最后怎样解决。如果他说“我只能翻浏览器历史”,你就知道问题是找回文章。如果他说“我想把资料发给同学”,那可能需要分享,而不是私人收藏。
把事实与自己的猜测分开记录。事实是“上次找文章花了十分钟”;猜测是“收藏功能一定能解决”。随后用纸面草图或小原型检验猜测,不要先投入几天开发来证明自己最初的想法。
2. 用一句话保留使用目的
可以这样写:“作为已登录读者,我希望保存稍后阅读的文章,以便下次直接找回。”这类句子常叫用户故事,它帮助团队记住使用者、行为与目的。但一句话还不能代替完整讨论。
例如“下次”是同一个浏览器,还是另一台电脑?其他人能否看到?文章下线后,收藏列表显示什么?故事不需要塞满全部细节,却应链接到这些规则。否则开发者和验收者可能各自脑补出不同产品。
3. 用例子定义完成的样子
先从最普通的一次操作写起:小林已经登录,文章 A 已发布;点击收藏;刷新后 A 仍出现在自己的收藏列表。接着补重复点击、取消、无权限和网络失败。
场景:重复保存同一篇文章
前提:小林已登录,文章 A 已在他的收藏中
操作:小林再次请求保存 A
结果:列表仍只有一条 A,接口返回已保存的结果
“前提、操作、结果”对应常见的 Given、When、Then 表达。它首先是沟通方式,不要求立刻安装自动化工具。结果应能被外部观察,例如列表条数,而不是“调用了内部 save 方法三次”。实现方式变了,用户承诺仍可能不变。
4. 正常流程之外还要写什么
下面这张表把容易遗漏的地方摆到台面上:
| 情况 | 本例约定的行为 | 验证方式 |
|---|---|---|
| 未登录 | 提示登录,不写入收藏 | 匿名发起保存 |
| 重复保存 | 同一用户同一文章只留一条 | 连续及并发发送 |
| 保存失败 | 显示失败,不声称已保存 | 模拟网络或服务错误 |
| 别人的收藏 | 无法读取或修改 | 用两个账号测试 |
| 文章不可用 | 不再展示正文,给出不可用提示 | 将文章撤回后访问 |
最后一行是一种产品选择,不是所有网站的通用标准。也可以决定隐藏失效收藏,只要与相关人员约定清楚,并保证不会因此绕过文章权限。
5. 把质量要求也变成可检查的句子
“响应要快”“系统要稳定”很难验收。可以先给出示例目标:“在约定的测试环境、100 个并发读者和 1 万条收藏数据下,收藏列表请求的 95% 在 500 毫秒内完成。”这些数字只是练习用,不是行业统一合格线;真正目标要依据用户期望、成本和测量边界协商。
描述性能时还要说明是否包含网络时间、如何采样、错误请求怎样统计。不然前端量到 1 秒,后端日志只有 100 毫秒,双方都可能以为对方错了。常把功能之外的性能、安全、可访问性等称为质量属性;它们同样影响功能是否可用。
6. 给需求一个能追踪的名字
把上面的规则编号为 FAV-01、FAV-02,测试和改动说明引用相同编号。以后“为什么要加唯一约束”就能追到重复保存的规则。这种对应关系叫可追踪性,简单表格就可以实现,不必先采购复杂工具。
练习与参考答案
改写“收藏列表要正常”。参考答案:“已登录且有三条有效收藏时,打开列表应看到三篇对应文章;取消其中一篇并刷新后只剩两篇;另一账号看不到这些记录。”比原句更长,但大家终于能用同一套动作判断结果。
