Testing

37 篇内容

技术文章Phil Eaton - distsys

Checking linearizability in Go

文章讲解如何使用 Go 语言库 Porcupine 检查分布式系统的线性一致性(linearizability),以替代需要 JVM 的 Jepsen。作者先强调 Porcupine 只能帮助建立一致性信心,无法证明系统严格线性一致。随后以分布式寄存器为例,定义操作输入、整数状态和理想化 Step 模型,展示一个包含过期读的非法操作历史被 Porcupine 检测并生成可视化,再给出修复后的合法历史。接着扩展到分布式键值存储,用 map[string]int 建模并按 key 处理状态,进一步演示相同方法。最后指出示例未接入真实系统,并提示可通过状态分区提升性能、集成真实系统。

推荐收录,因为文章提供了完整可运行的 Porcupine 线性一致性检查教程,从模型定义到非法/合法历史验证,并明确工具的能力边界。对需要测试分布式一致性的 Go 工程师非常实用,可迁移到注册表、键值存储等场景,且绕开了 JVM/Jepsen 的学习成本。

工程实践Phil Eaton - databases

Intercepting and modifying Linux system calls with ptrace

文章介绍在amd64/Linux上使用ptrace拦截并修改系统调用,用Zig实现故障注入器,通过fork子进程、PTRACE_TRACEME和PTRACE_SYSCALL在系统调用入口与出口暂停。作者实现sys_write钩子:入口处把rdx写入长度截断2字节模拟短写;出口处将rax改为-EIO,从而绕过Go、Python、C内置write对EAGAIN的重试。文中还展示了用PTRACE_GETREGS/SETREGS操作寄存器,以及用PTRACE_PEEKDATA读取子进程内存打印写入内容。最终成功触发短写,并讨论方案局限:仅覆盖amd64/Linux、存在性能开销,未来可结合seccomp过滤优化。

推荐收录,因为文章用可运行的Zig代码完整演示了ptrace拦截系统调用的入口与出口、寄存器修改和内存读取,并通过真实调试发现Go/Python/C内置write对EAGAIN的重试行为,最终用返回EIO成功触发短写故障。适合从事Linux系统调试、故障注入和可靠性测试的工程师,方法可迁移到其他系统调用和语言,但需注意其仅覆盖amd64/Linux且ptrace存在性能开销。

技术文章Phil Eaton - databases

What's the big deal about Deterministic Simulation Testing?

文章系统介绍确定性仿真测试(DST)的核心思想:将分布式系统的多个节点运行在单线程中,通过注入受控的随机种子与时钟来消除非确定性,并在模拟中注入磁盘、网络和进程故障。作者用伪代码演示如何改造退避重试、文件读取和分布式节点等代码,说明需将随机源与时间依赖参数化,并限制为异步 IO。文章还讨论了实现中的非确定性来源、工作负载设计与模拟边界,指出 DST 并非万能,种子可复现性受代码变更影响。最后对比 Jepsen,强调 DST 虽不能替代生产验证,但能显著提高系统核心稳定性。

推荐收录,因为文章用具体伪代码和真实案例(FoundationDB、TigerBeetle、Antithesis 等)清晰解释了 DST 的原理、实现约束与局限性,不是泛泛而谈。适合分布式系统、后端和测试工程师理解如何通过受控随机与故障注入提高系统可靠性,同时避免对 DST 产生不切实际的期望。

技术文章LWN.net

[$] Block-layer error injection

文章介绍 Christoph Hellwig 提出的块层错误注入补丁系列。现有内核支持多种注入块层 I/O 错误的方法,但都无法直接指定要失败的操作、返回的状态码或直接针对特定磁盘,通常需要叠加设备,导致测试对象变成映射设备而非真实磁盘。新方案通过每个磁盘的 debugfs 文件提供可配置接口,能够选择操作类型、返回状态码并直接作用于目标磁盘,补齐了现有错误注入能力的三个缺口。该机制主要用于测试存储代码对异常硬件故障的响应,增强块层和文件系统的可靠性验证。

推荐收录,因为它清晰说明了块层错误注入的现有局限、新接口的设计动机和实现方式,对内核存储开发者、测试工程师和文件系统可靠性验证具有直接参考价值。文中提到的按操作类型和状态码注入错误、直接针对真实磁盘的思路是可迁移的故障注入方法,适合需要构建块层故障测试场景的读者。

工程实践美团技术团队

Agent评测漫谈 —— 由浅入深讲解Agent评测

文章系统介绍Agent评测的概念、目的与方法论,强调Agent评测是“观测+评测=持续迭代”的工程实践。作者指出Agent评测需覆盖结果、过程、效率、风险四层,并从“答案评测”走向“行为评测”。核心方法论包括:建立从业务指标到模型指标的分层指标桥梁;客观评测与主观评测并行,通过“人人一致、人机一致”和二元化Rubric对齐主观标准;以Bad/Good Case驱动评测体系迭代;专家知识补充垂域能力。文章还分析了长程Agent带来的评测范式变化,从面向Query-Answer转向面向Task-defined behavior,并提出评测基础设施应具备全链路回放、沙箱、AI评测引擎等能力。全文源自美团图灵团队两年实践经验,适用于企业级Agent系统评测体系建设,但对学术评测算法探讨有限。

