L1.11.1stochastic defects will not replay设计研究

同一输入得到不同输出使缺陷难以复现,用户报告的问题可能无法重演

别名: 缺陷不可复现 · 报告无法重演 · non-reproducible bug

概念解释

用户截了一张错的图,工单写着「我输入了这句话」。支持按原句再跑,得到另一段,错没了,工单被标成无法复现。错仍可能在分布里。随机缺陷不会按需重演(stochastic defects will not replay):报告描述的是一次采样,复现按钮描述的是另一次。

这不是「输出会变」给终端用户看的那一面,是缺陷管理被抽样拆掉的那一面。

机制

传统缺陷默认失败是状态的函数。给定输入和环境,应当再得到失败。采样把失败变成分布上的事件,复现的成功概率是该事件的质量,可能只有几个百分点。支持流程把一次未重演当成「用户环境问题」或「已经好了」,于是低概率但高伤害的错在队列里饿死。

用户侧同样受挫:他们被要求「再试一次给我们看」,再试一次抽到了正常点,被体验成不被相信。报告成本上升,以后更少报。

怎么研究

用已知会以 p 概率出现的植入缺陷,走真实工单流程:用户报、支持重跑 n 次。因变量:工单被关为无法复现的比例、从报告到被当作真缺陷的时间。自变量:n、是否保存原始输出、是否允许「按原输出而不是按原输入」立案。

p 要低。高 p 的植入会让传统流程看起来够用。

边界

温度锁死且全程记种子的内部工具链,在同一版本里可以重演,越出版本就不行——下一张。确定性校验能抓住的结构错误不依赖重演。用户已经把完整输出贴在工单里时,缺的不是重演,是把输出当证据收下来。这条只管「按输入再跑」作为立案条件时的失效。

怎么落地

  • 立案主键是那一次输出(或其哈希),不是提示文本。未保存输出的报告,先请用户贴结果,不要先自己重跑再关单。
  • 支持重跑最多作为「是否仍高发」的抽样,不能作为「是否存在过」的判决。
  • 给用户「把这次结果报告为问题」而不要求他们复现。
  • 验证:把一次已知的错输出交给支持,不给种子。若工单因「我这边跑不出来」关闭,流程在用错误的复现定义。再数因无法复现关闭、后来同类输出又出现的单。

延伸

  • 同组L1.11.2 固定随机种子只能在同一版本内复现,模型或提示更新后即失效 · L1.11.3 无法复现使用户难以形成稳定心智模型,学习曲线被拉平 · L1.11.4 事后追溯需要同时保存输入、系统版本与输出三者 · L1.11.5 单次对比不足以判定两个方案孰优,结论必须建立在多次采样上
  • 相邻L1.01 概率性输出与确定性界面的错配 · L3.13 生成质量的用户反馈回路 · L4.15 责任归属与可追溯
  • 站内检索non-reproducible bug · stochastic defect · replay by prompt

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/L1.11.1