测试 DAS 热键脚本的失败路径与恢复
先留下可复现证据,再扩大使用范围。
搭一条测试阶梯
从纯算术到对象检查,再到界面预填,最后才是针对具体券商与 build 设计的有限模拟订单测试。前一步通过不能证明后一步,回放或模拟结果也不能证明实盘执行质量。
| 测试 | 预期观察 | 证据 |
|---|---|---|
| 两个价格相等 | 无效距离分支 | 输入与显示信息 |
| 窗口重命名 | 依赖失败行为已明确 | build 与准确现象 |
| 焦点窗口改变 | 命名目标仍明确 | 目标与显示股票 |
| 行情缺失 | 不展示有效计算 | 行情状态和结果 |
| 快速触发两次 | 重复执行行为已明确 | 触发时间和状态 |
| 部分成交或拒单 | 核对或人工停止 | 订单记录和时间戳 |
| 断线或重启 | 已准备状态失效 | 前后状态 |
缩小边界来排错
数值错误,先检查来源对象,再改公式。命令被拒,区分解析、窗口上下文、账户权限、路由支持和券商响应。保留准确错误与 build,不把所有失败都叫语法错误。
最小发布记录
保留脚本版本、准确文本、build、环境、依赖、预期结果、实测结果和已知限制。一起备份桌面与热键。更新时先停用周期入口,安装修改,完成相关回归后再启用。
动手练习:写一份有用的失败报告
选一种失败,给出最小脚本、脱敏配置、预期、实际与恢复步骤,把假设和观察分开。“昨天能用”是一条线索;可以复现的记录才是别人能审查的证据。
把“运行过”拆成不同证据等级
| 等级 | 验证什么 | 不证明什么 |
|---|---|---|
| 文档核对 | 签名和字段有可追溯来源 | 你的 build 实际支持 |
| 静态阅读 | 输入、分支、输出与副作用清晰 | 运行时解析成功 |
| 固定输入客户端练习 | 给定输入的本地行为 | 行情、账户或 broker 行为 |
| 模拟环境集成 | 目标窗口、事件、回报一致 | 实盘可获得同样成交 |
网页的构建、复制按钮测试和选择题都不是 DAS 代码实测。课程目前公开标注客户端待实测,后续记录不能把这个边界省掉。
最小故障报告
记录“期望 100,实际 0”,比“脚本坏了”更有价值。附上最小代码、build、入口、窗口名、账户环境、固定输入、最后一个被确认执行的位置和对象检查结果。先去掉事件入口和外部动作,保留导致差异的最少语句;再一次加回一个依赖。
遇到依赖脚本重名、全局状态残留或桌面恢复,不应在末尾加 Wait 试图修复。Wait 只改变时序,不修正对象身份,也不产生 broker 确认。
恢复与解答
恢复顺序是停止重复入口、记录现场、禁用动作、核对外部结果、清理自己拥有的状态,最后重新初始化。不能先删除 Timer 所读对象再期待 Timer 自己停止。
“有效输入 → 无效输入 → 有效输入”三次序列应得到“有效结果 → 不可用 → 新有效结果”。如果中间仍显示第一轮结果,缺陷是有效性协议或清理,而不是单次公式。把该序列加入每个综合项目的验收。