推荐收录,因为文章不是浅层科普,而是结合多个业务案例深入拆解了Agent评测的工程化方法论,提供了分层指标、人机对齐、二元化Rubric等可直接复用的实践策略,对正在或计划建设Agent评测体系的产研团队有显著参考价值。其“从Bad Case驱动迭代”和长程Agent评测转型的思路尤其适合当前Agent快速发展的工程需求。

工程实践知乎 - 腾讯技术工程

从胡言乱语到精准改代码:我是如何让 AI 读懂老项目的

文章以一个小程序教育平台的重构实践为例,系统阐述了如何通过AI上下文工程将历史债务沉重的项目转变为AI可维护的项目。核心路径包括:从AGENTS.md构建静态上下文索引,移除不再运行的死代码做减法,简化过度设计的架构(如将OT协同降级为HTTP同步),制定页面布局、组件与交互规范约束边界,搭建单测、E2E及视觉回归自动化测试流水线并嵌入MR检查,最终将债务治理融入日常迭代。文章详细记录了每一步中AI角色的变化与引导方法,展示了从AI频繁误判到能主导方案落地的过程,并指出关键在于持续沉淀可复用的上下文知识而非一次性建设。

本文提供了将AI嵌入遗留系统重构的完整案例,覆盖上下文建设、架构简化、规范制定和自动化质量门禁等环节,实操性强。文中拆解的步骤与AI引导策略可直接迁移至其他需要历史债务治理的工程场景,适合希望提升团队工程效能与AI融合度的开发者及技术管理者参考。

工程实践知乎 - 携程技术

GUI Agent+多智能体:携程如何用AI将线上页面多语言质检成本降低 90%

本文深入介绍了携程针对多语言页面质检成本高、一致性问题构建的“慧鉴天工”多智能体系统。系统遵循OODA循环,采用GUI Agent实现自动化页面采集,通过三阶段训练(含连续奖励强化学习和DPO)提升长程任务成功率,并引入知识图谱处理页面动态改版。文本提取结合CDP/DOM API与OCR后处理,确保多语种文本的精准还原和双语配对。检测模块利用自我进化的LLM检测规则和多模型确认机制,解决31语种的翻译质量判定。系统将修复成本降低90%以上,召回率超90%,检测准确率突破70%。方案主要面向OTA等复杂UI场景,依赖大规模真机环境和业务适配。

本文提供了完整的工业级多智能体系统设计案例,涵盖模型训练、数据工程、知识增强和检测流水线,展示了AI从实验到落地的工程权衡与量化效果。适合关注AI工程化、智能体开发和质量保障的技术人员借鉴,其OODA架构、连续奖励优化和知识图谱集成方法具有可迁移价值。

工程实践知乎 - SmartCode 得物技术

AI Native 交易核心系统的研发范式|得物技术

文章分享了得物技术团队在订单系统完成稳定性改造后,面对AI编码带来的代码量激增与质量挑战,如何重构研发流水线以适配AI Native范式。核心思路是将传统流程升级为五道标准化关口:需求澄清阶段通过BDD场景与知识库对齐,锁定业务验收标准;技术方案阶段以五段式模块拆解将设计决策前置,并拉取历史约束规约;编码执行阶段引入TDD的RED-GREEN循环,保证代码可测试、可追溯;门禁卡控阶段由多个审查Agent并行审核,确保阶段产物合规;全流程埋点监控则量化研发过程,驱动持续改进。文章以出海礼品卡需求为例贯穿全文,展示了从需求到代码的完整证据链,为交易核心系统在AI辅助下的稳定性治理提供了可落地的工程实践。

本文系统性地记录了AI编码引入核心系统后的稳定性治理实践,将BDD、TDD、知识库校验与门禁流水线相结合,形成从需求到验证的闭环。其五道关口设计、增量代码体检和全链路埋点等方法,对面临AI辅助开发挑战的高可靠性系统团队具有直接参考价值,可迁移到类似交易、金融等核心链路的研发流程优化中。

技术文章Trail of Bits Blog

Rust-proof your code with our new Testing Handbook chapter

文章宣布Trail of Bits在Testing Handbook中新增Rust安全测试章节,系统介绍了用于验证Rust程序安全性的工具和技术。内容首先概述Rust安全保证的边界与未尽问题,然后深入动态分析领域,包括使用Miri检测未定义行为、proptest属性测试、覆盖率测量和变异测试等。接着阐述静态分析工具Clippy的深度用法及推荐lint。此外,还总结了从审计实践中积累的陷阱清单,如操作符优先级差异,并提供了内存清零的三种方案。最后,介绍了专用工具如模型检查器Kani和供应链依赖审查方法。文章旨在为开发者提供一个全面的Rust安全测试流程,但内容为概述,具体细节需参考完整手册章节。

此文系统梳理了Rust安全测试的工具链和最佳实践,从动态分析到静态分析再到供应链安全,覆盖全面,且融入了审计实战经验。适合Rust开发者、安全工程师和注重代码质量的团队参考,可帮助识别常见安全陷阱并集成多种测试方法。虽然文章为概述,但提供了清晰的指引和资源链接,可迁移性强。

工程实践Simon Willison

Rewriting Bun in Rust

本文详述了Bun从Zig全面重写为Rust的过程,核心驱动是内存管理难题(如use-after-free、double-free)和崩溃导致的维护负担。作者借助Claude驱动的AI代理,利用TypeScript测试套件作为一致性验证,通过动态工作流、对抗性代码审查和流程修复机制,在11天内自动化完成了百万行代码的移植,并已平稳运行一个月。文章展示了代理工程在超大规模代码迁移中的完整工作流程,包括成本($165K API消耗)、质量保障和实际效果,也讨论了语言选择从单向决策变为可逆决策的范式转变,但强调该方法高度依赖高质量测试套件和大量模型输入。

