中控按钮连点后场景执行两遍:怎样验收去重与幂等
防连点只能减少手指重复触发;真正的验收要证明同一个操作编号被重复送达时,业务副作用只发生一次。把“将灯设为30%”与“切换灯开关”“播放下一段”分开测,后两类重复执行会改变结果。
适用条件与证据边界
准备两类测试动作:可反复设置的目标值,以及会累加的计数器替身。记录中控版本、去重范围、记录保存时长和重启行为。本文演示内存中按操作编号去重的规则,不代表 SoftControl 已实现该功能。
本文交付可执行的测试方法、合成演示和空白记录表;未连接现场硬件,未取得设备实测、现场照片或稳定性结论。规范定义与示例判据分别说明,示例数值不能用作设备参数。
按这个顺序核对
-
让服务端为一次业务操作保留 request_id,客户端遇到超时仍使用原编号;真正的新操作才分配新编号。记录去重键是否还包含展区和动作类型。
-
依次送出原始请求、50毫秒后的同号请求、2秒后的延迟重发,再送一个编号不同但内容相同的请求。分别数接口响应、任务创建和设备动作。
-
在去重保存期结束、服务重启、两终端重发三个条件下重放。验收要求必须写清保存期外是允许新执行,还是要求人工确认。
-
先让第一条请求完成,再模拟第一条执行中断、回复丢失两种失败。去重命中不能把半成品冒充成功,要能返回运行中或结果未知。
输入与期望结果(合成演示)
| 输入时间 | 操作编号 | 请求 | 预期累计执行 |
|---|---|---|---|
| 0 | open-001 | 下一段 | 1 |
| 50 | open-001 | 同号重发 | 1 |
| 2000 | open-001 | 延迟重发 | 1 |
| 2100 | open-002 | 新操作 | 2 |
合成夹具内四条输入应产生两次副作用。这个断言验证的是示例判据;真实设备还要在动作出口计数,不能仅看四条HTTP响应都成功。
下载夹具并复用
下载本题JSON夹具与空白工作表。文件中的“演示输入”用于先核对判断逻辑,“现场空白记录”供复制后填写;原演示数据请保留,实测数据另存一份并标注型号、版本和采集时间。可先用 python -m json.tool fixture.json 检查结构,再按上表逐行核对输入与预期。
验收时同时保存原请求和动作出口日志,用同一个关联编号串起来。若只有按钮置灰截图,最多能证明界面行为;如果后台仍接收定时器或第二台平板请求,界面防连点不能覆盖这些入口。对不可逆的机械动作,先用计数器或模拟器验证,再按设备维护程序安排现场测试。
容易误判的边界
同样的内容不一定是同一个意图。讲解员连续合法点两次“下一段”不能被永久合并;反过来,不同编号也可能来自客户端错误重建请求。断线重连、缓存失效和任务执行中崩溃都要单列。
继续核对
基础说明见展厅中控场景与动线设计实战;还可核对一键开馆进行到一半失败,怎样区分重试、继续与回退。相关资料可从中控场景可靠性专题继续查找;需要核对项目实现时,按SoftControl 设备联动需求列出具体接口与验收条件。
一级依据
核对日期:2026-10-23。引用版本用于界定本文方法,实际设备支持范围仍须与对应型号手册核对。本文的任务编号、仲裁、检查点与恢复判据属于应用设计建议,引用的网络或设备协议不自动提供这些保证。
相关阅读
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。