Glean 拾遗
日刊 · 时间线

每天拾几条。

2026-08-27 · 周四 3 条
← 08-26
日历 ▾
2026 · 08
有日刊 今天
08-28 →
06:00

用视觉定位替换 Test ID:Shopify 将移动 E2E 稳定性拉到 98%

How Shopify pushed mobile E2E test stability to 98%

Shopify 最大的移动应用曾因 E2E 测试大面积 flaky 而被迫将测试从 PR 阻塞中移除。团队在旧 Appium 栈上看到问题不在测试代码而在框架本身:Test ID 查找元素允许在界面未渲染时就点击,pause(1000) 之类的捷径层层积累。他们放弃修补 Appium,改为在其上封装一个强约束框架:builder API 强制每个操作附带断言,操作词汇表刻意收窄,逃逸口统一命名为 UNSAFE_;识别层改用计算机视觉,通过 PaddleOCR 识别文本、OpenCV 对灰度多尺寸匹配 Polaris 图标,重复元素用相邻关系消歧,Test ID 被降级为需显式选择的 fallback。每轮运行生成带标注的视频,失败可自诊。迁移后测试稳定性从 50% 升至 98%,剩余失败多为网络与模拟器启动问题。文章还给出普适建议:将 API 收窄到几个核心命令、每个动作强制断言且验证断言的前后状态、合并前先跑多轮稳定性门槛。适合受 flaky E2E 困扰的移动端、QA 基础设施与测试工具链工程师。

shopify.engineering · 8 min · Appium · Computer Vision · Mobile E2E · Test Stability
06:00

Claude Code 初创实战:五条规则与 AI 原生研发闭环

Claude Code for Startups: 5 Rules from AI-Native Teams

Anthropic 采访了十余家高增长初创公司,整理出 Claude Code 的五条实战规则:人人都能交付、自动化琐碎工作、信任但验证、为重建而构建、先原型后自用再产品化。文中给出具体案例:Clay 的 agent 承担 100% bug 分诊;ClickHouse 的 flaky-test 修复 agent 成为仓库第二和第三大贡献者;Cainex 用“修复原则而非个例”的闭环,让专家审计意见回流到可版本化的 agent 指令。每章附有可执行配置:MCP、CLAUDE.md、skills、hooks、git worktrees、动态工作流。本文是供应商出品的案例合集,偏重宣传,但对 AI 原生研发流程的落地仍有参考价值。适合正在引入 agentic coding 的团队和初创公司技术负责人。

06:00

Mutmut:用变异测试揪出 100% 覆盖率背后的盲区

Mutmut: A Python Mutation Testing System

作者在维护 Python 库时发现,即便测试覆盖率 100%,仍可能漏掉边界条件和异常行为。变异测试通过在源码上做微小改动(如把 < 改成 <=)并运行测试套件,可以暴露出这些盲区。作者调研了 Mutpy 和 Cosmic Ray 后,决定自己实现一个变异测试工具 Mutmut。核心设计是使用 baron(后替换为 parso)实现 AST 无损往返,让变异后的代码可以以原格式落盘,便于审查具体变异。作者尝试用 import hook 在内存中变异模块以支持并行,但受限于 Python 导入系统必须重写全部 loader,最终放弃并退化为基于磁盘的串行变异,换来简单性和对不同测试运行器的兼容性。在 tri.declarative 和 tri.struct 上运行时,虽未发现 bug,却找到了未充分测试的边界和死代码,实际改善了测试套件。适合对 Python 测试工具链和变异测试感兴趣的工程师阅读。

kodare.net · 7 min · Developer Tools · Mutation Testing · Python · Testing