推荐收录,因为该案例系统展示了利用前沿AI模型进行超大规模代码重写的完整实践,从动机、方案设计、自动化执行到质量控制和上线验证,证据链完整。尤其适合关注AI工程化、编程语言迁移、测试驱动开发或开源项目维护的读者,文中关于一致性套件驱动、流程修复而非手工修代码的理念具有很强的可迁移性,但需注意其成功依赖高质量测试资产和充足的模型交互预算。

工程实践Trail of Bits Blog

Mutation testing comes to DAML

文章介绍 Trail of Bits 为 DAML 增加的 Mewt 变异测试支持,核心目标是用“存活变异体”衡量测试集真正能否发现错误,而不是只看覆盖率。作者指出,DAML 内置的模板/choice 覆盖只能证明代码被执行过,不能验证授权语义,尤其容易漏掉 controller、signatory 这类权限规则。Mewt 通过复用 tree-sitter-haskell 解析器并加入两类 DAML 特有变异——控制者替换和控制者删除——来制造授权偏差并观察测试是否失败。文中用双签释放资金的例子说明:只测成功路径会让“少一个签名也能通过”的变异体悄悄存活,从而暴露缺失的拒绝测试。文章也明确了局限,包括等价变异、整套测试带来的时间成本,以及需要人工复核 surviving mutants。

推荐收录,因为它把变异测试具体落到了 DAML 授权规则和真实测试流程上,给出了可复用的变异类型、使用方式和边界条件。适合智能合约、安全测试和测试设计读者参考;同时也提醒了等价变异与长耗时带来的实操风险。

工程实践Simon Willison

sqlite-utils 4.0, now with database schema migrations

这篇文章记录了 sqlite-utils 4.0 的正式发布,重点介绍了三个面向长期维护的能力:数据库迁移、可嵌套事务 db.atomic(),以及复合外键支持。迁移机制采用 Python 文件和装饰器定义变更序列,并用 _sqlite_migrations 表追踪已执行项,底层依赖 table.transform() 以“建新表、拷贝数据、替换旧表”的方式实现 SQLite 原生 ALTER TABLE 不支持的结构调整。作者同时说明了 4.0 中的破坏性改动,包括 db.query() 只用于读查询、写入改用 db.execute()、upsert 的冲突处理改为标准 ON CONFLICT 语法,以及 CSV/TSV 类型推断默认开启。文章还讨论了这些设计为何比 Django 式迁移更简单、为何不提供回滚,以及从 sqlite-migrate 合并到 sqlite-utils 的演进背景。最后,作者用 Claude 和 GPT 辅助做了回归测试与文档校对,展示了 AI 在发现事务、外键和导入逻辑缺陷方面的实际价值,但内容边界主要仍是该库自身生态,不是通用 ORM 迁移框架。

文章直接给出了迁移系统、嵌套事务和复合外键的实现方式,还明确说明了破坏性 API 调整与适用边界,适合做 SQLite 工具库设计和演进的长期参考。对维护数据库库、做 schema 演化或关注 AI 辅助测试的读者尤其有价值;但它是单个项目的发布复盘,不是通用教程,迁移设计仍需结合自身系统约束取舍。

工程实践知乎 - 腾讯技术工程

从Vibe Coding到Harness—— 一套大仓AI工程化实战

文章复盘了腾讯 TAB 大仓里一套面向 AI 研发交付的 Harness 实战方案,目标不是让模型“更聪明”,而是让它能在跨微服务、跨前端微应用的真实工程中稳定跑完需求。作者把系统拆成 Rule、Skill、Sub Agent、Workflow、Scripts、MCP 六层,并通过 13 个阶段的接力流程、4 个固定角色和 5 个人工关卡,把需求分析、方案设计、开发、测试、审查到交付收尾串成闭环。文中重点强调把可判定约束下沉为脚本、把下游修改上游的权限切断、用基线对比剥夺 AI 的解释空间,以及将集成测试前置以减少昂贵的返工。作者还复盘了 Team Mode 卡死、审批弹窗过密等踩坑,最终选择删除复杂机制、改用同步子 Agent。文章适合大仓、复杂交付链路和 AI 工程化落地场景,但也明确说明其效果依赖较完整的 PRD、较强的仓库规范和可自动化的门禁体系。

推荐收录,因为文章给出了可复用的 AI 工程化落地证据:13 阶段流程、4 类 Agent、7 道门禁脚本、基线对比和 MCP 闭环,且明确复盘了卡死与返工等失败案例。适合正在做大仓提效、AI 研发流程编排或交付自动化的团队参考,但其方法对流程规范和自动化能力要求较高。

工程实践Simon Willison

sqlite-utils 4.0rc2, mostly written by Claude Fable (for about $149.25)

