P1.14.2Error message设计研究
失败信息需给出下一步而非仅描述状态
别名: 错误信息 · 失败提示 · 恢复动作 · 可行动性 · error message · recovery action · actionability
概念解释
失败信息的第一义务不是描述发生了什么,而是给出下一步。只做状态陈述的失败信息——错误码、堆栈片段、「操作失败,请重试」这类没有出路的句子——等于把恢复工作原样推回给用户:系统拥有诊断所需的全部内部信息,却让掌握信息最少的一方去想办法。判定一条失败信息合格与否只有一个测试:用户读完知道自己该做什么吗。内容结构——发生了什么、能做什么、谁来做——是这个测试的全部;语气与措辞风格是另一个维度。
机制
负面情绪在没有行动出口时会持续反刍:事件没有关闭,就反复回到注意里。心理学里有悠久的未完成任务驻留(Zeigarnik effect)传统——被打断、未收尾的事项比已完成的事项更持久地侵入注意与记忆;一条不给出路的失败信息恰好把失败留在了未完成状态,用户带着它进入后续操作,每个后续判断都背着这层未关闭的挫败。行动可能性的出现本身就能降低挫败:关于控制感的研究传统反复显示,给被试一个对厌恶刺激的控制开关,哪怕从未按下,测到的应激反应与任务后的状态劣化都显著更低——起作用的是「有出口」这个事实,而不是出口被使用。失败信息里的下一步就是这个控制开关:它把用户从「事情坏了而我没有办法」的处境,改写为「事情坏了,而我有事可做」。错误码则站在反面:对用户是零信息——它既不解释发生了什么,也不指向任何动作,唯一用途是把用户赶到外部搜索引擎去替产品做诊断。
怎么研究
- 控制感与应激范式:让被试在不可控的厌恶刺激(如无法预测的噪音)下执行任务,一组配有可以中止或调节的开关、一组没有,实际刺激强度相同;有开关组的生理应激指标与任务后效更低,且开关常常根本没被使用。这个范式是「行动出口本身有情绪价值」的直接证据来源。
- 未完成任务驻留范式:比较被打断任务与完成任务的事后回忆量与侵入性想法频次;在界面研究里可改编为——失败后被给予明确下一步的用户与只收到状态陈述的用户,随后任务中的分心、重复检查与帮助求助次数差异。
- 错误信息理解研究:让真实用户在出错后复述「刚才发生了什么、你接下来会做什么」,统计零回答率;这类测量反复显示,纯状态型信息(尤其是错误码)之后用户说不出现状、也说不出打算,只能求助外部搜索。
- 方法论注意点:实验室里的失败通常是单次、可立即重试的,真实产品的失败嵌在用户有其他任务与时间压力的流程里,「读完是否知道下一步」要在真实任务流里测,问卷里的想象回答会高估可行动性。
边界
- 并非每次失败都有用户能做的动作:服务端宕机、网络中断、账号被封,用户端确实无事可做。行动要求依然成立,只是行动的主语换成系统——告知系统在做什么、什么时候再试(「正在重试,第 2 次」),这同样是通过测试的答案;不告知的系统自动重试在用户眼里与死机无异。
- 假动作比没动作更糟:给出实际无法解决问题的按钮(对着已下线的服务反复「重试」、点开永远为空的「解决方案」),首次失效的是这次失败,第二次失效的是信息的可信度——之后连真的出路也会被当成装饰跳过。
- 错误码不该出现在面向用户的首行,但不该消失:日志与诊断需要它,技术支持定位需要它,用户拿它去搜索有时也真能找到答案。正确位置是默认折叠的「详细信息」,而不是标题。
- 措辞的温度、幽默的可用性是另一组问题,不改变这里的结构要求——一条幽默的失败信息若没有出路,只是把一条没用的信息写得更好笑。
怎么落地
- 为每条失败信息过一遍三段结构:发生了什么(用户语言,不出现术语)、现在能做什么(主按钮直接承载这个动作,让动作可点而不只是可读)、系统会替你做什么(有自动重试/自动保存草稿时明确说出来)。
- 错误码、请求编号、堆栈全部收进默认折叠的「详细信息」,供搜索与报修使用;首行永远是人话。
- 「请重试」不合格,除非用户知道重试为什么可能成功:要么说明已修复的原因(「网络已恢复,点击重试」),要么把重试自动化并播报进度。
- 审查一遍现有产品的全部失败文案,凡读完答不出「我该做什么」的逐条改写;改写时先给主按钮找到动作,再填句子。
- 验证办法:可用性测试在错误出现的瞬间暂停,问「你现在会做什么」;统计不求助支持、不离页、在同屏内完成恢复的比例,作为失败信息质量的直接指标。