<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>第四章 迭代与测试 on Sanbei的博客</title><link>https://blog.sanbei101.cn/ai-book/04-iter-and-test/</link><description>Recent content in 第四章 迭代与测试 on Sanbei的博客</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sat, 26 Sep 2026 15:29:13 +0800</lastBuildDate><atom:link href="https://blog.sanbei101.cn/ai-book/04-iter-and-test/index.xml" rel="self" type="application/rss+xml"/><item><title>一份契约,两端编译:OpenAPI + Orval</title><link>https://blog.sanbei101.cn/ai-book/04-iter-and-test/01-orval/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/04-iter-and-test/01-orval/</guid><description>&lt;p&gt;在前后端协同开发中,接口定义的高频变动通常是效率瓶颈:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;业务管理后台中,每个数据实体均涉及标准 CRUD 接口的定义与前端调用层封装;&lt;/li&gt;&#10;&lt;li&gt;表单模型调整字段名称或增删属性,前端需同步更新对应的数据模型与请求方法。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;在缺乏确定性契约的场景下,依赖人工同步或通过自然语言让模型阅读 Git Diff 修改代码,容易消耗额外上下文,且极易出现类型遗漏或字段漂移。&lt;/p&gt;</description></item><item><title>不猜瓶颈:基于 PProf 的定向性能迭代</title><link>https://blog.sanbei101.cn/ai-book/04-iter-and-test/02-pprof/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/04-iter-and-test/02-pprof/</guid><description>&lt;p&gt;在人机协同开发中,许多人习惯把成百上千行的业务代码直接抛给模型,提出类似&amp;quot;帮我看看这段代码性能有没有问题&amp;quot;、&amp;ldquo;优化系统性能&amp;quot;的请求。&lt;/p&gt;</description></item><item><title>真实测试:别让错误越走越远</title><link>https://blog.sanbei101.cn/ai-book/04-iter-and-test/03-test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/04-iter-and-test/03-test/</guid><description>&lt;p&gt;在人机协同开发中,最需要警惕的汇报之一是:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;&amp;ldquo;代码已完成,测试已通过。&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;审查测试代码时,常会发现明显的工程隐患:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;当 &lt;code&gt;Service&lt;/code&gt; 依赖数据库时,模型生成了一个返回 &lt;code&gt;nil&lt;/code&gt; 的 &lt;code&gt;FakeRepository&lt;/code&gt;,使每个调用都直接跳过底层读写;&lt;/li&gt;&#10;&lt;li&gt;测试仅断言无错误返回,未验证数据是否真实持久化或事务是否正确回滚;&lt;/li&gt;&#10;&lt;li&gt;并发逻辑中硬编码 &lt;code&gt;time.Sleep(100 * time.Millisecond)&lt;/code&gt;,在本地容易通过,而在持续集成流水线中因调度延迟产生随机 Flaky 报错。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这类测试的风险在于提供虚假的通过信号:模型基于自创的 Mock 验证了自身生成的逻辑,而真实的 SQL 语法、约束与并发竞争从未被运行时检验。&lt;/p&gt;</description></item><item><title>日志:构建排错的证据链</title><link>https://blog.sanbei101.cn/ai-book/04-iter-and-test/04-log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/04-iter-and-test/04-log/</guid><description>&lt;p&gt;在工程演进中,系统上线后通常面临如下场景:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;&amp;ldquo;生产环境接口在夜间偶发 500 错误,随后自动恢复,需要定位根本原因。&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;若服务在标准输出中仅打印非结构化文本:&lt;/p&gt;</description></item></channel></rss>