这篇文章记录了 sqlite-utils 4.0rc2 的发布前审查过程,核心是作者借助 Claude Fable 对 rc1 之后的变更做全面回查,并最终推动稳定版发布。文中最关键的发现是事务处理存在多个隐藏缺陷:例如 delete_where() 会留下悬挂事务、db.execute() 的写入语义与文档不一致、db.query() 对返回行与非返回行语句的处理存在副作用。作者据此重构并补齐了事务模型说明,增加了 db.begin()/db.commit()/db.rollback(),同时修正了 Python 3.12 autocommit 兼容性、migrations 原子性、upsert 校验和若干命令行为。文章还展示了多轮子代理、交叉模型复审和基于 changelog 的增量写作流程,并给出约 149 美元的推理成本估算。整体上它既是一次真实的发布事故预防案例,也是一份关于 AI 辅助代码审查与事务语义设计的可复用经验。

推荐收录,因为正文不仅讲了“用 AI 写代码”,而是明确暴露并修复了数据库事务、自动提交和 API 语义上的真实缺陷,证据充分、可验证。适合关注 SQLite/数据库工具、发布审查和 AI 辅助代码审查的读者,尤其有助于借鉴“先审文档、再审实现、用多模型交叉复核”的工作流。

工程实践Trail of Bits Blog

GPT-5.5-Cyber built a zlib fuzzing lab in a day

这篇文章是 Trail of Bits 对一次真实安全研究行动的阶段性复盘:他们把 GPT-5.5-Cyber 接入 Codex 的 /goal 模式,要求其针对 zlib 寻找压缩库中高危缺陷。模型没有停留在静态读代码上,而是自动搭建了 ASan/UBSan 构建、测试种子、多个 C/C++ harness 和变体编译配置,覆盖 inflate、uncompress2、gz* 等十余个入口,并据此找到多个正在协调披露的问题。作者强调,真正的价值不只是“能跑起来”,而是模型能持续判断哪些崩溃不具备现实可达性、主动放弃噪声并扩展新的探索方向。文章结论是:面向安全关键代码,定制化 fuzzing 已不再是少数专家的专利,前沿模型正在显著压缩构建攻击/防御工具的门槛,但前提仍是严格的有效性规则和人工把关。它的边界也很明确:这类能力目前更适合作为高信号的辅助研究工具,而不是自动化裁决漏洞是否成立的最终依据。

推荐收录,因为文章给出了可核验的直接证据:GPT-5.5-Cyber 在一天内自动搭建 fuzzing lab、生成多入口 harness、使用 sanitizer 变体并产出可披露发现。对安全研究、漏洞挖掘和 AI 辅助测试读者,这篇文章能迁移的不是某个 zlib 细节,而是“目标约束 + 有效性判定 + 持续探索”的方法。

工程实践知乎 - SmartCode 得物技术

AI UITester:AI Native 的 UI 自动化测试新范式|得物技术

文章介绍得物团队的 AI UITester:一种面向移动端 UI 自动化测试的 AI Native 方案,目标是解决传统脚本用例迁移、调试和三端维护成本高的问题。作者给出了从用例平台 JSON 到可执行脚本的自动化 Pipeline,包括树结构展平、去重、LLM 增强、版本归档等阶段,并强调通过 Wiki 知识注入提升步骤生成准确性。执行层采用 VLM 驱动的“截图-理解-执行”闭环,配合失败分类器、置信度阈值和自愈机制,实现业务失败的自动诊断与修复。文章还对比了 Appium/XCUITest 等元素定位方案与 AI 辅助方案,指出 AI Native 的核心变化是从“维护定位器”转向“理解界面与流程”。其边界也很明确:Wiki 质量会直接影响诊断效果,复杂流程变更仍需要人工确认。

推荐收录,因为文章给出了可落地的 UI 自动化架构:用例转化 Pipeline、VLM 执行闭环、失败分类、自愈和置信度控制都有明确设计细节。适合做移动测试、AI 工程化和自动化平台建设的参考,但也要注意它对知识库质量和阈值校准依赖较强,复杂场景仍需人工兜底。

工程实践知乎 - 千问云

AI 不缺智商缺纪律:我的 Harness 工程化实践

文章复盘作者围绕 AI Coding “不守纪律”搭建 harness 的实践:把庞大的 CLAUDE.md 拆成常驻层、原子规则层、按需上下文层和执行支撑层,再用 dispatcher 状态机与文件交接代替单一主会话,以缓解上下文污染、流程随机和遗忘。随后将评审、开发、验证、部署串成可中断续跑的工序链,并借助 hook 与 G1-G8 门禁把状态写入、危险操作和流程跳步变成硬约束。作者还把 harness 本身当被测对象,设计了确定性的七维评测,比较不同规范版本的流程完整性、代码正确性和接口验收。文章同时说明其边界:链路更长、调试更难,且生产上线仍需人工兜底,依赖过程可观测场景。

文章给出了分层 harness、dispatcher 状态机、文件交接和 hook 门禁的具体落地证据,不是泛泛讨论 AI 编码。适合做 AI 编程工作流、Agent 编排和自动化评测设计的参考;其可迁移价值在于把流程约束外置为可持久化、可阻断、可度量的系统,但也明确依赖可观测产物和可执行测试场景。

工程实践知乎 - NGINX洪志道

03-AI 编程的粒度和节奏

文章讨论了用 AI 辅助开发时如何把任务切成合适粒度,并主张不要一开始就追求最终形态,而是按“逐步逼近目标”的方式推进。作者以 Nginx + Lua 的实现为例,先让 AI 完成 Lua 引擎接入,再把代码改为文件化管理,虽然离最终使用方式还有距离,但每一步都具备独立价值且可被解释清楚。文中强调粒度判断应以 Review 为准:功能独立、代码简洁、设计不过分离谱,并且每步都要有测试用例验证正确性。作者还指出,开发文档可以不先写,但测试和使用文档必须与代码同步维护。文章的适用边界是强依赖持续 Review 与代码理解,若缺少审查机制,AI 生成的中间态容易偏离目标。

推荐收录,因为文章给出了 AI 编程中“粒度”和“节奏”的直接实践证据:按 Review 标准拆分任务、每步独立有价值、并用测试保证方向不跑偏。适合正在用 AI 写代码、做重构或推进大改动的工程团队参考,但前提是具备稳定的人工审查与测试机制。

工程实践知乎 - NGINX洪志道

02-先把项目的骨架搭起来

文章围绕“先做最小、核心、可验证的东西”这一 AI 编程原则展开,强调软件开发应先收敛到一个能被验证的最小闭环,再逐步扩展功能。作者以 nginx-lua-web 项目为例,说明项目启动阶段如何同时建立源码、测试和使用文档,并先让 Nginx 具备一个可进入的入口,哪怕当前只是返回 404。文章还明确表达了代码驱动的推进方式:通过最小功能、明确测试和同步文档,让 AI 在局部清晰任务上高效工作。

推荐收录,因为它不是泛泛而谈 AI 写代码,而是给出了一个可执行的工程起步方法:先建立最小可验证骨架,再用测试和文档约束演进。这个思路对 AI 辅助开发、项目初始化和复杂系统拆分都具有较强迁移价值。

工程实践Grab Tech

Scaling out Distroless adoption With AI

这篇文章讲的是 Grab 如何在大规模服务体系中推进 Distroless 镜像迁移,并把“先补齐可验证的 medium tests,再批量改 Dockerfile”的方法自动化。文章重点不是单纯介绍 Distroless,而是详细说明了为什么迁移会因运行时依赖缺失而失败、如何用分层测试建立安全网,以及如何借助 AI agent、MCP、脚本技能和人类审核把原本高度重复的迁移与修复工作规模化。 作者还给出了一个可执行的 patch-test-compare 流程:先基线化已有测试结果,再检测 Dockerfile 中的系统包依赖,按需生成多阶段构建或直接切换基础镜像,最后用同一套 medium tests 验证是否引入回归。它的结论是,AI 更适合承担“明确目标、可判定成功、但流程繁琐”的工程迁移任务,但前提是要有严格 guardrails、分批反馈和人工最终把关。

推荐收录,因为文章把一个真实的大规模安全迁移问题拆解成了可复用的测试、自动化和人机协作流程,而不是停留在“用了 AI 提效”的宣传层面。对于做平台工程、DevOps、安全基线治理或 AI 辅助工程化落地的读者,这篇文章提供了很强的可迁移经验和明确的边界条件。

工程实践知乎 - 鹅厂架构师

AI Agent & Skill 测评方案及落地实践

文章系统总结了 AI Agent 与 Skill 的测评方案,重点解决非确定性、黑盒化和错误级联三类问题,提出“确定性评分器 + Rubric 评分器 + 人工评分器”的组合框架,并将测评拆解为功能正确性、过程质量、效率成本、鲁棒安全、体验对齐五个维度。作者进一步给出用例设计、基线建立、稳定性评估、CI 集成和报告归档的完整落地流程,并以 TPerf 性能分析 Agent 为真实案例说明如何通过结构化 Trace、LCS 步骤对齐和多轮 Trial 评分实现生产级回归测评。文章适合正在构建或升级 Agent 评测体系的工程团队参考,尤其适用于需要把模型能力纳入持续集成和版本门禁的场景。

推荐收录,因为它不是停留在概念层的泛泛讨论,而是把 Agent 测评拆成了可执行的评分器、指标、基线和流水线,具有很强的工程可迁移性。文中给出的用例组织、Trace 规范、Rubric 设计和稳定性阈值,对构建生产级 AI 应用评测体系的团队尤其有参考价值。

工程实践知乎 - 千问云

都是 AI Coding,为什么 Java 体验差了一个量级?五条方法论帮你构建自己的 Harness 环境

文章围绕“AI Coding 在 Java 微服务项目里体验差很多”这一现象,指出根因不在模型能力,而在工程环境是否具备可本地运行、可自动验证的 Harness。作者结合一个 Agent 运行时平台的真实改造,系统讲了依赖倒置、Spring Profile 隔离、CLI 优先、脚本化验证、本地闭环测试等方法,目标是让 AI 能在本地独立完成“修改—运行—看报错—再修复”的循环。文中还给出了一整套落地清单,包括用 H2 替代 TDDL、LocalCommandExecutor 替代远程沙箱、从配置中心脚本拉取配置、排除线上专属包、以及用 verify-local.sh 和冒烟测试把验证过程自动化,适合作为 Java 项目做 AI 友好化改造的参考。

推荐收录,因为它不是泛泛讨论“AI 编程体验”,而是把问题落到具体工程结构和可执行改造上,给出了能直接迁移到其他 Java 微服务项目的方法论。对希望提升 AI 开发闭环效率、减少人工推预发和手工验证的工程团队尤其有参考价值。

工具笔记Eli Bendersky

Thoughts on starting new projects with LLM agents

这篇文章总结了作者在一个全新 Go 项目中使用 LLM agent 协作开发的实际经验,重点不是“让 AI 代写代码”,而是如何把 agent 纳入可维护、可审查、可迭代的工程流程。作者强调需要先用文档共同设计 API,再按小而可审查的 CL 逐步推进;同时必须保留人工深度 review、持续 refactor 和可靠测试套件,避免把实现与测试都交给 agent 形成自我强化的错误闭环。文章还讨论了为何 Go 特别适合 agent 写作与人类审查,以及这种方式不适合学习全新领域,只适合已经具备判断力的资深工程师用于提效。

推荐收录,因为它提供的是一套可迁移的 LLM 协作开发方法,而不是泛泛的使用感想。文章把设计、代码审查、提交粒度、测试策略和语言可读性串成了完整工作流,对想在真实项目中安全使用 agent 的工程师很有参考价值。

工程实践知乎 - 千问云

Skill Factory:三天手搓面向Harness设计的技能工厂(附AI coding实践)

这篇文章分享了作者为 Harness 场景搭建“技能工厂”的完整工程思路:先用裸模型评估和现有 skill 匹配来判断是否真的需要生成新技能,再用测试问题驱动生成、多路并行 creator 竞赛、测试-优化-再测试的回归流程来提高首次生成成功率和交付稳定性。文章还讨论了对知流平台的生态适配,以及未来如何结合 trace 数据挖掘可复用技能、把 agent 的隐性执行经验沉淀为显性资产。

推荐收录,因为它不是单纯讲“用 AI 写代码”,而是把 agent 技能生成、自动化评测、回归优化和平台适配串成了一条可复用的工程流水线。对做 AI 应用、Agent 平台或内部知识/技能库建设的读者,这种“先评测再生成、并行探索、失败优先”的思路具有较强迁移价值。

工具笔记知乎 - NGINX洪志道

我如何用 AI 做真实编程

这篇文章记录了作者用 AI 辅助真实编程的一套实用方法,核心包括优先使用能力更强的大模型、用测试用例约束 AI 输出、频繁重构、以及通过“明确目标—拆小任务—让 AI 实现—自己理解 diff—写/跑测试—继续迭代”的循环推进开发。作者强调代码本身应当成为设计载体,而不是只依赖文档式 SPEC,同时认为真正有价值的经验来自在复杂、真实的任务中持续实践。

推荐收录,因为它给出了一套可直接迁移到日常开发中的 AI 编程工作流,而不是停留在抽象的“怎么问 AI”。其中关于测试、重构、理解 diff 和代码驱动的建议,对使用 AI 提升交付质量和保持代码可维护性都有长期参考价值。

工程实践知乎 - 千问云

Harness Engineering实践,做了一个平台让AI一晚上自动评测和优化你的系统

文章介绍作者基于 AI Agent 搭建的一套自动评测平台,目标是让 AI 自主创建评测任务、生成评测集、执行评测并提交报告,甚至在读完报告后继续反向优化系统,形成闭环迭代。文中分别展示了无 UI 的工具/MCP 测试、带浏览器 UI 的内容与功能评测,以及三轮自动优化的实践结果,并说明了评分稳步提升的过程。文章最后也给出了适用前提:系统要有较好的 UI 规范和自动化基础设施,且被测系统本身需要具备较高的 AI Coding 含量,否则 Agent 容易在复杂老系统里失效。

推荐收录,因为它不是泛泛讲“AI 能测试”,而是给出了从任务定义、评测集生成、执行、报告到自动优化的完整工程闭环,具有很强的可迁移性。对于做 AI 工程、测试平台、Agent 工作流和自动化质量保障的人,这篇文章能直接提供流程设计和落地边界的参考。

工程实践Dropbox Tech

Introducing Nova, our internal platform for coding agents

文章介绍了 Dropbox 为编码代理构建的内部平台 Nova,核心目标不是单点生成代码,而是让 AI agent 能在大型 monorepo、Bazel 构建/测试、CI 失败修复、依赖升级和运维迁移等真实工程流程中稳定工作。作者重点讨论了为什么要采用“平台化”而非多个单用途工具的方案,以及如何通过隔离执行环境、验证循环、上下文注入、观测与反馈机制、MCP/插件集成来提升 agent 的可靠性和可控性。文章还总结了在 flaky test 修复、迁移升级、生产故障处理等场景中的实践经验,强调 agent 的价值很大程度取决于周边工程系统而不只是模型本身。

推荐收录,因为它提供了编码代理在大规模工程环境中落地的完整平台思路,而不是停留在“用 AI 写代码更快”的表层叙述。文章对上下文管理、验证闭环、确定性工作流与 agent 分工边界的讨论,具有很强的可迁移价值,适合做 AI 工程化和开发者工具设计的长期参考。

工具笔记matklad

Catch Flakes On Main

文章提出一个很实用的工程习惯:即使使用 merge queue 或类似机制,也要在 main 分支上持续冗余地跑完整测试套件,并维护一个随手可查的近期 main 失败列表。作者强调,只有当 main 被强约束为“理论上应始终通过”时,主干上的失败才更容易被识别为 flaky test,从而集中治理最影响效率的不稳定来源。文章还指出,积累这类失败记录不仅能帮助优先级排序,还能揭示不同故障之间的相关性。

推荐收录,因为它把“如何识别和治理 flaky tests”总结成了一个可直接落地的工作流,而不是泛泛而谈测试质量。对于有 CI/CD、合并队列或大规模测试体系的团队,这个习惯具有很强的迁移价值,能持续降低无效重跑和排障成本。

技术文章matklad

256 Lines or Less: Test Case Minimization

这篇文章用 Zig 实现了一个仅约 256 行的极简属性测试与模糊测试库,核心抽象不是常规 PRNG,而是“有限随机数生成器”FRNG:它预先接收一段固定熵字节流,并在熵耗尽时返回 OutOfEntropy。作者先在此基础上封装了 bytes、array、int、boolean、int_inclusive、range_inclusive、index 等生成器,再用 weighted 和 swarm_weights 组合出随机动作调度器,用于驱动一个模拟世界持续随机执行请求、消息和崩溃等操作。文章的关键观点是:测试复杂度可以由“消耗了多少随机熵”来度量,因此可以对已知失败样本按熵长度做二分搜索式缩小,找到更短、仍能触发失败的最小输入。为了处理断言崩溃无法在进程内捕获的问题,作者把被测程序作为独立进程,从 stdin 读取熵并以退出码判定成败,再用外部 driver 通过 seed+size 复现实验并搜索最小失败样本。文章强调这种方法不依赖对被测系统注入额外搜索知识,迁移性强,但也依赖测试能够稳定地以“随机输入 + 失败/成功”二值反馈来定义问题边界。

文章直接给出了可运行的 Zig 实现,展示了如何把属性测试、模糊测试和最小化失败样本统一到“有限熵”模型中,而不是停留在概念介绍。适合需要做 fuzzing、回归最小化、可复现实验或语言运行时/测试工具设计的读者参考,迁移价值在于方法本身与具体系统弱耦合。

技术文章Max Bernstein

A fuzzer for the Toy Optimizer

文章延续 Toy Optimizer 系列,讲作者如何为一个玩具编译器优化器构建模糊测试器,目标不是找崩溃,而是检出优化引入的语义错误。作者随机生成由 load、store 和 escape 组成的小程序,再用解释器在“无别名”和“完全别名”两种参数环境下执行,比较优化前后 heap 与逃逸结果是否一致。文中展示了这种不变量如何迅速暴露故意注入的错误:一旦去掉别名写回的关键逻辑,测试会几乎立刻失败并给出具体差异。作者也说明了局限性,例如只覆盖两种极端别名情况,且该等价定义不适用于会删除分配的优化。整体上,这是一个关于编译器优化测试、属性测试和语义 oracle 设计的实用案例。

推荐收录,因为文章给出了可复用的编译器优化 fuzzing 方案:随机程序生成、语义解释器和基于别名场景的正确性判定,而且能用最小反例迅速暴露优化错误。适合编译器、语言实现和测试工程读者参考;但要注意它的 oracle 依赖当前优化模型,不能直接套到会改变分配语义的场景。

工程实践Lyft Engineering

Scaling Localization with AI at Lyft

文章介绍 Lyft 如何把原本完全依赖人工翻译的本地化流程,重构为“LLM 生成 + 评审 + 人工终审”的双路径流水线,以支撑新市场快速上线和魁北克法语合规需求。系统先由 Drafter 基于术语表、上下文和占位符生成多个候选,再由 Evaluator 按准确性、流畅度、品牌一致性和技术正确性打分,失败时最多重试三轮。为避免变量、URL、HTML 等被模型破坏,他们在翻译前后加入 token 化与确定性校验,并把 prompt 当作版本控制的生产代码,配合回归测试、灰度和回滚。文中还展示了按 locale 做细粒度约束,避免英式英语等近似语种被过度改写;最终约 95% 译文无需 linguist 大改,但法律、品牌和低资源语言场景仍需人工把关。

收录,因为文章给出了真实生产场景下的本地化 AI 架构:双模型分工、占位符守护、术语注入、版本化 prompt 与灰度回滚,证据具体且可迁移。适合做 AI 工程化、多语言内容平台和提示词治理的参考,但低资源语言与强合规文本仍需人工介入。

工程实践Blender Developers Blog

Winter of Quality 2026

这篇文章回顾了 Blender 在 2025—2026 冬季进行的“质量季”工作,重点不是新功能,而是围绕稳定性、缺陷修复、测试补强和技术债清理展开。两个月内修复了 350+ 个用户报告的问题,并按动画、建模、节点、渲染、界面、视口等模块给出分布,说明质量投入是按子系统推进的。正文还列出多项结构性工作,例如将代码从旧式 C 接口迁移到更现代的 C++ 风格、补充自动化测试、优化性能、完善文档,以及完成 Mesh 属性存储格式切换等。文章也展示了缺陷分流和 triage 的进展,未分配问题显著下降,说明质量治理不仅是修 bug,也包括流程改进。其边界在于这是项目回顾而非深入技术复盘,很多条目只给出结果和方向,缺少实现细节与量化对比,但仍适合作为开源大型工程做稳定性治理的参考案例。

推荐收录,因为它明确给出了 350+ 缺陷修复、自动化测试补强、代码现代化和 triage 流程改进等直接证据,体现了大型开源项目如何系统性提升质量。适合做开源维护、稳定性治理和技术债清理的参考,但读者需注意它偏项目总结,细节深度有限。

工程实践Anthropic Engineering

Building a C compiler with a team of parallel Claudes

文章复盘了 Anthropic 研究员用 16 个并行 Claude 实例,从零实现一个 Rust 版 C 编译器的过程。核心不是“让模型写代码”本身,而是设计一个能长期自治的 harness:用无限循环驱动任务推进、通过 git 文件锁避免重复劳动,并让不同代理分工处理测试、文档、性能和代码去重。作者强调,真正决定成败的是高质量测试、可自动判错的日志、以及把问题拆成可并行的小任务;当 Linux 内核编译这种“单大任务”卡住时,又引入 GCC 作为在线 oracle 和抽样测试来恢复并行性。最终产物可编译 Linux 6.9 及多个大型项目,但仍存在 16 位 x86、汇编器/链接器、代码质量和性能不足等边界,说明当前自治编程仍远未“全能”。

有直接工程证据:并行代理、任务锁、测试 harness、GCC oracle 和 CI 共同构成了可复用的方法论。适合做 AI 编程代理、自动化测试与编译器工程的参考,但也明确暴露了自治开发在正确性、效率和边界处理上的风险。

工程实践Anthropic Engineering

Effective harnesses for long-running agents

这篇文章讨论了长运行 AI agent 在跨多个上下文窗口执行任务时的核心失败模式:容易一次做太多、在中途断档后无法恢复上下文,以及过早判定任务完成。作者基于 Claude Agent SDK 的实验提出一套两阶段 harness:首次会话用 initializer agent 搭建环境,生成 init.sh、claude-progress.txt、初始 git 提交和完整 feature list;后续 coding agent 只按单个功能逐步推进,并在每轮结束时写进度、提交代码、保持工作区干净。文章还强调必须把端到端测试显式写入流程,借助浏览器自动化工具验证真实用户路径,而不仅是单元测试或 curl。最后作者指出该方案对全栈 Web 开发效果明显,但仍受浏览器可见性、弹窗等工具限制,且多 agent 架构是否更优仍是开放问题。

文章直接给出了长运行 agent 的可复用工程方案:初始化阶段、功能清单、进度文件、git 约束和端到端测试,证据具体且可落地。适合做 AI 编程代理、自动化开发流程和 agent harness 设计的参考;但其最佳实践主要来自全栈 Web 场景,迁移到其他任务时仍需重新验证。

工程实践Yelp Engineering

Revenue Automation Series: Testing an Integration with Third-Party System

文章来自 Yelp 的 Revenue Automation 系列,聚焦在收入数据管道与第三方系统集成时的测试和验证方案。作者先说明现状:原本依赖 Redshift Connector 在报表发布后再同步到数仓,导致验证数据要延迟约 10 小时才能可见,严重影响迭代效率。基于这一约束,文章讨论了如何设计更稳健的生产测试与集成策略,以便在复杂转换逻辑下尽早发现问题。它的核心价值不在于单点工具,而在于围绕批处理数仓、外部系统联调和回归验证建立更短反馈闭环。该经验对类似的数据工程、财务/收入类流水线和第三方集成场景具有较强迁移性,但对实时系统或纯应用单测场景的直接参考有限。

文中直接给出旧方案通过 Redshift 同步带来约 10 小时验证延迟,这是重新设计测试链路的明确工程证据。适合做数据管道、数仓联调和生产验证的团队阅读,可借鉴其将反馈时延作为核心约束来优化测试策略的思路。

工程实践Datadog Engineering

How we built a Ruby library that saves 50% in testing time

文章介绍 Datadog 用 Ruby 实现测试影响分析库的过程,目标是在代码改动后只运行真正受影响的测试,从而缩短 CI 时间。作者先梳理 Ruby VM 中方法调用、对象分配和加载行为,借助 tracing 记录代码间依赖,再把生产代码与测试用例建立映射。文章详细讨论了 Ruby 动态特性、monkey patch、反射和框架层封装带来的分析误差,以及如何通过过滤规则和采样降低开销。最终该方案在内部场景把测试耗时减少约 50%,但对强动态、依赖隐式副作用的项目效果会下降。全文属于真实工程经验,适合需要优化 CI、构建测试选择或理解 Ruby 运行时可观测性的读者。

收录,因为文章直接给出了“受影响测试选择”这一工程问题的实现路径,且用 Ruby VM tracing、依赖映射和约 50% 的测试时间下降作为明确证据。适合做 CI 优化、测试基础设施或运行时可观测性的读者;同时也提醒动态特性强的代码库会带来准确率风险。

工程实践PlanetScale Blog

Summer 2023: Fuzzing Vitess at PlanetScale

文章记录作者在 PlanetScale 实习期间,为 Vitess 查询规划器设计随机 SQL fuzzing 的过程。团队先评估了 SQLancer,但由于 Vitess 需要尽量模拟 MySQL 且受 VSchema、分片键等约束,直接接入成本过高,最终转向自建生成器。生成器会从给定表集合中随机抽取表、列和表达式,覆盖 SELECT、WHERE、GROUP BY、ORDER BY、LIMIT 及派生表等场景,并把 Vitess 与 MySQL 的结果和错误逐条比对。作者还改造了查询简化器,使其能处理端到端测试所需的 VSchema 信息,并扩展表达式生成以支持列引用和受语义限制的聚合表达式。文章最后指出当前样例表和分片方案仍较固定,且部分已知失败查询依赖过滤开关,后续可通过随机化 schema/VSchema 和清理代码继续提升覆盖率。

收录理由明确:文章给出了在数据库查询规划器上做 fuzzing 的具体实现、与 SQLancer 的取舍、以及查询简化器和表达式生成器的改造细节。适合做数据库测试、查询优化器或模糊测试实践参考;其局限也清楚,当前覆盖仍受固定 schema 和分片模型限制。